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.
Similar Messages
-
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
-
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 -
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 -
My hard drive crashed and nothing recoverable, local Apple Store installed a new drive. How can I go back and download the apps I had purchased for my previous configuration, for instance Lion 10.7, and Photoshop Elements 10?
A blank drive needs to be formatted first, you do that hold c boot (or hold option key boot) from the 10.6 install disk (or Lion USB)
Read how to format the drive in Disk Utility here
https://discussions.apple.com/docs/DOC-3044
How to install OS X
https://discussions.apple.com/docs/DOC-3251
Software Update fully,
Hold the option key and click on Purchases when in MAS to download your 10.7 etc. -
OSB: Configuring business service for JMS Queue
Hi,
I want to produce messages into a JMS queue from OSB proxy service. I have created business service for the JMS queue. I also want to return Status code=200, Status Messgae=Success if the message is successfully inserted into the Queue. Kindly let me know how to do this.
I tried using Service Callout to call the business service but it is not allowing me to use it because my business service is a one-way operation. So, i tried with Publish activity but my doubt is how and where to configure request payload for the publish activity. I could not find any.
And how do i know if the message is successfully inserted so that i can send the Status=200 back to the calling proxy service.
Kindly help in this regard.
Thanks in advance.As suggested, use QoS=ExactlyOnce as RoutingOption within the Publish to business service. If there was any error it will send the flow to error handler where you can do a reply with failure to return HTTP status code=500 to the caller of the proxy service.
If you do a reply with success the caller will receive HTTP status code=200 -
Problem in configuring my driver for JMS Queues
Hello,
I'm working in connecting ODI to Sonic ESB.
I have added all the drivers needed to ODI/Drivers and I continue to have an error.
After searching in our ESB Doc i finally found why.
I have to change a property of my Driver.
I have tryied to change it in the Property Tab of the JMS Queue Data Server.
with Key= "My Property Name" and Value= "the new Value needed"
But there's no change, where can I do this ???
Thanks for your answer,
Cordially,
BMIn fact I have to change the domain in which I will be connected.
On Sonic ESB by default it is nammed Domain1 and I want to change this name to SonicTestDomain.
In java I just have to put :
prop.put("com.sonicsw.jndi.mfcontext.domain", "SonicTestDomain");
but in my Topology I'm using the Property Tab and in the first column nammed Key I put
com.sonicsw.jndi.mfcontext.domain and on the other nammed Value I put SonicTestDomain.
But when I put Test it always responding me :
javax.naming.NamingException [Root exception is com.sonicsw.mf.comm.InvokeTimeoutException: Domain1.DIRECTORY SERVICE:ID=DIRECTORY SERVICE - listDirectories()]
--> with Domain1 so the ghange of the property didn't do nothing.
If someone can help me... -
How to configure my JMS QUEUE serve only one message at a time?
Hi All,
I have requirement where I need to develope a JMS QUEUE in weblogic. This MDB has to serve only one message at a time. Is there any way to configure via annotations or in weblogic server settings ?
Any help would be really appreciated...
Thank you,
K.I'm not aware of any way to configure the max pool size via annotations, you might try posting to the EJB newsgroup (please post back the answer). Of course you can set the size via an EJB descriptor, as per the MDB chapter of the Performance and Tuning guide in the edocs.
By the way, if you have ordered message processing requirements, I highly recommend taking a look at the WebLogic JMS "Unit-of-Order" (UOO) feature as per the UOO chapter of the JMS programmer's guide. For a variety of reasons, the UOO features is often, by far, the best option for handling such requirements. If this feature applies to your use case, then there would be no need to force single threaded message processing in some sort of manual fashion (the feature enforces this for you).
Tom -
Hi,
I have an EAR file thai includes an EJB 3.0 module with a MDB. I use a Queue.
This is my code,
@Resource(mappedName = "jms/NotificationQueue")
private Queue notificationQueue;
@Resource(mappedName = "jms/NotificationQueueFactory")
private ConnectionFactory notificationQueueFactory;
public Customer update(Customer customer){
Customer updated = em.merge(customer);
try {
sendJMSMessageToNotificationQueue(updated);
} catch (JMSException ex) {
Logger.getLogger(CustomerSessionBean.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Customer updated in CustomerSessionBean!");
return updated;
private Message createJMSMessageForjmsNotificationQueue(Session session, Object messageData) throws JMSException
//Modified to use ObjectMessage instead
ObjectMessage tm = session.createObjectMessage();
tm.setObject((Serializable) messageData);
return tm;
private void sendJMSMessageToNotificationQueue(Object messageData) throws JMSException
Connection connection = null;
Session session = null;
try
connection = notificationQueueFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(notificationQueue);
messageProducer.send(createJMSMessageForjmsNotificationQueue(session, messageData));
finally
if (session != null)
try
session.close();
catch (JMSException e)
Logger.getLogger(this.getClass().getName()).log(Level.WARNING, "Cannot close session", e);
if (connection != null)
connection.close();
layed inside a stateless EJB 3.0.
And the MDB looks as follow,
@MessageDriven(mappedName = "jms/NotificationQueue", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
public class NotificationBean implements MessageListener {
public NotificationBean() {
public void onMessage(Message message)
try
Object msgObj = ((ObjectMessage)message).getObject();
if (msgObj != null)
Customer customer = (Customer)msgObj;
System.out.println("Customer with the following details has been updated:");
StringBuilder sb = new StringBuilder();
sb.append("Customer ID=");
sb.append(customer.getCustomerId());
sb.append(", ");
sb.append("Name=");
sb.append(customer.getName());
sb.append(", ");
sb.append("Email=");
sb.append(customer.getEmail());
System.out.println(sb.toString());
catch (JMSException ex)
Logger.getLogger(NotificationBean.class.getName()).log(Level.SEVERE, null, ex);
I have configured both "jms/NotificationQueue" and "jms/NotificationQueueFactory" inside OC4J server.
But when I try to deploy the EAR file, the server gives me the following error,
Operation failed with error: No destination location set for message-driven bean NotificationBean
How must I do to let the EAR file be deployed?
Thanks in advance
JoseMingzhuang
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 -
How to define transaction semantics for JMS Queues
Hi,
My scenario in Oracle Fusion Middleware 11gR3, SOA Suite, IDE: JDeveloper 11g is as follows:
First). receive a message from QueueA, Second). Using the message, call a serviceABC and send the same message into QueueB.
I created a syn-BPEL, configured two JMS Adapters(for accessing Queue A & B) and one webservice binding for calling serviceABC(Proxy service). Note: I created the two queues and a connection factory under JMS System Module. As two different external systems have to access QueueA and QueueB.
Now, when I execute the BPEL and ServiceABC gets faulted, the message is gettings consumed from QueueA and the same message is getting produced in QueueB.
My goal is to define a transaction semantics for my composite(syn-BPEL), such that, when ServiceABC or producing the message in QueueB fails. I retain the message in QueueA(basically, rolling back the message).
Options tried so far: 1). Created a scope for the three operations and added a compensationhandler to it and .2). XA Connection Factory is Enabled. Result: no luck:( still message from QueueA is getting consumed where as per my goal it should get rolled-back.
Please suggest your approach, I'll try out and post the outcome back.Whats your architecture? Are you running your app on an application server? If so, are you in a servlet or EJB? You should be able to get the application server to manage your transactions for you in that case e.g. wrap all the JMS calls in an stateless session bean and give it Required in its transaction attribute of deployment descriptor.
If you're not on an application server, you need to get a transaction manager, either by putting your code in an app server ( with JBoss you can use its transaction manager without necessarily having to use EJBs or Servlets, but thats not tested as thoroughly as the container managed transactions, and you will have to write some of the transaction code yourself ) or using a stand alone one. -
Login Module configuration for soap adapter ?
Hi Guys,
I have configured XISOAPAdapter for client certificate Authentication and i have created 1443 as the HTTPS port on the ABAP stack and defined this port in the instance profile.
Under SSL provider i have selected 50101 as the HTTPS port and the user mapping to the certificate works fine and i was able to login directly.
https://host:50101/XISOAPAdapter/MessageServlet - I was able to login with the user mapping to certifcate.
but when i try https://host:1443/XISOAPAdapter/MessageServlet - it is asking for the basic password authentication and the automatic login with the certifcate is not working. Our customer will be using this url to send messages to soap adapter.
under policy configurations for XISOAPAdapter, i have defined only clientcertificateloginmodule and define the rule as Rule1.getUserFrom=wholecert.
any help or suggestions would be appreciated.
Thanks,
SriniHi,
We also experienced that limitation when a vendor is connecting to our XI SOAP Sender Adapter. It is asking for basic username/password. What we did was to create a Generic XI user with a password on it and use SSL authentication at the same time. Our Scenario was PI --> XI --> SAP R3, with the PI system using an HTTP RFC destination with a Basic Logon and Active SSL option to connect to the same system as yours https://host:portnumber/XISOAPAdapter/MessageServlet
Let me know if this helped...
Regards, -
Mbean that listen for jms queue messages
Hi to all,
I must use a Jmx notification listener architecture to trap when a new message arrives (i must also handle the message content) in a weblogic jms queue.
Do you know which mbean could help me to observe the new ariving message?
In the javadocs i cant' find any useful mbean to do that..
ThanksHi to all,
I must use a Jmx notification listener architecture to trap when a new message arrives (i must also handle the message content) in a weblogic jms queue.
Do you know which mbean could help me to observe the new ariving message?
In the javadocs i cant' find any useful mbean to do that..
Thanks -
How to configure for GPlus Adapter with SAP Phone and SAP CRM
Hi All Basis Adm,
Please consider as an urgent basis i need the information that how to configure GPlus Adapter with SAP Phone and SAP CRM . My server is CRM 5.0 (kernel 7) with Oracle Database. This information is require to connect Webclient to Sap Phone with GPlus Adapter (Genesys Adapter 7.1). If u have any document regarding mentioned above than that will be acceptable.
Regds,
GovindaHi Prasad,
In you case, it's a file to file scenario.
Go thro' this link for a solution:-
/people/venkat.donela/blog/2005/03/02/introduction-to-simplefile-xi-filescenario-and-complete-walk-through-for-starterspart1
/people/venkat.donela/blog/2005/03/03/introduction-to-simple-file-xi-filescenario-and-complete-walk-through-for-starterspart2
Regards.
Praveen -
Getting jndi name for jms queue via jmx?
All,
I'm trying to write a utility that will do a 9.2-style message export against 8.1 I think I have it all figured out except that I don't know how to get the jndi name of a queue or topic via jmx. I'm using jmx to find queues and subscriptions that have messages waiting, then trying to connect to them to siphon off the messages. I can't just browse jndi for any queue I find because I also want to access the durable subscriptions, for which I need the client and subscriptions ids. Is there a way to map from the jms destination runtime mbean to the jndi name? The getDestination() method isn't supported (throws an exception.)
thanksHi John,
You can get destination JNDI names by looking up their value in the JMX configuration mbeans rather than the runtime mbeans. The client-id and subscription-name are available on the JMSDurableSubscriberRuntime mbean.
Regards,
Tom -
Dynamic port configured for FILE adapter is not working
Hi,
I have a simple dynamic port in an orchestration that writes a file to a file location. Here is the configuration
================
FilePort(Microsoft.XLANGs.BaseTypes.Address) = "FILE://c:\\TestFolder\\Out";
FilePort(Microsoft.XLANGs.BaseTypes.TransportType) = "FILE";
================
When I run this orchestration, the dynamic port does not write the file to the folder, however I does not show any error either. It is always in "Ready to Run" state where the message is "Queued Awaiting".
I tried all sorts of combinations like FILE:// FILE:\\ File: file:// file:\\ etc... and also without the moniker, just c:\.... I get the same problem.
when I use a static port(subscribed to the same message) it works fine. When I use a static port ALONGWITH this dynamic port then both works fine !!! I receive 2 files.
but when I use only dynamic port it does not work!!
Anybody knows how to solve it.
THANKS IN AVANCE
PLEASE HELP
SuryaIt could be becasue you 're not passing in the file name, Try something like this..
SndPort_Dynamic(Microsoft.XLANGs.BaseTypes.Address)=@"file://C:\Test\Try\Out\Test1.xml";
But even when you don't pass the file name, i was expecting the erro to be like:
The FILE send adapter cannot open file C:\TestFolder\Out\ for writing.
Details: The system cannot find the path specified.
But try with File Name and restart the host instance after the change.
Or use somehting like this:
FilePort(Microsoft.XLANGs.BaseTypes.Address)=@"file://C:\Test\Try\Out\\%MessageID%.xml";
FilePort(Microsoft.XLANGs.BaseTypes.TransportType) = "File";
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful.
Maybe you are looking for
-
Cash positions shows the values of the liquidity forecast a few days later?
Regarding transaction FF7A/B: The Liquidity forecast shows the future receivable and payable based on the payment terms (due date) of the AR and AP invoices on a certain day. The amount should added to (in case of receivables) or subtracted from the
-
Hello, the listener on the second node doesn't use its endpoint-Entries and doesn't register the database or shows the running ASM-Instanz. No connection is possible on that node. In Log of Listeners always: TNS-12502: TNS:listener received no CONNEC
-
Having installation rollback issues with PSE 9?
Mr. Ankush Ved helped to solve my PSE 9 installation issues in under 30 mins! Well done Ankush. There was a cache file conflict that needed resolution. I recommend you contact Ankush via private message here, provide him with your email addres
-
Hi, I have purchased a 10USD credit for Friendcaller app. My receipt No.176037635953Friday, August 16, 2012. Please check my receipt as I have not received the credit on my account on friendcaller app. Thanks
-
Can a HTML form send data to two servlets?
I would like to know if an HTML Form can send data to two servlets, I guess I am askin is that can the parameters be passed to two ACTION attributes??