[jboss-dev-forums] [Design of JBoss jBPM] - Re: Problem with more than 1 user

roccolocko do-not-reply at jboss.com
Fri Jun 1 13:03:21 EDT 2007


Im not very familiarize with the use of filters in the web.xml, but probably it has something to do with this:

  <filter-name>JbpmContextFilter</filter-name> 
  <filter-class>org.jbpm.web.JbpmContextFilter</filter-class> 
  
<filter-mapping>
  <filter-name>JbpmContextFilter</filter-name> 
  <url-pattern>/*</url-pattern> 
  </filter-mapping>

In the class that the mention there (org.jbpm.web.JbpmContextFilter), in the doFilter method, at the end they use the jbpmContext.close();, which I believe is executing everytime a jsp is run, because of the mapping /*

the complete class is the following:

  | package org.jbpm.web;
  | 
  | import java.io.IOException;
  | import java.io.Serializable;
  | import java.security.Principal;
  | 
  | import javax.servlet.Filter;
  | import javax.servlet.FilterChain;
  | import javax.servlet.FilterConfig;
  | import javax.servlet.ServletException;
  | import javax.servlet.ServletRequest;
  | import javax.servlet.ServletResponse;
  | import javax.servlet.http.HttpServletRequest;
  | 
  | import org.jbpm.JbpmConfiguration;
  | import org.jbpm.JbpmContext;
  | 
  | public class JbpmContextFilter implements Filter, Serializable {
  | 
  |   private static final long serialVersionUID = 1L;
  | 
  |   String jbpmConfigurationResource = null;
  |   String jbpmContextName = null;
  |   boolean isAuthenticationEnabled = true;
  | 
  |   public void init(FilterConfig filterConfig) throws ServletException {
  |     // get the jbpm configuration resource
  |     this.jbpmConfigurationResource = filterConfig.getInitParameter("jbpm.configuration.resource");
  |     
  |     // get the jbpm context to be used from the jbpm configuration
  |     this.jbpmContextName = filterConfig.getInitParameter("jbpm.context.name");
  |     if (jbpmContextName==null) {
  |       jbpmContextName = JbpmContext.DEFAULT_JBPM_CONTEXT_NAME;
  |     }
  |     
  |     // see if authentication is turned off
  |     String isAuthenticationEnabledText = filterConfig.getInitParameter("authentication");
  |     if ( (isAuthenticationEnabledText!=null)
  |          && ("disabled".equalsIgnoreCase(isAuthenticationEnabledText))
  |        ) {
  |       isAuthenticationEnabled = false;
  |     }
  |   }
  | 
  |   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  |     String actorId = null;
  | 
  |     // see if we can get the authenticated swimlaneActorId
  |     if (servletRequest instanceof HttpServletRequest) {
  |       HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
  |       Principal userPrincipal = httpServletRequest.getUserPrincipal();
  |       if (userPrincipal != null) {
  |         actorId = userPrincipal.getName();
  |       }
  |     }
  | 
  |     JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext(jbpmContextName);
  |     try {
  |       if (isAuthenticationEnabled) {
  |         jbpmContext.setActorId(actorId);
  |       }
  |       filterChain.doFilter(servletRequest, servletResponse);
  |     } finally {
  |       jbpmContext.close();
  |     }
  |   }
  | 
  |   protected JbpmConfiguration getJbpmConfiguration() {
  |     return JbpmConfiguration.getInstance(jbpmConfigurationResource);
  |   }
  | 
  |   public void destroy() {
  |   }
  | }
  | 

Could I be right?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050557#4050557

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050557



More information about the jboss-dev-forums mailing list