Hi Guys, I just recently updated our SVN working copy of the ODE 1_X branch. It seems that changeset 790694 ( http://svn.apache.org/viewvc?view=rev&revision=790694) has broken our worklfows. Effectively we now see (at random, as this is I believe an introduced race) : ERROR - GeronimoLog.error(108) | Error sending message to Axis2 for ODE mex {PartnerRoleMex#4611686018427388056 [PID {ns}BPELFLOW-3] calling null.ProcessProxyInvocation(...)} org.apache.axis2.AxisFault: Two services cannot have same name. A service with the axis_service_for_{ns2}BrokerageService#BrokerageServiceSoap_hqejbhcnphr4gxu8n8adm4 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.GeneratedMethodAccessor50.invoke(Unknown Source)
The reason for this is [I believe], because we now have a new path from the axis2 ServiceClient constructor that checks to see if the underlying axis config contains multiple references to the same service, initially I though this might be a cleanup issue, however I think it may be a little more fundamental :( In my system I have a central brokerage object through which all web service calls are made (including calls to ODE and calls to other ODE processes from within the BPEL and calls to other web methods within the process.) .. Effectively this means I have only *ONE* service that is ever invoked, and it is always the same one, with the same name (but sometimes with differeng addresses) So I believe I have a case where ( synchronously) I have something like BPEL 1 -> Brokerage Object Service -> BPEL 2 -> ... tries to create a SoapExternalService to contact the Brokerage Object Service Which fails, as the SoapExternalService instance was created previously for the call to the BPEL 2 process. Whilst this may not be the best architectural practice I think its a valid use-case, and the above change has broken it :( If I revert the change everything works again :) ... however the comment suggests a memoy leak will ensure ... however at least I can use my flows again! :) Any ideas ? I could of course be barking up completely the wrong tree!!! -cj.