ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexis Midon (JIRA)" <j...@apache.org>
Subject [jira] Commented: (ODE-647) Multiple consecutive invocations to a service might incur an axis2.AxisFault of "two services cannot have same name".
Date Thu, 10 Dec 2009 18:32:18 GMT

    [ https://issues.apache.org/jira/browse/ODE-647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12788820#action_12788820

Alexis Midon commented on ODE-647:

I checked the axis2 code as well and noticed the same pitfall. However the leak can be avoided
if we make sure the AxisService is properly removed from AxisConfig when an AxisService instance
is re-created. This happens in org.apache.ode.axis2.SoapExternalService.ServiceFileObserver#init
when the the service config file is updated. At that time, we would have to remove the service
instance from the AxisConfig without disturbing any current invocations.
In the current implementation, this is done when invoking ServiceClient#cleanUp.

With the solution a., I think each thread should have a service instance and a service client.
On each invocation, the thread will check if the service config has changed. If so, the existing
ServiceClient should be cleanUp (which removes the service instance from the axis config),
then a new service instance (with a unique name) and a new ServiceClient would be created.

In that case, I don't see any synchronization issue.

I like a. better of course, much more optimized than d. 

> Multiple consecutive invocations to a service might  incur an axis2.AxisFault of  "two
services cannot have same name".
> -----------------------------------------------------------------------------------------------------------------------
>                 Key: ODE-647
>                 URL: https://issues.apache.org/jira/browse/ODE-647
>             Project: ODE
>          Issue Type: Bug
>    Affects Versions: 1.3.3
>         Environment: ODE1.3.3, Tomcat 5.5.9, Sun JVM 1.5, Windows XP SP3
>            Reporter: Wenfeng Zhao
>            Assignee: Alexis Midon
>            Priority: Critical
>             Fix For: 1.3.4
>         Attachments: ODE-647-outputs.txt, ODE647.zip
>   Original Estimate: 24h
>  Remaining Estimate: 24h
> Although version 1.3.2 and 2.0 are OK,   with ODE 1.3.3, it seems that multiple consecutive
invocations to a same component service might incur the following exception:
> ERROR - GeronimoLog.error(108) | Error sending message to Axis2 for ODE mex {PartnerRoleMex#hqejbhcnphr4i3dscxlf10
[PID {http://scqr.bupt.edu.cn/solution}process_SyntheticBookService_sol2-12] calling null.operation1(...)}
> org.apache.axis2.AxisFault: Two services cannot have same name.  A service with the axis_service_for_{http://example.org/writerInfo}writerInfoService#writerInfoPort_hqejbhcnphr4i3dscxlf0r
name already exists in the system.
> 	at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:172)
> 	at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:139)
> 	at org.apache.ode.axis2.SoapExternalService.getServiceClient(SoapExternalService.java:281)
> 	at org.apache.ode.axis2.SoapExternalService.invoke(SoapExternalService.java:140)
> 	at org.apache.ode.axis2.MessageExchangeContextImpl.invokePartner(MessageExchangeContextImpl.java:52)
> 	at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeContextImpl.java:781)
> 	at org.apache.ode.bpel.runtime.INVOKE.run(INVOKE.java:100)
> 	at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
> 	at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
> 	at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:875)
> 	at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:438)
> 	at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:439)
> 	at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:441)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:411)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:405)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:218)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:404)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:401)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> 	at java.lang.Thread.run(Thread.java:595)
> And I noted that a similar problem has been discussed in 2007( https://issues.apache.org/jira/browse/AXIS2-1182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12476874
).  But I'm not clear whether there are relations between the two problems.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message