The idea of the tests is to ensure that our implementation is thread-safe. Each
thread in the test creates its own Drools session and executes its own workflow
(which contains actions and work items that involve user interaction that is
simulated by the unit test).
This scenario tests the real-world case of our server handling sessions from
multiple users. There should NOT be cross-talk between these sessions. Without
persistence, everything works as expected. With persistence enabled, two
sessions running in parallel are enough to fail 100% of the time.
Each thread creates a session like this:
session =
JPAKnowledgeService.newStatefulKnowledgeSession(getKnowledgeBase(), null,
getEnvironment());
The calls to getEnvironment() return the same value each time it is called
called. Is this right?
The environment is created like this:
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("org.drools.persistence.jpa");
environment = KnowledgeBaseFactory.newEnvironment();
environment.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
Any idea where I messed up?
Thanks,
Rob
On Jun 15, 2010, at 5:58 PM, Mauricio Salatino wrote:
What kind of thread safe tests are you doing?
if multiple threads modify the status of the process, only one of them will
commit the new status, and the other ones will rollback the transaction because
of a bad state.
Is that what you are looking for?
On Tue, Jun 15, 2010 at 3:33 PM, Rob Collins
<[email protected]<mailto:[email protected]>>
wrote:
We are using version 5.1.0.M1. We have long-running processes (flows). They are
long-running because we have work item nodes that involve the user of our
application to do something. We are in the development cycle of our product and
everything is going well. I am trying to configure persistence and running into
some issues.
I am to the point where our basic unit tests appear to be running fine with
persistence enabled both in the container (tomcat6) and in our unit testing
environment (ServletUnit).
We have unit tests that run the same test in multiple threads in parallel (the
idea is to try to expose thread safety issues), and these tests always fail. At
the end of this message, I have pasted a few of the different stack traces I
have seen.
I expect that I have done something silly in the configuration, and I could use
some help in finding it. I am not sure if the problem is my configuration of
JPA, Hibernate, the DataSource, or if it is an interaction between what Drools
is expecting and the details of my configuration.
Thanks,
Rob Collins
>From my spring configuration:
<!-- Spring JtaTransactionManager -->
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager"
depends-on="bitronixTransactionManager">
<property name="transactionManager" ref="bitronixTransactionManager" />
<property name="userTransaction" ref="bitronixTransactionManager" />
</bean>
<!-- Bitronix Transaction Manager embedded configuration -->
<bean id="btmConfig" class="bitronix.tm.TransactionManagerServices"
factory-method="getConfiguration">
<property name="serverId" value="spring-btm" />
</bean>
<!-- create Bitronix Transaction Manager transaction manager -->
<bean id="bitronixTransactionManager"
class="bitronix.tm.TransactionManagerServices"
factory-method="getTransactionManager" depends-on="btmConfig"
destroy-method="shutdown" />
<bean id="sessionDataSource"
class="bitronix.tm.resource.jdbc.PoolingDataSource" init-method="init"
destroy-method="close">
<property name="className"
value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="uniqueName" value="jdbc/processInstanceDS" />
<property name="maxPoolSize" value="8" />
<property name="allowLocalTransactions" value="true" />
<property name="driverProperties">
<props>
<prop key="URL">${db.session.connection.url}</prop>
<prop key="user">${db.session.username}</prop>
<prop key="password">${db.session.password}</prop>
</props>
</property>
</bean>
My persistence.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence version="1.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="org.drools.persistence.jpa">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/processInstanceDS</jta-data-source>
<class>org.drools.persistence.session.SessionInfo</class>
<class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.processinstance.ProcessInstanceEventInfo</class>
<class>org.drools.persistence.processinstance.WorkItemInfo</class>
<class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>
<class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
<properties>
<property name="hibernate.max_fetch_depth" value="3" />
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.BTMTransactionManagerLookup" />
<property name="hibernate.jndi.class"
value="bitronix.tm.jndi.BitronixInitialContextFactory" />
</properties>
</persistence-unit>
</persistence>
java.lang.NullPointerException
at
org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:33)
at
org.drools.process.instance.AbstractProcessInstanceFactory.createProcessInstance(AbstractProcessInstanceFactory.java:37)
at
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1706)
at
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1682)
at
org.drools.workflow.instance.node.SubProcessNodeInstance.internalTrigger(SubProcessNodeInstance.java:115)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:135)
at
org.drools.workflow.instance.node.JoinInstance.triggerCompleted(JoinInstance.java:152)
at
org.drools.workflow.instance.node.JoinInstance.internalTrigger(JoinInstance.java:52)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:74)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:135)
at
org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at
org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:16)
at
org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:185)
at
org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:230)
at
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1689)
at
org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:289)
at
org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:52)
at
org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:14)
at
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:254)
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at
com.patientsafesolutions.application.controllers.DroolsWorkflowController.startWorkflowProcess(DroolsWorkflowController.java:310)
at
com.patientsafesolutions.application.controllers.DroolsWorkflowController.drools(DroolsWorkflowController.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
com.meterware.servletunit.InvocationContextImpl.service(InvocationContextImpl.java:76)
at
com.meterware.servletunit.ServletUnitClient.newResponse(ServletUnitClient.java:126)
at com.meterware.httpunit.WebClient.createResponse(WebClient.java:667)
at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:220)
at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:181)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:158)
at com.meterware.httpunit.WebClient.getResponse(WebClient.java:122)
at com.patientsafesolutions.test.http.Request.submit(Request.java:115)
at com.patientsafesolutions.test.http.Request.post(Request.java:20)
at
com.patientsafesolutions.api.httptest.LogicalViewHttpTest.navigateToHome(LogicalViewHttpTest.java:57)
at
com.patientsafesolutions.api.httptest.LogicalViewHttpTest.navigateToPatient(LogicalViewHttpTest.java:100)
at
com.patientsafesolutions.api.httptest.HomeTests.homeLogicalView(HomeTests.java:14)
at com.patientsafesolutions.api.httptest.HomeTests$1.run(HomeTests.java:23)
at
com.patientsafesolutions.test.http.HttpTest$ThreadWithThrowable$1.run(HttpTest.java:241)
at java.lang.Thread.run(Thread.java:637)
org.hibernate.exception.GenericJDBCException: Cannot release connection
at
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at
org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:455)
at
org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:406)
at
org.hibernate.jdbc.ConnectionManager.afterTransaction(ConnectionManager.java:298)
at
org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:225)
at
org.hibernate.transaction.CacheSynchronization.afterCompletion(CacheSynchronization.java:85)
at
bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:416)
at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:195)
at
bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:95)
at
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:258)
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at
com.patientsafesolutions.application.controllers.DroolsWorkflowController.startWorkflowProcess(DroolsWorkflowController.java:310)
at
com.patientsafesolutions.application.controllers.DroolsWorkflowController.drools(DroolsWorkflowController.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
com.meterware.servletunit.InvocationContextImpl.service(InvocationContextImpl.java:76)
at
com.meterware.servletunit.ServletUnitClient.newResponse(ServletUnitClient.java:126)
at com.meterware.httpunit.WebClient.createResponse(WebClient.java:667)
at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:220)
at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:181)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:158)
at com.meterware.httpunit.WebClient.getResponse(WebClient.java:122)
at com.patientsafesolutions.test.http.Request.submit(Request.java:115)
at com.patientsafesolutions.test.http.Request.post(Request.java:20)
at
com.patientsafesolutions.api.httptest.LogicalViewHttpTest.navigateToHome(LogicalViewHttpTest.java:57)
at
com.patientsafesolutions.api.httptest.LogicalViewHttpTest.navigateToPatient(LogicalViewHttpTest.java:100)
at
com.patientsafesolutions.api.httptest.HomeTests.homeLogicalView(HomeTests.java:14)
at com.patientsafesolutions.api.httptest.HomeTests$1.run(HomeTests.java:23)
at
com.patientsafesolutions.test.http.HttpTest$ThreadWithThrowable$1.run(HttpTest.java:241)
at java.lang.Thread.run(Thread.java:637)
Caused by: java.sql.SQLException: error requeueing a JdbcPooledConnection from
datasource jdbc/processInstanceDS in state ACCESSIBLE wrapping
com.mysql.jdbc.jdbc2.optional.mysqlxaconnect...@4128dca6
at
bitronix.tm.resource.jdbc.JdbcPooledConnection.release(JdbcPooledConnection.java:148)
at
bitronix.tm.resource.jdbc.JdbcConnectionHandle.close(JdbcConnectionHandle.java:77)
at
org.hibernate.connection.DatasourceConnectionProvider.closeConnection(DatasourceConnectionProvider.java:74)
at
org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:451)
... 40 more
Caused by: bitronix.tm.internal.BitronixSystemException: cannot close a
resource when its XAResource is taking part in an unfinished global transaction
at
bitronix.tm.resource.common.TransactionContextHelper.requeue(TransactionContextHelper.java:117)
at
bitronix.tm.resource.jdbc.JdbcPooledConnection.release(JdbcPooledConnection.java:146)
... 43 more
java.lang.IllegalArgumentException: Unknown node instance type:
org.drools.workflow.instance.node.actionnodeinsta...@2b7194a4
at
org.drools.marshalling.impl.AbstractProcessInstanceMarshaller.writeNodeInstanceContent(AbstractProcessInstanceMarshaller.java:243)
at
org.drools.marshalling.impl.AbstractProcessInstanceMarshaller.writeNodeInstance(AbstractProcessInstanceMarshaller.java:117)
at
org.drools.marshalling.impl.AbstractProcessInstanceMarshaller.writeProcessInstance(AbstractProcessInstanceMarshaller.java:106)
at
org.drools.persistence.processinstance.ProcessInstanceInfo.update(ProcessInstanceInfo.java:237)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.ejb.event.BeanCallback.invoke(BeanCallback.java:23)
at
org.hibernate.ejb.event.EntityCallbackHandler.callback(EntityCallbackHandler.java:80)
at
org.hibernate.ejb.event.EntityCallbackHandler.preUpdate(EntityCallbackHandler.java:65)
at
org.hibernate.ejb.event.EJB3FlushEntityEventListener.invokeInterceptor(EJB3FlushEntityEventListener.java:41)
at
org.hibernate.event.def.DefaultFlushEntityEventListener.handleInterception(DefaultFlushEntityEventListener.java:308)
at
org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:248)
at
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:128)
at
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
at
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at
org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
at
org.drools.persistence.processinstance.JPASignalManager.getProcessInstancesForEvent(JPASignalManager.java:53)
at
org.drools.persistence.processinstance.JPASignalManager.signalEvent(JPASignalManager.java:29)
at
org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:191)
at
org.drools.workflow.instance.node.EndNodeInstance.internalTrigger(EndNodeInstance.java:56)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:74)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:135)
at
org.drools.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:62)
at
org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:58)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:74)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:112)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:148)
at
org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:135)
at
org.drools.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:37)
at
org.drools.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:101)
at
org.drools.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:82)
at
org.drools.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:192)
at
org.drools.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:246)
at
org.drools.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:222)
at
org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:258)
at
org.drools.persistence.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:96)
at
org.drools.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:46)
at
org.drools.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:12)
at
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:254)
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession$1.completeWorkItem(CommandBasedStatefulKnowledgeSession.java:118)
at
com.patientsafesolutions.application.controllers.DroolsWorkflowController.drools(DroolsWorkflowController.java:113)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
com.meterware.servletunit.InvocationContextImpl.service(InvocationContextImpl.java:76)
at
com.meterware.servletunit.ServletUnitClient.newResponse(ServletUnitClient.java:126)
at com.meterware.httpunit.WebClient.createResponse(WebClient.java:667)
at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:220)
at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:181)
at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:158)
at com.meterware.httpunit.WebClient.getResponse(WebClient.java:122)
at com.patientsafesolutions.test.http.Request.submit(Request.java:115)
at com.patientsafesolutions.test.http.Request.post(Request.java:25)
at
com.patientsafesolutions.api.httptest.LogicalViewHttpTest.loginUser(LogicalViewHttpTest.java:80)
at
com.patientsafesolutions.api.httptest.LogicalViewHttpTest.navigateToPatient(LogicalViewHttpTest.java:102)
at
com.patientsafesolutions.api.httptest.HomeTests.homeLogicalView(HomeTests.java:14)
at com.patientsafesolutions.api.httptest.HomeTests$1.run(HomeTests.java:23)
at
com.patientsafesolutions.test.http.HttpTest$ThreadWithThrowable$1.run(HttpTest.java:241)
at java.lang.Thread.run(Thread.java:637)
_______________________________________________
rules-users mailing list
[email protected]<mailto:[email protected]>
https://lists.jboss.org/mailman/listinfo/rules-users
--
- CTO @ http://www.plugtree.com<http://www.plugtree.com/>
- MyJourney @ http://salaboy.wordpress.com<http://salaboy.wordpress.com/>
- Co-Founder @ http://www.jbug.com.ar<http://www.jbug.com.ar/>
- Salatino "Salaboy" Mauricio -
<ATT00001..txt>
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users