0 Replies Latest reply on Oct 6, 2006 2:07 PM by estebanb

    Deploying process by file upload

    estebanb

      Hi all, I'm using jBPM 3.1.2 and springmodules 0.5 in an appfuse project.
      I was able to deploy a process included in the project at initialization without problems. Now, I'm trying to deploy a process by uploading a zip file from a web application.

      I use the following line to deploy the process:
      context.deployProcessDefinition(processDefinition)

      (below it's the complete code) and I'm getting an exception as if the configuration were lost at some point.

      I debugged the code of JBPMContext.deployProcessDefinition() and found out that the persistenceService has all fields null. So, it seems the persistence service is not created properly.

      I will apreciate if anyone understands what is happening and can help me.

      Below are the configuration and source files. Please let me know if I wasn't clear at any point.

      Thanks,
      Esteban.

      Here is the initialization log where the process included in the project is deployed (I also checked database and is deployed):

      [darwin] DEBUG [main] StartupListener.contextInitialized(45) | initializing context...
      [darwin] INFO [main] [/darwin].log(638) | Loading Spring root WebApplicationContext
      [darwin] INFO [main] DefaultValidatorFactory.setValidationConfigLocations(62) | Loading validation configurations from [ServletContext resource [/WEB-INF/validation.xml],ServletContext resource [/WEB-INF/validator-rules.xml],ServletContext resource [/WEB-INF/validator-rules-custom.xml]]
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Node]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.instantiation.Delegation]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.Task]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ProcessDefinition]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ExceptionHandler]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.module.def.ModuleDefinition]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Action]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Event]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.context.def.VariableAccess]; using defaults.
      [darwin] INFO [main] JbpmConfiguration.getInstance(277) | using jbpm configuration resource 'jbpm.cfg.xml'
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Transition]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.TaskController]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.TaskMgmtDefinition.tasks]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.node.ProcessState.variableAccesses]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ProcessDefinition.events]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.Swimlane.tasks]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Node.leavingTransitions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.TaskController.variableAccesses]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ProcessDefinition.exceptionHandlers]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.node.Decision.decisionConditions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.file.def.FileDefinition.processFiles]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ProcessDefinition.actions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Transition.exceptionHandlers]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ProcessDefinition.nodes]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Node.arrivingTransitions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.node.TaskNode.tasks]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ProcessDefinition.definitions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Event.actions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.Task.events]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Node.events]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.TaskMgmtDefinition.swimlanes]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.SuperState.nodes]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.action.Script.variableAccesses]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.ExceptionHandler.actions]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.taskmgmt.def.Task.exceptionHandlers]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Node.exceptionHandlers]; using defaults.
      [darwin] WARN [main] EhCacheProvider.buildCache(103) | Could not find configuration [org.jbpm.graph.def.Transition.events]; using defaults.
      [darwin] INFO [main] LocalJbpmConfigurationFactoryBean.afterPropertiesSet(105) | creating JbpmConfiguration from resource ServletContext resource [/WEB-INF/jbpm/jbpm.cfg.xml]
      [darwin] INFO [main] LocalJbpmConfigurationFactoryBean.afterPropertiesSet(117) | using given Hibernate session factory
      [darwin] INFO [main] LocalJbpmConfigurationFactoryBean.afterPropertiesSet(136) | deploying process definitions:[ProcessDefinition(testprocess.xml)]


      My jbpm.cfg.xml:
      <jbpm-configuration>
      
       <!--
       This configuration is used when there is no jbpm.cfg.xml file found in the
       root of the classpath. It is a very basic configuration without persistence
       and message services. Only the authorization service installed.
       You can parse and create processes, but when you try to use one of the
       unavailable services, you'll get an exception.
       -->
      
       <jbpm-context>
       <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />
       <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
       <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
       <service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
       <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
       </jbpm-context>
      
       <!-- configuration resource files pointing to default configuration files in jbpm-{version}.jar -->
       <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties" />
       <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties" />
       <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties" />
       <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml" />
       <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml" />
       <string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml" />
       <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml" />
      
       <long name="jbpm.msg.wait.timout" value="5000" singleton="true" />
       <int name="jbpm.byte.block.size" value="1024" singleton="true" />
       <string name="mail.smtp.host" value="localhost" />
       <bean name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl" singleton="true" />
       <bean name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true" />
       <bean name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true" />
      
      </jbpm-configuration>


      My definitions in aplicationContext-hibernate.xml:
      <!-- JBPM Datasource -->
       <bean id="jbpmDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
       <property name="url"><value>jdbc:mysql://localhost:3306/jbpm_research</value></property>
       <property name="username"><value>root</value></property>
       <property name="password"><value>admin</value></property>
       </bean>
      
       <!-- JBPM Hibernate SessionFactory -->
       <bean id="jbpmSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="dataSource" ref="jbpmDataSource"/>
       <property name="mappingLocations">
       <value>classpath*:/org/jbpm/**/*.hbm.xml</value>
       </property>
       <property name="hibernateProperties">
       <props>
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
       <!-- Create/update the database tables automatically when the JVM starts up
       <prop key="hibernate.hbm2ddl.auto">update</prop> -->
       <!-- Turn batching off for better error messages under PostgreSQL
       <prop key="hibernate.jdbc.batch_size">0</prop> -->
       </props>
       </property>
       </bean>
      
       <!-- jBPM Configuration -->
       <bean id="jbpmConfig" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
       <!-- pass in existing sessionFactory -->
       <property name="sessionFactory" ref="jbpmSessionFactory"/>
       <property name="configuration" value="WEB-INF/jbpm/jbpm.cfg.xml"/>
       <property name="processDefinitions">
       <list>
       <ref local="testProcess"/>
       </list>
       </property>
       <property name="createSchema" value="false"/>
       </bean>
      
       <bean id="testProcess" class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
       <property name="definitionLocation" value="WEB-INF/jbpm/processes/testprocess.xml"/>
       </bean>
      
       <!-- Hibernate SessionFactory -->
       <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="dataSource" ref="dataSource"/>
       <property name="mappingResources">
       <list>
       <value>com/santex/model/Role.hbm.xml</value>
       <value>com/santex/model/User.hbm.xml</value>
       </list>
       </property>
       <property name="hibernateProperties">
       <props>
       <prop key="hibernate.dialect">@HIBERNATE-DIALECT@</prop>
       <prop key="hibernate.query.substitutions">true 1, false 0</prop>
       <!-- Create/update the database tables automatically when the JVM starts up
       <prop key="hibernate.hbm2ddl.auto">update</prop> -->
       <!-- Turn batching off for better error messages under PostgreSQL
       <prop key="hibernate.jdbc.batch_size">0</prop> -->
       </props>
       </property>
       </bean>


      The code I use to deploy the process:
      private void doDeployment(CommonsMultipartFile file) {
      
       ZipInputStream zipInputStream = null;
       ProcessDefinition processDefinition = null;
       JbpmContext context = null;
      
       try {
      
       // This works fine and I get the processDefinition
       zipInputStream = new ZipInputStream(file.getInputStream());
       processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
      
       // Explicitly retrieves the configuration
       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("WEB-INF/jbpm/jbpm.cfg.xml");
      
       // Creates context
       context = jbpmConfiguration.createJbpmContext();
      
       // Tries to deploy the process - Here is the problem
       context.deployProcessDefinition(processDefinition);
      
       } catch(IOException e) {
       e.printStackTrace();
       }
       finally {
       context.close();
       try {
       zipInputStream.close();
       } catch (IOException e) {
       e.printStackTrace();
       }
       }
       }


      And finally here is the exception I get when context.deployProcessDefinition(processDefinition); is executed, where 'El nombre DefaultDS no este asociado a este contexto' is spanish for 'DefaultDS name is not associated with this context'.
      [darwin] WARN [http-8080-Processor25] LoggerListener.onApplicationEvent(55) | Authentication event AuthenticationSuccessEvent: tomcat; details: org.acegisecurity.ui.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: null
      [darwin] WARN [http-8080-Processor25] LoggerListener.onApplicationEvent(55) | Authentication event InteractiveAuthenticationSuccessEvent: tomcat; details: org.acegisecurity.ui.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: null
      [darwin] DEBUG [http-8080-Processor25] UploadJBPMProcessController.showNewForm(321) | Displaying new form
      [darwin] DEBUG [http-8080-Processor25] UploadJBPMProcessController.createCommand(340) | Creating new command of class [com.santex.webapp.action.FileUpload]
      [darwin] DEBUG [http-8080-Processor25] UploadJBPMProcessController.createCommand(340) | Creating new command of class [com.santex.webapp.action.FileUpload]
      [darwin] DEBUG [http-8080-Processor25] UploadJBPMProcessController.processFormSubmission(257) | No errors -> processing submit
      [darwin] INFO [http-8080-Processor25] JbpmConfiguration.getInstance(277) | using jbpm configuration resource 'WEB-INF/jbpm/jbpm.cfg.xml'
      [darwin] FATAL [http-8080-Processor25] DatasourceConnectionProvider.configure(55) | Could not find datasource: java:/DefaultDS
      javax.naming.NameNotFoundException: El nombre DefaultDS no este asociado a este contexto(translated above this box)
       at org.apache.naming.NamingContext.lookup(NamingContext.java:769)
       at org.apache.naming.NamingContext.lookup(NamingContext.java:152)
       at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136)
       at javax.naming.InitialContext.lookup(Unknown Source)
       at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
       at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
       at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
       at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
       at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
       at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1881)
       at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1174)
       at org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:90)
       at org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:74)
       at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:78)
       at org.jbpm.persistence.db.DbPersistenceService.getGraphSession(DbPersistenceService.java:217)
       at org.jbpm.JbpmContext.getGraphSession(JbpmContext.java:537)
       at org.jbpm.JbpmContext.deployProcessDefinition(JbpmContext.java:173)
       at com.santex.webapp.action.UploadJBPMProcessController.doDeployment(UploadJBPMProcessController.java:148)
       at com.santex.webapp.action.UploadJBPMProcessController.onSubmit(UploadJBPMProcessController.java:124)
       at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:258)
       at com.santex.webapp.action.BaseFormController.processFormSubmission(BaseFormController.java:138)
       at com.santex.webapp.action.UploadJBPMProcessController.processFormSubmission(UploadJBPMProcessController.java:49)
       at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:249)
       at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
       at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
       at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
       at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
       at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
       at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
       at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:375)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at com.santex.webapp.filter.GZIPFilter.doFilterInternal(GZIPFilter.java:42)
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at com.santex.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:55)
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
       at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
       at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:191)
       at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
       at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
       at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
       at java.lang.Thread.run(Unknown Source)