Uploaded image for project: 'ODE'
  1. ODE
  2. ODE-518

Initialized endpoint is required by ODEProcess during deployment despite initializePartnerRole="no"

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.0
    • 2.0
    • Deployment
    • None
    • ServiceMix 3.3

    Description

      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.

      Attachments

        Activity

          People

            karthick Karthick Sankarachary
            mark.ford Mark Ford
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: