Friday, December 17, 2010

ORABPEL-20301 when invoking SOA Suite 11g composite

Problem:

We invoked a SOA Suite 11g composite, and received the following error in the "soa_server1.out" log file:
<Dec 17, 2010 9:02:51 AM EST> <Error> <oracle.soa.bpel.engine.sensor> <BEA-000000> <<DataRouter::send> error
ORABPEL-20301

Data Publisher failed.
The Reporting Data Publisher BPELSensorAction fails.
The data publisher reported an exception.
Examine the log file for more details.


        at com.collaxa.cube.engine.sensor.sa.DataRouter.send(DataRouter.java:101)
        at com.collaxa.cube.engine.sensor.sa.DataRouter.send(DataRouter.java:133)
        at com.collaxa.cube.engine.sensor.dca.DataCaptureAgency.send(DataCaptureAgency.java:225)
        at com.collaxa.cube.engine.sensor.dca.DataCaptureAgency.sendActivityData(DataCaptureAgency.java:197)
        at com.collaxa.cube.engine.sensor.dca.DataCaptureAgency.onActivityComplete(DataCaptureAgency.java:284)
        at com.collaxa.cube.engine.util.CompositeInstanceObserver.onActivityComplete(CompositeInstanceObserver.java:61)
        at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:
    .
    .
    .
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)

Caused By: ORABPEL-20305

JMS connection factory lookup fails.
The JMS connection factory lookup fails. The related report data will not be published.
The JMS configuration was incorrect.
Verify that JNDI name jms/QueueConnectionFactory is valid.


        at com.collaxa.cube.engine.sensor.sa.publisher.QueuePublisher.lookupQCF(QueuePublisher.java:114)
        at com.collaxa.cube.engine.sensor.sa.publisher.QueuePublisher.publish(QueuePublisher.java:172)
        at com.collaxa.cube.engine.sensor.sa.FilteredDataPublisher.publish(FilteredDataPublisher.java:119)
        at com.collaxa.cube.engine.sensor.sa.BpelPublisher.publish(BpelPublisher.java:144)
        at com.collaxa.cube.engine.sensor.registry.BpelSensorActionInfo.publish(BpelSensorActionI
    .
    .
    .
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)

Caused By: javax.naming.NameNotFoundException: Unable to resolve 'jms.QueueConnectionFactory'. Resolved 'jms'; remaining name 'QueueConnectionFactory'
        at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
        at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252)

Solution:

Our project was actually a 10g project that was migrated to 11g. In the 10g version, we were using BPEL sensors. WebLogic 11g differs from Oracle Application Server 10g in that the JMS Connection Factory is now different.

1. Open up your project in JDeveloper 11g.

2. Choose the "Monitor" button to edit sensor detail (right on the top).

3. Select "BPELSensorAction" from the structure window on the bottom left.

4. Edit the Sensor Action as follows, and correct the JMS Connection Factory value:

        Publish Type:                       JMS Queue
        JMS Connection Factory:      weblogic.jms.ConnectionFactory
        Publish Target:                     jms/BPELQueueFileBased

Basically, in 10g, the JMS Connection factory was "jms/QueueConnection" and in 11g it is now "weblogic.jms.ConnectionFactory".


Applicable Versions:
  • Oracle SOA Suite 11g (11.1.1.x)

No comments: