Examples for JMS Error Queue implementation in BPEL
Hi ,
Please anyone provide me examples for JMS error queue implementaion in BPEL.
Regards
Narsi p
Hi Narsi p,
Please remember to mark answers accordingly... Helpful or correct, following the forum rules
https://forums.oracle.com/forums/ann.jspa?annID=330
Can you tell us more about what are you trying to achieve here?
If you are just trying to configure an error queue to put the messages that couldn't be delivered, you can do this in weblogic directly.
Configuring an Error Destination for Undelivered Messages
http://docs.oracle.com/cd/E17904_01/web.1111/e13727/manage_apps.htm#JMSPG254
Cheers,
Vlad
Similar Messages
-
Example using of getMessage(s) with JMS error queues?
Hi,
I'm cobbling together various tools for easier management of replaying messages left in error queues and the likes, and whilst I've got messages being moved around the place on demand, I can't make any progress using getMessage() and getMessages() to print out vital statistics of a message / all the messages in a queue, including hopefully ripping out excerts of the XML payload in them. Can someone provide / point me to an example of these being in use? I can get a successful execution of getMessages() but am usure what to really do next with the object returned, how to iterate through and such.
Thanks
Chris.Hi Chris,
There are open source solutions for message management. In particular, you might want to investigate Hermes:
http://blogs.oracle.com/jamesbayer/2008/01/hermes_jms_open_source_jms_con.html
As for browsing messages via getMessages(), here's a code snippet. Note that one should never attempt to get too many messages at a time via "getNext()" -- instead call getNext() multiple times. Otherwise, if there are too many messages, the client or server might run out of memory.
# create a cursor to get all the messages in the queue
# by passing ‘true’ for selector expression,
# and long value for cursor timeout
cursor1=cmo.getMessages(‘true’,9999999)
# get the next 5 messages starting from the cursor’s
# current end position
# this will adjust the cursor’s current start position and
# end position “forwards” by 5
msgs = cmo.getNext(cursor1, 5)
# print all the messages’ contents
print msgs
# get 3 messages upto the cursor’s current start position
# this will adjust the cursor’s current start and end position backwards by 3
# this will the current position of the message by 1
msgs = cmo.getPrevious(cursor1, 3)
# print all the messages’ contents
print msgs
Finally, here's code based on public APIs that can help with exporting messages to a file. It uses Java, not WLST. I haven't tested it personally. I'm not sure if there's away to do this in WLST.
* pseudo code for JMS Message Export operation based on
* current implementation in the Administration Console
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import weblogic.apache.xerces.dom.DocumentImpl;
import weblogic.apache.xml.serialize.OutputFormat;
import weblogic.apache.xml.serialize.XMLSerializer;
import weblogic.management.runtime.JMSDestinationRuntimeMBean;
import weblogic.management.runtime.JMSDurableSubscriberRuntimeMBean;
import weblogic.management.runtime.JMSMessageManagementRuntimeMBean;
import javax.management.openmbean.CompositeData;
import weblogic.jms.extensions.JMSMessageInfo;
import weblogic.jms.extensions.WLMessage;
import weblogic.messaging.kernel.Cursor;
public void exportMessages(
String fileName,
JMSDestinationRuntimeMBean destination,
/* or JMSDurableSubscriberRuntimeMBean durableSubscriber */,
String messageSelector) throws Exception {
BufferedWriter bw = null;
try {
File selectedFile = new File(file);
if (destination == null /* or durableSubscriber == null */) {
throw new IllegalArgumentException("A valid destination runtime or durableSubscriber runtime mbean must be specified");
JMSMessageManagementRuntimeMBean runtime = (JMSMessageManagementRuntimeMBean) destination /* durableSubscriber */;
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
String xmlDeclaration = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
String exportStart = "<JMSMessageExport>";
final String exportEnd = "</JMSMessageExport>";
final String indent = " ";
bw.write(xmlDeclaration);
bw.newLine();
bw.write(exportStart);
bw.newLine();
bw.newLine();
bw.write(indent);
CompositeData[] messageInfos = null;
OutputFormat of = new OutputFormat();
of.setIndenting(true);
of.setLineSeparator("\n"+indent);
of.setOmitXMLDeclaration(true);
XMLSerializer ser = getXMLSerializer(bw, of);
String cursor = JMSUtils.getJMSMessageCursor(runtime, selector,0);
while ((messageInfos = runtime.getNext(cursor,new Integer(20))) != null) {
for (int i = 0; i < messageInfos.length; i++) {
JMSMessageInfo mhi = new JMSMessageInfo(messageInfos);
Long mhiHandle = mhi.getHandle();
CompositeData m = runtime.getMessage(cursor, mhiHandle);
// need to get the message with body
JMSMessageInfo mbi = new JMSMessageInfo(m);
WLMessage message = mbi.getMessage();
ser.serialize(message.getJMSMessageDocument());
messageInfos[i] = null;
bw.newLine();
bw.write(exportEnd);
bw.flush();
bw.close();
runtime.closeCursor(cursor);
LOG.success("jms exportmessage success");
} catch (Exception e) {
try {
if(bw != null)
bw.close();
} catch (IOException ioe) { }
LOG.error(e);
LOG.error("jms exportmessage error");
throw(e);
LOG.success("jms exportmessage success");
private XMLSerializer getXMLSerializer(
Writer writer,
OutputFormat of) {
return new XMLSerializer(writer, of) {
protected void printText(
char[] chars,
int start,
int length,
boolean preserveSpace,
boolean unescaped) throws IOException {
super.printText(chars,start,length,true,unescaped);
protected void printText(
String text,
boolean preserveSpace,
boolean unescaped ) throws IOException {
super.printText(text,true,unescaped);
public static String getJMSMessageCursor(
JMSMessageManagementRuntimeMBean runtime,
String selector,
int cursorTimeout) throws weblogic.management.ManagementException
return runtime.getMessages(
selector,
new Integer(cursorTimeout),
new Integer(Cursor.ALL));
Hope this helps,
Tom -
Hello. I have problem after sending message to JMS queue. Message by log file sending is success. But Message don't put to queue and put to error queue.
Message don't put to queue in 25 % cases.
Speak please, what can be reasons what message put to error queue ?give me please need section link.
I closing the sender, session and connection in method destroy();
That class, That is EJB:
@Stateless(name = "BeanName", mappedName = "ejb.un.BeanName")
@Local(BeanLocal.class)
public class BeanName implements ReleaserLocal {
@PreDestroy
public void destroy() {
try {
jmsSender.close();
} catch (Exception ex) {
try {
jmsSession.close();
} catch (Exception ex) {
try {
jmsConnection.close();
} catch (Exception ex) {
private void sendMessage(String payload, String channel, long qId){
try {
jmsSender.send(message);
if (log.isDebugEnabled()) {
log.debug("message SEND");
I running this app from depployed in weblogic. -
Problem Configuring JMS Error Queue
Domain configuration : one adminServer, One cluster, 2 managedservers in cluster
Two distibuted Queues: InboundQueue, Error Queue
I want to redirect any bad message from InboundQueue to ErrorQueue and discard it.
It worked fine for 4 yrs in Wls 8.1 ( did configured in 8.1)..
now i upgrde to wls 10.1 and i did same configuration but InboundQueue is not redirecting to Errorqueue..
Dont know where i am missing..
here is the config.xml entry and jms/JmModule.xml files..
config.xml entry_
<jms-system-resource>
<name>JmsModule</name>
<target>cluster1</target>
<sub-deployment>
<name>subdeployment1</name>
<target>JmsServer1,JmsServer2</target>
</sub-deployment>
<descriptor-file-name>jms/JmsModule-jms.xml</descriptor-file-name>
</jms-system-resource>
JmsModule.xml_
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
<uniform-distributed-queue name="ErrorQueue">
<sub-deployment-name>subdeployment1</sub-deployment-name>
<delivery-params-overrides>
<delivery-mode>Non-Persistent</delivery-mode>
<time-to-deliver>-1</time-to-deliver>
<time-to-live>-1</time-to-live>
<priority>-1</priority>
<redelivery-delay>-1</redelivery-delay>
</delivery-params-overrides>
<delivery-failure-params>
<redelivery-limit>0</redelivery-limit>
</delivery-failure-params>
<jndi-name>ErrorQueue</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
<forward-delay>-1</forward-delay>
</uniform-distributed-queue>
<uniform-distributed-queue name="InboundQueue">
<sub-deployment-name>subdeployment1</sub-deployment-name>
<delivery-params-overrides>
<delivery-mode>Persistent</delivery-mode>
<time-to-deliver>10</time-to-deliver>
<time-to-live>10</time-to-live>
<priority>2</priority>
<redelivery-delay>10</redelivery-delay>
</delivery-params-overrides>
<delivery-failure-params>
<error-destination>ErrorQueue</error-destination>
<redelivery-limit>1</redelivery-limit>
<expiration-policy>Redirect</expiration-policy>
</delivery-failure-params>
<jndi-name>InboundQueue</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
<forward-delay>10</forward-delay>
</uniform-distributed-queue>
</weblogic-jms>
Any help
Thanks
ksrAre you still having a problem? If so, I recommend trying to simplify the reproducer by removing the "time-to-deliver", "redelivery-delay", and "time-to-live" settings.
<time-to-deliver>10</time-to-deliver>
<time-to-live>10</time-to-live>
<redelivery-delay>10</redelivery-delay>
Note that these are all set to a very small value (10 milliseconds), and that the message will expire before it can be delivered or redelivered. The delivery delay is 10 millis, so by the time the delivery delay completes, the time-to-live will have passed -- furthermore, if there was no delivery delay, the redelivery delay is at 10 millis -- so by the time the redel occurs the time-to-live expires).
Tom -
JMS Error destination..
Hi,
I am developing a JMS application where i am processing message in a Queue and configured redelivery delay and redelivery limit. When the maximum redelivery limit has reached, i will move the message to an error destination which is again a Queue. I can send an email to the administartor with the message information indicating that the processing for the message has failed. But the requirment is, the administrator wants to view the message from the persistent store and resubmit the message. Is it possible? If that is the case what can be value for time-to-live for the message? I am using ServiceBus 10.3 and using the underlying weblogic server as JMS provider. Besides, i have a question on the relationship between redelivery delay, redelivery limit and time-to-live override. When i tested, if time-to-live is less than the redeliverylimit*redelivery delay, then will the message be deleted and the redelivery limit(number of retries) is not taking into effect. But if time-to-live is greater than also the message is deleted after maximum retry means time-to-live doesn't have effect. This means i am i right to say, if i specify time-to-live and there is no need to specify redeliverylimit and redelivery delay. If that is the case on what basis, the retry is made?
Thanks in advance for your replies,
SamHi,
I am using ServiceBus 10.3 and using the underlying weblogic server as JMS provider. I think OSB tends to decorate JMS messages with its own private information, so I don't know if it can support arbitrarily moving them between destinations. You may be better off posting to an OSB specific forum.
But the requirment is, the administrator wants to view the message from the persistent store and resubmit the message. Is it possible? That said, you can view, delete, move, and file import/export WebLogic JMS messages using the message management screens on the console. If you need a more sophisticated capability than the console provides, it is possible to write Java or WLST program's for the purpose.
If you're interested in scripting, the following might be enough to get you started:
For scripting and tracing examples, see the July 29th and August 10th 2009 newsgroup post with subject "Example using of getMessage(s) with JMS error queues?" [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3657916] and the June 10th 2009 newsgroup post with subject "JMSDestinationRuntimeMBean - possible STATE values " [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3531603 ]. Also take a look at the +Sept 23 2009 newsgroup posts with subject "Enable JMS - Queue/Topic Trace on console"+ [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3782486].
+WARNING: Exporting too many messages at a time can cause out-of-memory errors.+
Besides, i have a question on the relationship between redelivery delay, redelivery limit and time-to-live override. When i tested, if time-to-live is less than the redeliverylimit*redelivery delay, then will the message be deleted and the redelivery limit(number of retries) is not taking into effect. But if time-to-live is greater than also the message is deleted after maximum retry means time-to-live doesn't have effect. This means i am i right to say, if i specify time-to-live and there is no need to specify redeliverylimit and redelivery delay. If that is the case on what basis, the retry is made?By definition, an expired message is automatically deleted -- no matter what the delivery count is. If you want expired messages to be automatically redirected to a destinatin's error destination you can configure an "expiration policy" of "redirect" on the destination.
Whether you want to use message expiration, redelivery limit, or redelivery delay very much depends on your specific use case.
-- Redelivery limits detect messages that are rolled back many times by receiving applications (rollbacks can occur due to any number of reasons, such as database failure, application bug, etc.)
-- Redelivery delays prevent rolled back messages from being immediately redelivered. This helps prevent zooming up CPU usage to 100% with tight loop retries of processing a problem message, assumes that whatever condition caused the original rollback is temporary, and assumes that if the message is immediately redelivered that this is too soon for the problem condition to have cleared up.
-- Expiration detects if a message has been sitting around for a long time. It doesn't detect whether the application has attempted to process the message...
In general, if you are coding a new application, it is sometimes helpful to avoid error destinations. Instead, let your application decide what to do with problem messages (such as queue them to another destination). This helps your application provide more customizable behavior.
Hope this helps,
Tom
PS Especially for developers new to WebLogic JMS, I highly recommend purchasing a copy of the book "Professional Oracle WebLogic". In addition, I recommend reading the new "Best Practices" chapter of the JMS configuration guide, and the new "Tuning Checklist" in the JMS chapter of the Performance and Tuning guide. These new sections are in the 10.3.2 documentation. -
Project Plan Example for a Office 365
Hi,
Help, please.
I need a Project Plan Example for a Office 365 implementation.
Thanks in advanced.Hi Efebo,
Please refe to the link below.
http://www.aventurasoft.com/Office365Migration-DetailedProjectPlan.pdf
Regards,
Charlie Liao
TechNet Community Support
Thank you very much!!! -
Error while passing ODI variable in JNDI Url for JMS Queue XML
Hi,
Facing a weird problem while passing ODI variable in JNDI Url for JMS Queue XML.
Below is the JNDI Url configured under ODI Topology:
JNDI Url: t3://<host_location>?d=#TEST.SCHEMA_FILE&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
where,
#TEST.SCHEMA_FILE --> ODI variable storing xsd name and location
Issue Description:
If we restart ODI server then for the first run of any ODI interface using JMS Queue XML, it is unable to get the value for ODI variable present in JNDI Url (d=#TEST.SCHEMA_FILE).
It throws error message saying: No XSD found
Temporary Resolution:
As a temporary fix if we hard-code and pass the value in that ODI variable as shown below, it will successfully go through.
eg: JNDI Url: t3://<host_location>?d=C:\XSD\test.xsd&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
Reverting it back to variable later will have no issues and subsequent run will succeed.
But again anytime later if server is restarted then first run will have this issue.
Want to have permanent fix for it.
Any one having idea on it please share. Appreciate your help!What ODI version are you using? It could be related to the bug in the older version as described in support note Doc ID 1290326.1
-
How to configure a error queue for weblogic jms topic
Hi guys.
I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
1. using jms transport configure proxy service:
Retry Count :3
Retry Interval:10
Error Destination: ErrorTopic
Expiration Policy: Redirect
I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.
Any suggestions for this topic? Can anyone provide some helps or any useful links.
Thanks in advance.
MingzhuangMingzhuang
I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
1. using jms transport configure proxy service:
Retry Count :3
Retry Interval:10
Error Destination: ErrorTopic
Expiration olicy: RedirectUnlike File/SFTP, JMS proxy service definition does not have the concept of Error Destination. To accomplish similar functionality go to JMSQ on (for which proxy is configured) server console (http://localhost:7001/console) and configure the Error Destination. Following URL will help in how to configure JMS Q.
http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueues.html
http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueueDeliveryFailure.html
I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.If every thing is configured as per above step, then the after retries, the weblogic server will put the message into JMS topic configured. Your proxy will receive from this topic.
Let me know if we are not on same page.
Cheers
Manoj -
Creating data server for JMS Queues in ODI
hi,
I am trying to create data server for JMS Queues in ODI.
I am getting following error:
java.sql.SQLException: Cannot load connection class because of underlying exception: 'javax.jms.JMSException: Cannot find the Connection Factory (jms/QueueConnectionFactory) in JNDI'.
To implement this, I am giving following parameters:
JNDI driver : com.evermind.server.rmi.RMIInitialContextFactory
JNDI url : ormi://localhost/default
JNDI resource : jms/QueueConnectionFactory
Please help.
Thanks,
MonikaHi,
according to docs
http://docs.oracle.com/cd/E23943_01/integrate.1111/e12644/hypersonic_sql.htm#ODIKM590
i see
JDBC Driver: org.hsqldb.jdbcDriver
JDBC URL: jdbc:hsqldb:hsql://<host>:<port>
could you modify
JDBC Driver : org.hsqldb.jdbc.JDBCDriver
JDBC Url : jdbc:hsqldb:hsql://localhost
according to docs?
Thanks -
Adapter Status Error : Error in creating message ID map for JMS message:
Currently in the SAP XI 3.0 JMS Adapter, I am receiving the following error
Error in creating message ID map for JMS message:
ie. Error while processing message 'de8265f6-c864-4479-1137-9bab17b78b3b'; detailed error description: com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: Error in creating message ID map for JMS message: ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 at com.sap.aii.adapter.jms.core.channel.filter.InboundDuplicateCheckFilter.filter(InboundDuplicateCheckFilter.java:103)
Although I am receivng this error, when I check the details of the message processing, all steps are successful and the message is set to status : DLVD
Audit Log for Message: de8265f6-c864-4479-1137-9bab17b78b3b
Time Stamp Status Description
09.06.2009 13:27:24 Success New JMS message with JMS message ID ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 received. The XI message ID for this message is de8265f6-c864-4479-1137-9bab17b78b3b
09.06.2009 13:27:24 Success JMS message converted to XI message format successfully
09.06.2009 13:27:24 Success RRB: entering RequestResponseBean
09.06.2009 13:27:24 Success RRB: suspending the transaction
09.06.2009 13:27:24 Success RRB: passing through ...
09.06.2009 13:27:24 Success RRB: leaving RequestResponseBean
09.06.2009 13:27:24 Success Transform: using Transform.Class: com.sap.aii.messaging.adapter.Conversion
09.06.2009 13:27:24 Success Transform: transforming the payload ...
09.06.2009 13:27:24 Success Transform: successfully transformed
09.06.2009 13:27:24 Success Application attempting to send an XI message synchronously using connection JMS_http://sap.com/xi/XI/System.
09.06.2009 13:27:24 Success Trying to put the message into the call queue.
09.06.2009 13:27:24 Success Message successfully put into the queue.
09.06.2009 13:27:24 Success The message was successfully retrieved from the call queue.
09.06.2009 13:27:24 Success The message status set to DLNG.
09.06.2009 13:27:25 Success The application sent the message synchronously using connection JMS_http://sap.com/xi/XI/System. Returning to application.
09.06.2009 13:27:25 Success The message was successfully transmitted to endpoint http://sapxia.swets.nl:8000/sap/xi/engine?type=entry using connection JMS_http://sap.com/xi/XI/System.
09.06.2009 13:27:25 Success The message status set to DLVD.
Not sure why this is occurring.......No, not using correlation id.
I was able to resolve the issue on this queue by changing the following setting
Under the PROCESSING tab, under XI SETTINGS
Time period for Duplicate Check for EO(IO) (secs) it was set to 86400
I have changed this to 300 seconds and the adapter has now gone green.
BUT......
That said, I have the exact scenario on another sender JMS channel set to 300 seconds and it exhibits the same issue.
correlation settings:
Set XI message id to = GUID
Set Xi conversation -
Configuration for JMS Adapter Sensor action and JMS Queue sensor action..!!
Hi,
Id like my BPEL process to send an XML message to JMS on Websphere,I was able to do this through a JMS adapter.But I would more like to add sensors into my process which would really do the same thing - send an XML message to JMS Q.
Now I understand that there are two ways to do this,JMS Queue and JMS Adapter - thorugh bpel sensor action.
I am able to use JMS Queue and it works fine , but adds its own xml tags to the message,Is there any way I could send only my xml payload as a message to the queue??
Also could any1 tell me what is the configuration for JMS Adapter sensor action?
Any suggestions how do I go about it??Hey Anirudh,
Thanx for the response :-)
All these hold good when I have an AQ adaptor right,But the thing is I want to send a message to a 'JMS' queue with out actually using an adapter configuration wizard and everythng..So I resolved to JMS queue Sensor action..Heres the xml snippet from the sensorAction.xml files which is generated..
<actions targetNamespace="http://xmlns.oracle.com/Test_JMS_Logging" xmlns="http://xmlns.oracle.com/bpel/sensor" xmlns:tns="http://xmlns.oracle.com/Test_JMS_Logging" xmlns:pc="http://xmlns.oracle.com/bpel/sensor">
<action name="JMS_LogEntry" publishName="" publishType="JMSQueue" enabled="true" filter="" publishTarget="jms/L_Queue">
<property name="JMSConnectionFactory">jms/L_QueueCF</property>
<sensorName>ActivitySensor_JMS</sensorName>
</action>
</actions>
This works grt and adds messages to the queue..But adds its own header info according to the sensor.xsd loacted at the Oracle_home\bpel\system\xmllib\ folder.
Right now the XML message added to the Queue is:-
<actionData xmlns="http://xmlns.oracle.com/bpel/sensor">
<header>
<sensor sensorName="ActivitySensor_JMS" classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent" kind="activity" target="AddLEntr
y" xmlns:pc="http://xmlns.oracle.com/bpel/sensor" xmlns:ns2="http://www.ulrhome.com/2008/10/L_Entry" xmlns:tns="http://xmlns.oracle.com/Test_JMS">
<activityConfig evalTime="completion">
<variable outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema" target="$WriteL_Produce_Message_InputVariable/L_Entry/ns2:L_Entry/ns2:LCName"/>
</activityConfig>
</sensor>
<instanceId>950016</instanceId>
<processName>Test_JMS</processName>
<processRevision>v2009_04_15__40833</processRevision>
<domain>default</domain>
<timestamp>2009-04-15T11:21:23.596-04:00</timestamp>
<midTierInstance>app01.ulrhome.com:9700</midTierInstance>
</header>
<payload>
<activityData>
<activityType>scope</activityType>
<evalPoint>completion</evalPoint>
<durationInSeconds>0.011</durationInSeconds>
<duration>PT0.011S</duration>
</activityData>
<variableData>
<dataType>12</dataType>
<data>
<ns0:LCName xmlns:ns0="LC_Test1http://www.ulrhome.com/2008/10/L_Entry">LC_Test1</ns0:LCName>
</data>
<queryName/>
<target>$WriteL_Produce_Message_InputVariable/L_Entry/ns2:L_Entry/ns2:LCName</target>
<updaterName>AddL_Entry</updaterName>
<updaterType>scope</updaterType>
</variableData>
</payload>
</actionData>
My requirement is that I need to add a sensor to the BPEL process which posts 'Only my payload message to the JMS queue'..
What I would want the message in the Queue to be is : -
<data>
<ns0:LCName xmlns:ns0="LC_Test1http://www.ulrhome.com/2008/10/L_Entry">LC_Test1</ns0:LCName>
</data>
Also while creating a Sensor action I get another option as JMS Adaptor,I am not sure of what value to type in this wizard..Heres what I keyed in..M sure this is not right..Cos it dosnt work :-)
<action name="SensorAction_JMS" publishName="" publishType="JMSAdapter" enabled="true" filter="" publishTarget="jms/LoggingQueue">
<property name="JMSConnectionName">Log</property>
</action>
</actions>
Could any 1 tel me what values are the right values..And does JMS Adapter mean that I have to create a JMS Apator in the project and give that connection name as a Value..
I am not finding sufficiant Documentation for 'JMS Adapter' so M clueless and right now any help will be appriciated :-)
Regards,
Akshatha. -
Hi,
I have following scenario :
Queue1
Bpel1 -> Writes Schema A to Queue1
Bpel2 -> Writes Schema B to Queue1
Bpel3 -> Reads from Queue1
I need that Bpel3 should read only Schema A from Queue and not Schema B.
So how will i define the correlation between Bpel1 & Bpel 3.
I tried fetching the processId in Bpel 1 and add it to Invoke property jca.jms.JmsCorrelation_id, but was not able to set the same in Bpel3.
Any help/spec in setting up correlation for JMS Queues is highly apreciated.
Thanks !!In standard JMS, an application can specify a correlation-id on per message basis using the javax.jms.Message API, and then specify a filter (a "selector") when creating a consumer via the javax.jms.Session API, but, in general, it is usually better to use a separate dedicated queue per business process (simplifies management, simplifies coding, improves perf, etc), or, if that's not an attractive option, to use a single MDB to dispatch messages from the same queue to different business processes. I don't know the specific steps to do the same in BPEL.
You might want to try posting to the BPEL forum at BPEL
Hope this helps,
Tom -
Programming for Using JMS Distributed Queues
Hi,
Does anyone know specifically how your meant to write java code in order to fully make use of JMS Distributed queues. At the moment we have a 3rd party app, which I don't think is written correctly, as it always locks up after using a distributed queue, or a consumer is at 0 on one of the members of the distributed queue, when it should always should be constant and uniform.
Its as if their code hasn't been written correctly.Distributed queue applications are encouraged to leverage WebLogic MDBs, which automatically ensure that consumers are attached to each distributed queue member, and to write applications in a way that has no dependency on which JVM a particular message is processed.
At a guess, the third party product is setting up a consumer on one member of the distributed Q, while messages are being produced to the other member. If this assumption is true, here are some thoughts:
* Consider using a single Q for the third party product's usage instead of a distributed queue. Configuring a distributed queue is not adding any high availability, as the product is expecting all messages to pin to the same Q instance.
* Producers and consumers load-balance independently, but, when "affinity" and "load balance" are both configured to false on a Producer's connection factory, producers will have a tendency to load balance to the member that hosts more than one consumer. This might help somewhat, but my guess is that it won't help in all cases -- for example, after a restart I'm not sure that there's a guarantee that the consumer won't load balance to the "wrong" member (the member that has no messages).
* It might help to enable "queue forwarding" on the distributed queue configuration. This feature automatically forwards messages trapped in a destination that has no consumers to a queue that has consumers. "Queue forwarding" is not compatible with WebLogic's "unit-of-order" feature, but it's likely the third party product isn't using this feature. Queue forwarding also imposes a performance penalty - but whether you notice the difference depends on whether you have high performance requirements.
Hope this helps,
Tom
Edited by: TomB on Mar 9, 2011 6:28 PM -
Flex with JMS Topic/Queue for Asynchronous messaging
I have been working on Flex and JMS integration using Data
Services for Asynchronous messaging. I am able to do this
successfuly. Now I am in need to do the same without using the Data
Services piece.
For doing this I have done the following ......
I have created a JMS Webservice in the Oracle JDeveloper 10G
along with Webservice Client.I am able to Listen to JMS Topic/Queue
( this has been created in the Oracle AS ) using this Webservice
and receive the messages from this JMS Topic/Queue
Asynchronously.....
But If I need to use the Flex Client , I am not able to
Communicate with this Webservice to listen to the JMS Topic/Queue.
Did any one in this forum tried to communicate with JMS
Topic/Queue without using Flex Data Service.If so please share your
inputs.Here is my confusion (I'm using J2EESDK1.3).
On a local server I did the following
j2eeadmin -addJmsFactory jms/RemoteTCF topic -props url=corbaname:iiop:mars#mars
In the app client running on the local server I had the code
ic = new InitialContext();
// JNDI lookup. The resource factory ref points to the
// Remote Connection Factory I registered
tcf = (TopicConnectionFactory)ic.lookup("java:comp/env/jms/TopicConnectionFactory");
// The env ref points to jms/Topic of the local server
pTopic = (Topic)ic.lookup("java:comp/env/jms/PTopic");
So I'm assuming that I'm using a connection factory that connect to mars and a Topic on the local box.
On remote server mars, I deployed a MDB which use
jms/TopicConnectionFactory and jms/Topic. But I'm thinking this jms/Topic and the one I used on the local box are not the same one. Right? Then how could the app client and the MDB share messages?
Some of my explanation I don't if it makes sense or not.
ConnectionFactory is a way to tell what kind of connection it could generate (Queue, Topic, Durable etc) and Where the connection would go to (local or remote).'
As for as destination, I'm not sure. How could two server share one Topic? -
How can a JMS adapter be configured in BPEL to consume messages from multiple queues ?
How can a JMS adapter be configured in BPEL to consume messages from multiple queues ?
If you want to use JMS with AQ as datastore then there is some configuration you need to do to enable this. This is outside SOA Suite per sa, e.g. no adapter required.
If you want to connect to the AQ direct then use the AQ adapter.
this blog may be of some help understand the configuration
http://biemond.blogspot.com/2008/01/oracle-jms-with-esb-and-bpel.html
cheers
James
Maybe you are looking for
-
Ipod - if I restore my iPhone3 will it restore to the original OS or the latest OS?
Hi, my iPhone3's iPod is acting strange. If I backup and then restore will it restore it to the latest OS? The reason that I ask is because it was a bear to install OS4 on this phone and I don't want to spend 5 hours doing it. Thanks
-
I have a simple accounts table and when I add the row using sum function it is always 1p out, what am I doing wrong, or what is numbers doing wrong?
-
InDesign and HP Officejet issue
Adobe Indesign CS3 won't print to my HP Officejet 5610 All in One--what's strange is that every other app (including Adobe Photoshop and Illustrator) will. On printing Console says "2009-03-09 19:20:41.497 PrinterProxy[963] Printer scanningApp for Of
-
Required password for itunes keeps pop up on my kid's ipad constantly nonstop. So i put in password and then it keeps appear the confirm purchased pop up. I clicked on cancel a thousand times but it keeps popup right after i clicked cancel. Tried so
-
Hi all, I'm experiencing some performance issues when loading a page for the first time. The problem is caused when updating a css file of my own custom theme. When I access a page of the application for the first time, this produces a 404 error but