Thanks Luciano for the quick reply. I will post this issue to JIRA. My edited ODEExternalService.java is attached. >From the PartnerRoleMessageExchange parameter, I could get the PortType, namespace, etc of the incoming message.
I tried to get a matching information from the SCA reference. I could see them while debugging, but no public method from RuntimeComponentReference was found. So just to verify my observation, I put a restriction like the reference target-component in the composite for the bpel should be the same as the PortType of the SCA reference. And then compared these to set the index properly. I know this is not a fix, but just a work around, and I thought I will contact the mailing list to get some information to get the PortType & namespace from the RuntimeComponentReference. Regards, Rupesh Luciano Resende <[email protected]> 06/30/2009 06:56 PM Please respond to [email protected] To [email protected] cc [email protected] Subject Re: tuscany + bpel + multiple partners failing + bug? Rupesh, this seems like a bug.... could you please create a JIRA for this issue... also, from your e-mail, it seems you have a possible fix as well ? If so, could you please provide a patch of what you have changed to make this scenario working. On Tue, Jun 30, 2009 at 6:07 AM, Rupesh M G<[email protected]> wrote: > > Hello friend, > > I think I came across a bug in Tuscany 1.4. Please confirm, or > correct me if I'm wrong. > > Regards, > Rupesh > > REQUIREMENT & ERROR > > My requirement is to invoke 2 different SCA components A and B from > an implementation.bpel. > > I can invoke either A or B successfully. > When A is called after B, the Unable to register Synchronizer error comes. > > Something goes wrong in the tuscany-ODE bridge. > I debugged, and my observation is as follows. > > class --> org.apache.tuscany.sca.implementation.bpel.ode.ODEExternalService > > method --> public void invoke(final PartnerRoleMessageExchange > partnerRoleMessageExchange) > > problem area --> RuntimeComponentReference runtimeComponentReference = > > (RuntimeComponentReference)tuscanyRuntimeComponent.getReferences().get(0); > The index 0 is hardcoded. So only the first > reference is considered always. > > Reason --> Since the first reference to the impl.bpel is invoked always, > either A or B works fine. > When I use both A and B, for all the messages, SCA reference A is invoked, > and ODE fails processing messages for B. > > My trial --> I changed the index of the references collection to match the > incoming message type. > It worked, and I could call SCA components A and B from the impl.bpel. > > Conclusion --> This could be a bug in Tuscany. Please confirm. > > > > > > > > DISCLAIMER: > > "The information in this e-mail and any attachment is intended only for the > person to whom it is addressed and may contain confidential and/or > privileged material. If you have received this e-mail in error, kindly > contact the sender and destroy all copies of the original communication. IBS > makes no warranty, express or implied, nor guarantees the accuracy, adequacy > or completeness of the information contained in this email or any attachment > and is not liable for any errors, defects, omissions, viruses or for > resultant loss or damage, if any, direct or indirect." > > > > > -- Luciano Resende Apache Tuscany, Apache PhotArk http://people.apache.org/~lresende http://lresende.blogspot.com/ DISCLAIMER: "The information in this e-mail and any attachment is intended only for the person to whom it is addressed and may contain confidential and/or privileged material. If you have received this e-mail in error, kindly contact the sender and destroy all copies of the original communication. IBS makes no warranty, express or implied, nor guarantees the accuracy, adequacy or completeness of the information contained in this email or any attachment and is not liable for any errors, defects, omissions, viruses or for resultant loss or damage, if any, direct or indirect."
SportsLandManager.composite
Description: Binary data
ODEExternalService.java
Description: Binary data
