An Adapter (say File) reading inbound message from EIS and posting to BPEL for processing is pure OneWay invocation.
How does OneWay Invocation Works in BPEL?
Adapter reads the inbound message and then posts this message to BPEL Engine using OneWayDelivery Policy.
The oneWayDeliveryPolicy is from the Oracle 10g configuration property deliveryPersistencePolicy. The new configuration property name is bpel.config.oneWayDeliveryPolicy in composite.xml.

The oneWayDeliveryPolicy property controls database persistence of messages entering Oracle BPEL Server. By default (async.persist), incoming requests are saved in the delivery service database table dlv_message. These requests are later acquired by Oracle BPEL Server worker threads and delivered to the targeted BPEL process. This property persists delivery messages and is applicable to durable processes.

Something on OneWayDeliveryPolicy values: | |
Value | Description |
async.persist (Default) | Delivery messages are persisted in the database in table dlv_message. With this setting, reliability is obtained with some performance impact on the database. When the client initiates a process instance, an invocation request is placed in an internal queue. Inside Oracle BPEL Server, a message-driven bean (MDB), WorkerBean, monitors the queue for invocation requests. When a message is dequeued, Oracle BPEL Server allocates a thread to process the message. |
async.cache | Incoming delivery messages are kept only in the in-memory cache. If performance is preferred over reliability, this setting should be considered. Message are not dehydrated into dlv_message table. Rest all is same as async.persist. |
sync | Directs Oracle BPEL Server to bypass the scheduling of messages in the invoke queue, and invokes the BPEL instance synchronously. In some cases this setting can improve database performance. So there is no role of invoke queue and worker bean here. |
Issue:
We have many BPELs being invoked through Inbound Adapters. What we observed is that the Adapter instances are being generated, BUT the further BPEL instance never comes up. And this is happening only with OneWayInvocation BPELs and not with Request-Response BPELs. We checked dlv_message table. The inbound messages were being saved in it.
So we tried changing the OneWayDeliveryPolicy value to “sync” and BPEL instance started generating.
This leads us to the issue – Either invocation requests are not being enqueue into invoke queue OR the WorkerBeans are not able to de-queue them.