[ 
https://issues.apache.org/jira/browse/ODE-518?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12674995#action_12674995
 ] 

Mark Ford commented on ODE-518:
-------------------------------

The spec mandates that the engine must not initialize the partner link if the 
initializePartnerRole attribute is set to "no". Your scenario above where a 
user provided a value in the deploy.xml but had this attribute set to false and 
failed to initialize the partner link prior to use should result in a 
bpel:uninitializedPartnerRole as opposed to falling back to the value 
configured in the deploy.xml file. The spec is clear here that the engine must 
not provide an initialization and also what should happen if the process 
attempts to read or invoke a partner link that is not initialized.

My preference would be to adhere to the spec in the interest of portability and 
clarity.  


> Initialized endpoint is required by ODEProcess during deployment despite 
> initializePartnerRole="no" 
> ----------------------------------------------------------------------------------------------------
>
>                 Key: ODE-518
>                 URL: https://issues.apache.org/jira/browse/ODE-518
>             Project: ODE
>          Issue Type: Bug
>          Components: Deployment
>    Affects Versions: 2.0
>         Environment: ServiceMix 3.3
>            Reporter: Mark Ford
>            Assignee: Karthick Sankarachary
>            Priority: Minor
>             Fix For: 2.0
>
>
> Setting initializePartnerLink="no" on a partnerLink with a partnerRole should 
> indicate to the engine that this partnerLink's endpoint reference will be set 
> through the execution of the process (via an assign) as opposed to configured 
> by the deployer. It appears that ODE doesn't support this.
> 1. create a BPEL with a scope that has a partner link declared
> 2. use an assign activity to set the endpoint reference for this partner link
> 3 have an invoke activity that uses this partner link
> 4. create a deploy.xml for the BPEL but omit the scope's partner link
> 5. deploy to service mix
> 6. see stacktrace:
> Caused by: java.lang.IllegalArgumentException: ResourceManagerPartnerLinkType 
> must be bound to an endpoint in deloy.xml
>       at org.apache.ode.bpel.engine.ODEProcess.setRoles(ODEProcess.java:675)
>       at 
> org.apache.ode.bpel.engine.ODEProcess.access$1000(ODEProcess.java:101)
>       at 
> org.apache.ode.bpel.engine.ODEProcess$HydrationLatch.doHydrate(ODEProcess.java:1250)
>       at 
> org.apache.ode.bpel.engine.ODEProcess$HydrationLatch.access$200(ODEProcess.java:1215)
>       at 
> org.apache.ode.bpel.engine.ODEProcess$HydrationLatch$2.run(ODEProcess.java:1226)
>       at org.apache.ode.bpel.engine.NStateLatch.latch(NStateLatch.java:89)
>       at org.apache.ode.bpel.engine.ODEProcess.hydrate(ODEProcess.java:847)
>       at 
> org.apache.ode.bpel.engine.BpelServerImpl.register(BpelServerImpl.java:383)
>       at org.apache.ode.jbi.OdeServiceUnit.start(OdeServiceUnit.java:104)
>       at org.apache.ode.jbi.OdeSUManager.start(OdeSUManager.java:115)
>       ... 10 more
> from ODEProcess.java lines 672-678:
>             if (pl.hasPartnerRole()) {
>               Endpoint endpoint = 
> _pconf.getInvokeEndpoints().get(pl.getName());
>                 if (endpoint == null)
>                     throw new IllegalArgumentException(pl.getName() + " must 
> be bound to an endpoint in deloy.xml");
>               PartnerLinkPartnerRoleImpl partnerRole = new 
> PartnerLinkPartnerRoleImpl(this, pl, endpoint);
>                 _partnerRoles.put(pl, partnerRole);
>             }
> Seems like the null check on the endpoint should not be done if the 
> initializePartnerRole=no. 

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

Reply via email to