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

  • Correlation for JMS Queue

    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,
    Monika

    Hi,
    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

  • HT2404 my hard drive crashed and nothing recoverable.  Apple 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?

    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,
    BM

    In 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

  • How to configure a JMS Queue

    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
    Jose

    Mingzhuang
    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,
    Srini

    Hi,
    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..
              Thanks

    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..
              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,
    Govinda

    Hi 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.)
    thanks

    Hi 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
    Surya

    It 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