Hi Sathwik,
I don't have ode-axis2.properties file in my web-inf folder. I have axis2.xml
file instead.
The two axis2.xml files content is like below, which only change their ports
from "8080" to "8180":
<axisconfig name="AxisJava2.0">
<parameter name="hotdeployment" locked="false">true</parameter>
<parameter name="hotupdate" locked="false">false</parameter>
<parameter name="enableMTOM" locked="false">false</parameter>
<parameter name="enableSwA" locked="false">false</parameter>
<parameter name="attachmentDIR" locked="false"></parameter>
<parameter name="sizeThreshold" locked="false">4000</parameter-->
<parameter name="ConfigContextTimeoutInterval" locked="false">30</parameter>
<parameter name="sendStacktraceDetailsWithFaults"
locked="false">true</parameter>
<parameter name="DrillDownToRootCauseForFaultReason"
locked="false">true</parameter>
<parameter name="userName" locked="false">admin</parameter>
<parameter name="password" locked="false">axis2</parameter>
<parameter name="servicePath" locked="false">processes</parameter>
<parameter name="manageTransportSession" locked="false">false</parameter>
<parameter name="enableRESTInAxis2MainServlet"
locked="true">true</parameter>
<parameter name="disableREST" locked="true">false</parameter>
<parameter name="disableSeparateEndpointForREST"
locked="true">true</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</messageReceivers>
<transportReceiver name="http"
class="org.apache.axis2.transport.http.SimpleHTTPServer">
<parameter name="port" locked="false">8080</parameter>
</transportReceiver>
<transportReceiver name="jms"
class="org.apache.axis2.transport.jms.JMSListener">
<parameter name="myTopicConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial"
locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url"
locked="false">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName"
locked="false">TopicConnectionFactory</parameter>
</parameter>
<parameter name="myQueueConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial"
locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url"
locked="false">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName"
locked="false">QueueConnectionFactory</parameter>
</parameter>
<parameter name="default" locked="false">
<parameter name="java.naming.factory.initial"
locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url"
locked="false">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName"
locked="false">QueueConnectionFactory</parameter>
</parameter>
</transportReceiver>-->
<transportSender name="tcp"
class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
<transportSender name="local"
class="org.apache.axis2.transport.local.LocalTransportSender"/>
<transportSender name="http"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding" locked="false">chunked</parameter>
</transportSender>
<transportSender name="https"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding" locked="false">chunked</parameter>
</transportSender>
<transportSender name="jms"
class="org.apache.axis2.transport.jms.JMSSender"/>
-->
<transportSender name="mailto"
class="org.apache.axis2.transport.mail.MailTransportSender">
<parameter name="transport.mail.smtp.host"
locked="false">127.0.0.1</parameter>
<parameter name="transport.mail.smtp.user"
locked="false">axis2</parameter>
<parameter name="transport.mail.smtp.password"
locked="false">axis2</parameter>
<parameter name="transport.mail.smtp.port" locked="false">25</parameter>
</transportSender>
-->
<phaseOrder type="InFlow">
<!-- System pre defined phases -->
<phase name="Transport">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
<handler name="ODEAxisServiceDispatcher"
class="org.apache.ode.axis2.hooks.ODEAxisServiceDispatcher"/>
</phase>
<phase name="Security"/>
<phase name="Addressing">
<handler name="ODEAxisOperationDispatcher"
class="org.apache.ode.axis2.hooks.ODEAxisOperationDispatcher"/>
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
<order phase="Addressing"/>
</handler>
</phase>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
<handler name="RequestURIOperationDispatcher"
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
<handler name="HTTPLocationBasedDispatcher"
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
</phase>
<phase name="ProcessHeader">
<handler name="SessionInHandler"
class="org.apache.ode.axis2.hooks.SessionInHandler">
<order phase="PostDispatch"/>
</handler>
</phase>
<phase name="OperationInPhase"/>
<phase name="soapmonitorPhase"/>
</phaseOrder>
<phaseOrder type="OutFlow">
<!-- user can add his own phases to this area -->
<phase name="ProcessHeader">
<handler name="SessionOutHandler"
class="org.apache.ode.axis2.hooks.SessionOutHandler">
<order phase="PreDispatch"/>
</handler>
</phase>
<phase name="soapmonitorPhase"/>
<phase name="OperationOutPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
</phaseOrder>
<phaseOrder type="InFaultFlow">
<phase name="Security"/>
<phase name="Addressing">
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
<order phase="Addressing"/>
</handler>
</phase>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher">
<order phase="Dispatch"/>
</handler>
</phase>
<phase name="OperationInFaultPhase"/>
<phase name="soapmonitorPhase"/>
</phaseOrder>
<phaseOrder type="OutFaultFlow">
<!-- user can add his own phases to this area -->
<phase name="soapmonitorPhase"/>
<phase name="OperationOutFaultPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
</phaseOrder>
</axisconfig>
<axisconfig name="AxisJava2.0">
<parameter name="hotdeployment" locked="false">true</parameter>
<parameter name="hotupdate" locked="false">false</parameter>
<parameter name="enableMTOM" locked="false">false</parameter>
<parameter name="enableSwA" locked="false">false</parameter>
<parameter name="attachmentDIR" locked="false"></parameter>
<parameter name="sizeThreshold" locked="false">4000</parameter-->
<parameter name="ConfigContextTimeoutInterval" locked="false">30</parameter>
<parameter name="sendStacktraceDetailsWithFaults"
locked="false">true</parameter>
<parameter name="DrillDownToRootCauseForFaultReason"
locked="false">true</parameter>
<parameter name="userName" locked="false">admin</parameter>
<parameter name="password" locked="false">axis2</parameter>
<parameter name="servicePath" locked="false">processes</parameter>
<parameter name="manageTransportSession" locked="false">false</parameter>
<parameter name="enableRESTInAxis2MainServlet"
locked="true">true</parameter>
<parameter name="disableREST" locked="true">false</parameter>
<parameter name="disableSeparateEndpointForREST"
locked="true">true</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</messageReceivers>
<transportReceiver name="http"
class="org.apache.axis2.transport.http.SimpleHTTPServer">
<parameter name="port" locked="false">8180</parameter>
</transportReceiver>
<transportReceiver name="jms"
class="org.apache.axis2.transport.jms.JMSListener">
<parameter name="myTopicConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial"
locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url"
locked="false">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName"
locked="false">TopicConnectionFactory</parameter>
</parameter>
<parameter name="myQueueConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial"
locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url"
locked="false">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName"
locked="false">QueueConnectionFactory</parameter>
</parameter>
<parameter name="default" locked="false">
<parameter name="java.naming.factory.initial"
locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url"
locked="false">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName"
locked="false">QueueConnectionFactory</parameter>
</parameter>
</transportReceiver>-->
<transportSender name="tcp"
class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
<transportSender name="local"
class="org.apache.axis2.transport.local.LocalTransportSender"/>
<transportSender name="http"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding" locked="false">chunked</parameter>
</transportSender>
<transportSender name="https"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding" locked="false">chunked</parameter>
</transportSender>
<transportSender name="jms"
class="org.apache.axis2.transport.jms.JMSSender"/>
-->
<transportSender name="mailto"
class="org.apache.axis2.transport.mail.MailTransportSender">
<parameter name="transport.mail.smtp.host"
locked="false">127.0.0.1</parameter>
<parameter name="transport.mail.smtp.user"
locked="false">axis2</parameter>
<parameter name="transport.mail.smtp.password"
locked="false">axis2</parameter>
<parameter name="transport.mail.smtp.port" locked="false">25</parameter>
</transportSender>
-->
<phaseOrder type="InFlow">
<!-- System pre defined phases -->
<phase name="Transport">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
<handler name="ODEAxisServiceDispatcher"
class="org.apache.ode.axis2.hooks.ODEAxisServiceDispatcher"/>
</phase>
<phase name="Security"/>
<phase name="Addressing">
<handler name="ODEAxisOperationDispatcher"
class="org.apache.ode.axis2.hooks.ODEAxisOperationDispatcher"/>
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
<order phase="Addressing"/>
</handler>
</phase>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
<handler name="RequestURIOperationDispatcher"
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
<handler name="HTTPLocationBasedDispatcher"
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
</phase>
<phase name="ProcessHeader">
<handler name="SessionInHandler"
class="org.apache.ode.axis2.hooks.SessionInHandler">
<order phase="PostDispatch"/>
</handler>
</phase>
<phase name="OperationInPhase"/>
<phase name="soapmonitorPhase"/>
</phaseOrder>
<phaseOrder type="OutFlow">
<!-- user can add his own phases to this area -->
<phase name="ProcessHeader">
<handler name="SessionOutHandler"
class="org.apache.ode.axis2.hooks.SessionOutHandler">
<order phase="PreDispatch"/>
</handler>
</phase>
<phase name="soapmonitorPhase"/>
<phase name="OperationOutPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
</phaseOrder>
<phaseOrder type="InFaultFlow">
<phase name="Security"/>
<phase name="Addressing">
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
<order phase="Addressing"/>
</handler>
</phase>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher">
<order phase="Dispatch"/>
</handler>
</phase>
<phase name="OperationInFaultPhase"/>
<phase name="soapmonitorPhase"/>
</phaseOrder>
<phaseOrder type="OutFaultFlow">
<!-- user can add his own phases to this area -->
<phase name="soapmonitorPhase"/>
<phase name="OperationOutFaultPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
</phaseOrder>
</axisconfig>
At 2014-03-14 17:20:20,"Sathwik B P" <[email protected]> wrote:
>Hi Vito,
>
>Can you share ode-axis2.properties file from both the tomcat servers to
>understand your deployment.
>
>regards,
>sathwik
>
>
>On Fri, Mar 14, 2014 at 7:38 AM, Vito <[email protected]> wrote:
>
>> Hi Tammo,
>>
>> Thank you for your explanation and advice. Actually I deployed the two ODE
>> engines in two tomcat servers of different ports. So if I want to invoke,
>> for example, 15 instances in ode1 and 15 instances in ode2, the requests
>> have their difference in the ports of their addresses. The question is, in
>> this circumstance, do the two ode engines share the same database instance
>> when they run in two tomcat servers? I use the internal jpa database.
>>
>>
>> Best,
>> Vito
>>
>>
>> At 2014-03-13 19:23:10,"Tammo van Lessen" <[email protected]> wrote:
>> >Hi Vito,
>> >
>> >it doesn't matter if they share the same JVM but if they share the same
>> >data in the database, then you will run into trouble unless you solve some
>> >issues needed for clustering. The background is the following: If ODE
>> >receives a request, it loads the instance, determines the next steps and
>> >adds a new entry to the scheduler table for tasks that requires heavier
>> >work. In a cluster you need to make sure that this scheduled job is
>> >assigned to a single node and not taken up by all nodes. The scheduler is
>> >ready to do that, but the missing piece is the cluster management that
>> >assigns IDs to nodes etc. This can be implemented with hazelcast for
>> >instance.
>> >
>> >As a side note: When you use an external database, it is important that
>> you
>> >have properly configured the transactions manager, either by using
>> >https://github.com/vanto/apache-ode-tomcat-bundle or by following the
>> >Sathwik's instructions at
>> >
>> http://sathwikbp.blogspot.de/2013/09/apache-ode-on-tomcat-7-with-bitronix.html
>> ,
>> >this could help as well.
>> >
>> >HTH,
>> > Tammo
>> >
>> >
>> >On Wed, Mar 12, 2014 at 2:49 AM, Vito <[email protected]> wrote:
>> >
>> >> Hi Tammo,
>> >>
>> >> Yes, both instances are nearly the same except for their different
>> >> deployment port number, because they need to be deployed in the two ODE
>> of
>> >> different ports.
>> >> Do you mean that they share the same jvm and database instance? It can
>> >> really cause some problem.
>> >> Actually I'm doing some work trying to implement simple load balance
>> >> between different ODE instances, but it's just a external implementation
>> >> without using any features of ODE cluster, which I'm not familiar with.
>> >>
>> >>
>> >> Best,
>> >> Vito
>> >>
>> >>
>> >> At 2014-03-11 20:35:29,"Tammo van Lessen" <[email protected]> wrote:
>> >> >Hi Vito,
>> >> >
>> >> >do both instances share the same database schema?
>> >> >
>> >> >ODE is currently not able to run in a cluster. Actually it is in
>> general
>> >> >ready for clustering but two pieces of glue code are missing. 1) the
>> load
>> >> >balance, 2) the master slave management that is needed for the
>> scheduler
>> >> >and the process store. Thus, without a not-too-small amount of
>> developer
>> >> >work its currently not possible to setup a cluster based on open source
>> >> >ODE. Also, ODE then assumes that the process definitions are the same
>> >> >across all instances within the cluster.
>> >> >
>> >> >Or did I get your question wrong?
>> >> >
>> >> >Tammo
>> >> >
>> >> >
>> >> >On Tue, Mar 11, 2014 at 9:44 AM, Vito <[email protected]> wrote:
>> >> >
>> >> >> Hi all, I'm trying to invoke multiple instances on two ODE engines.
>> >> >> I deployed the two engines in two tomcat servers of different ports
>> in
>> >> the
>> >> >> same computer. Then invoked 15 same process instances on each ODE
>> >> engine,
>> >> >> and the two process definitions for the two engines are not the same.
>> >> When
>> >> >> I invoked them all, the first engine went well, but the instances on
>> the
>> >> >> second engine sometimes worked well, sometimes it threw exception
>> like
>> >> >> below:
>> >> >>
>> >> >> 16:28:01,939 WARN [Transaction] Unexpected exception from
>> >> >> beforeCompletion; transaction will roll back
>> >> >> <openjpa-1.2.1-r752877:753278 nonfatal user error>
>> >> >> org.apache.openjpa.persistence.InvalidStateException: Attempt to
>> commit
>> >> a
>> >> >> null javax.transaction.Transaction. Some application servers set the
>> >> >> transaction to null if a rollback occurs.
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.kernel.BrokerImpl.setRollbackOnlyInternal(BrokerImpl.java:1490)
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.kernel.BrokerImpl.setRollbackOnly(BrokerImpl.java:1476)
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.kernel.DelegatingBroker.setRollbackOnly(DelegatingBroker.java:925)
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.persistence.EntityManagerImpl.setRollbackOnly(EntityManagerImpl.java:560)
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.persistence.PersistenceExceptions$2.translate(PersistenceExceptions.java:71)
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.kernel.BrokerImpl.translateManagedCompletionException(BrokerImpl.java:1896)
>> >> >> at
>> >> >>
>> >>
>> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1830)
>> >> >> at
>> >> >>
>> >>
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
>> >> >> at
>> >> >>
>> >>
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:498)
>> >> >> at
>> >> >>
>> >>
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
>> >> >> at
>> >> >>
>> >>
>> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
>> >> >> at
>> >> >>
>> >>
>> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
>> >> >> at
>> >> >>
>> >>
>> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:291)
>> >> >> at
>> >> >>
>> >>
>> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
>> >> >> at
>> >> >>
>> >>
>> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512)
>> >> >> at
>> >> >>
>> >>
>> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496)
>> >> >> at
>> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>> >> >> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>> >> >> at
>> >> >>
>> >>
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> >> >> at
>> >> >>
>> >>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> >> >> at java.lang.Thread.run(Thread.java:662)
>> >> >>
>> >> >> BTW after the error the instances can still go on to the normal end.
>> >> Maybe
>> >> >> the rollback saved the instance.
>> >> >> It seems that something went wrong with the transaction manager.
>> Could
>> >> you
>> >> >> help me figure out how this error came out?
>> >> >> Best,
>> >> >> Vito
>> >> >>
>> >> >
>> >> >
>> >> >
>> >> >--
>> >> >Tammo van Lessen - http://www.taval.de
>> >>
>> >
>> >
>> >
>> >--
>> >Tammo van Lessen - http://www.taval.de
>>