OSB JMS Consumer

Hi Friends,
I have a requirement where I need to develop a OSB service which will:
1. Poll Message from JMS (A specific schema element)
2. Write this message to DB using routing (JCA adapter, send schema as is to business service)
I am able to poll JMS message in OSB, however while routing it to business service that will write to DB using JCA adapter I am facing following error.
OSB Replace action failed updating variable "body": Error parsing XML: {err}FORG0005: expected exactly one item, got 0 items
Although I can print the JMS message by "$body/." meaning I have an element.
Could you please shade some light on this?
Thanks,
Sachin

Are you mediator for schema transformation? This error is faced mostly when source request schema fails to map destination schema (DB interface).

Similar Messages

  • OSB jms clustering - load balancing seems to be not working

    Hi All,
    I have one admin server and two managed servers running ( one of these managed server is running in the remote linux machine) in a cluster
    I have connectionfactory created with load balance enabled with round robin
    and server affinity is disabled
    I have queue created as uniformly distributed Q
    I have a proxy service with load balancing as roundrobin and endpoint URL as below
    jms://rdoelapp001011:61703,rdoelapp001013:61703/synergyConnectionFactory1/MM_gridQ0
    If I execute this proxy sending messages it always go to one server only. There is no message going to the other server.
    If I shutdown the server that receives messages then the other server is receiving messages. Seems like fail-over is working but not the load-balancing
    There is one point may be worth mentioning here is, from the admin console if I look at the servers for the clusters it has below information
    Name      State      Drop-out Frequency      Remote Groups Discovered      Local Group Leader      Total Groups      Discovered Group Leaders      Groups      Primary      
    synergyOSBServer1     RUNNING     Never     0     synergyOSBServer1     1     synergyOSBServer1     *{synergyOSBServer1}*     0          
    synergyOSBServer2     RUNNING     Never     0     synergyOSBServer1     1     synergyOSBServer1     *{synergyOSBServer1, synergyOSBServer2}* 0
    one server has groups as {synergYOSBServer1} instead of {synergyOSBServer1, synergyOSBServer2}. Does that look correct?
    here is my jms xml file
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
    *<connection-factory name="synergyConnectionFactory1">*
    *<sub-deployment-name>synergySubDeploy1</sub-deployment-name>*
    *<default-targeting-enabled>false</default-targeting-enabled>*
    *<jndi-name>synergyConnectionFactory1</jndi-name>*
    *<client-params>*
    *<client-id-policy>Restricted</client-id-policy>*
    *<subscription-sharing-policy>Exclusive</subscription-sharing-policy>*
    *<messages-maximum>10</messages-maximum>*
    *</client-params>*
    *<transaction-params>*
    *<xa-connection-factory-enabled>false</xa-connection-factory-enabled>*
    *</transaction-params>*
    *<load-balancing-params>*
    *<load-balancing-enabled>true</load-balancing-enabled>*
    *<server-affinity-enabled>false</server-affinity-enabled>*
    *</load-balancing-params>*
    *<security-params>*
    *<attach-jmsx-user-id>false</attach-jmsx-user-id>*
    *</security-params>*
    *</connection-factory>*
    <uniform-distributed-queue name="errorQ">
    <sub-deployment-name>synergySubDeploy1</sub-deployment-name>
    <default-targeting-enabled>false</default-targeting-enabled>
    <jndi-name>errorQ</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>-1</forward-delay>
    <reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>
    </uniform-distributed-queue>
    <uniform-distributed-queue name="undlvQ">
    <sub-deployment-name>synergySubDeploy1</sub-deployment-name>
    <default-targeting-enabled>false</default-targeting-enabled>
    <jndi-name>undlvQ</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>-1</forward-delay>
    <reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>
    </uniform-distributed-queue>
    *<uniform-distributed-queue name="MM_gridQ0">*
    *<sub-deployment-name>synergySubDeploy1</sub-deployment-name>*
    *<default-targeting-enabled>false</default-targeting-enabled>*
    *<jndi-name>MM_gridQ0</jndi-name>*
    *<load-balancing-policy>Round-Robin</load-balancing-policy>*
    *<forward-delay>5</forward-delay>*
    *<reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>*
    *</uniform-distributed-queue>*
    <saf-imported-destinations name="synergySAFImportedDest1">
    <sub-deployment-name>synergySubDeploy1</sub-deployment-name>
    <default-targeting-enabled>false</default-targeting-enabled>
    <saf-queue name="gridQ0">
    <remote-jndi-name>MB_gridQ0</remote-jndi-name>
    <local-jndi-name>gridQ0</local-jndi-name>
    <non-persistent-qos>At-Least-Once</non-persistent-qos>
    <time-to-live-default>0</time-to-live-default>
    <use-saf-time-to-live-default>false</use-saf-time-to-live-default>
    <unit-of-order-routing>Hash</unit-of-order-routing>
    </saf-queue>
    <jndi-prefix>MB_</jndi-prefix>
    <saf-remote-context>synergySAFContext1</saf-remote-context>
    <saf-error-handling>synergySAFErrorHndlr1</saf-error-handling>
    <time-to-live-default>0</time-to-live-default>
    <use-saf-time-to-live-default>false</use-saf-time-to-live-default>
    <unit-of-order-routing>Hash</unit-of-order-routing>
    </saf-imported-destinations>
    <saf-remote-context name="synergySAFContext1">
    <saf-login-context>
    <loginURL>t3://rdoelapp001013:7001</loginURL>
    <username>weblogic</username>
    <password-encrypted>{AES}z9VY/K4M7ItAr2Vedvhx+j9htR/HkbY2LRh1ED+Cz5Y=</password-encrypted>
    </saf-login-context>
    <compression-threshold>2147483647</compression-threshold>
    </saf-remote-context>
    <saf-error-handling name="synergySAFErrorHndlr1">
    <policy>Log</policy>
    <log-format xsi:nil="true"></log-format>
    <saf-error-destination xsi:nil="true"></saf-error-destination>
    </saf-error-handling>
    </weblogic-jms>
    Any help will be greatly appriciated
    Edited by: 818591 on Feb 16, 2011 11:28 AM

    I am not getting you here "the right approach is to make OSB run on the man server cluster and not on admin server. "
    I have a jms proxy service that I created from admin console
    And also I have gone thru the step 5 in the link below
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/deploy/config.html#wp1524235
    If I am not wrong, the proxy service endpoint URI determines where it is pointing to. If it is a cluster environment, it should point to a clustered address
    My proxy has below endpoint URI
    jms://rdoelapp001011:61703,rdoelapp001013:61703/synergyConnectionFactory1/MM_gridQ0
    and rdoelapp001011:61703,rdoelapp001013:61703 is my cluster address
    As per your suggestion "To fix your problem, *make osb to run on the cluster* and specify the same URL for the jms proxy service"
    Could you please provide some instruction how would I "make osb jms proxy service to run in a cluster"
    As a note, I have Q defined as a distributed Q and connection factory targets to the cluster. UDQ also targtes to the cluster.
    Just for a testing I have created another manged server running local to the machine where my admin server is running
    And I created a proxy by following steps as I mentioned above and with endpoint URI as below
    jms://rdoelapp001011:61703,rdoelapp001013:61703,*rdoelapp001011:61700*/synergyConnectionFactory1/MM_gridQ0
    where the new address of my cluster is rdoelapp001011:61703,rdoelapp001013:61703,rdoelapp001011:61700
    It did create consumers in both the managed servers in the cluster that are running locally, but no consumers in the remote managed server.
    So I am kind of leaning towards thinking that there is some incorrect setup for the remote managed server and may be admin server is not able to communicate to the remote server for some reason but not sure about it..
    As a note the cluster is setup to communicate using "unicast" channel
    and I created a channel in each manged server with the same name
    here is the cluster configuration
    <name>synergyCluster1</name>
    <cluster-address>rdoelapp001011:61703,rdoelapp001013:61703,rdoelapp001011:61700</cluster-address>
    <default-load-algorithm>round-robin</default-load-algorithm>
    *<cluster-messaging-mode>unicast</cluster-messaging-mode>*
    *<cluster-broadcast-channel>synergyChannel1</cluster-broadcast-channel>*
    *<number-of-servers-in-cluster-address>3</number-of-servers-in-cluster-address>*
    </cluster>
    here are the twoOSBserver configuration
    <server>
    <name>synergyOSBServer1</name>
    <machine xsi:nil="true"></machine>
    <listen-port>61703</listen-port>
    <cluster>synergyCluster1</cluster>
    <web-server>
    <web-server-log>
    <number-of-files-limited>false</number-of-files-limited>
    </web-server-log>
    </web-server>
    <server-debug>
    <debug-scope>
    <name>weblogic.jms.saf</name>
    <enabled>true</enabled>
    </debug-scope>
    <debug-jmssaf>true</debug-jmssaf>
    <debug-saf-sending-agent>true</debug-saf-sending-agent>
    </server-debug>
    <listen-address>localhost</listen-address>
    <network-access-point>
    *<name>synergyChannel1</name>*
    *<protocol>cluster-broadcast</protocol>*
    *<listen-address>localhost</listen-address>*
    *<listen-port>61702</listen-port>*
    <http-enabled-for-this-protocol>true</http-enabled-for-this-protocol>
    <tunneling-enabled>false</tunneling-enabled>
    *<outbound-enabled>true</outbound-enabled>*
    *<enabled>true</enabled>*
    <two-way-ssl-enabled>false</two-way-ssl-enabled>
    <client-certificate-enforced>false</client-certificate-enforced>
    </network-access-point>
    <jta-migratable-target>
    <user-preferred-server>synergyOSBServer1</user-preferred-server>
    <cluster>synergyCluster1</cluster>
    </jta-migratable-target>
    </server>
    <server>
    <name>synergyOSBServer2</name>
    <ssl>
    <enabled>false</enabled>
    </ssl>
    <machine xsi:nil="true"></machine>
    <listen-port>61703</listen-port>
    <listen-port-enabled>true</listen-port-enabled>
    <cluster>synergyCluster1</cluster>
    <web-server>
    <web-server-log>
    <number-of-files-limited>false</number-of-files-limited>
    </web-server-log>
    </web-server>
    <listen-address>rdoelapp001013</listen-address>
    <network-access-point>
    *<name>synergyChannel1</name>*
    *<protocol>cluster-broadcast</protocol>*
    *<listen-address>rdoelapp001013</listen-address>*
    *<listen-port>61702</listen-port>*
    <http-enabled-for-this-protocol>true</http-enabled-for-this-protocol>
    <tunneling-enabled>false</tunneling-enabled>
    *<outbound-enabled>true</outbound-enabled>*
    *<enabled>true</enabled>*
    <two-way-ssl-enabled>false</two-way-ssl-enabled>
    <client-certificate-enforced>false</client-certificate-enforced>
    </network-access-point>
    <java-compiler>javac</java-compiler>
    <jta-migratable-target>
    <user-preferred-server>synergyOSBServer2</user-preferred-server>
    <cluster>synergyCluster1</cluster>
    </jta-migratable-target>
    <client-cert-proxy-enabled>false</client-cert-proxy-enabled>
    </server>
    <server>
    Edited by: 818591 on Feb 18, 2011 11:26 AM

  • OSB JMS Message Selector / Filter

    HTTP PS and JMS BS puts messages on WLS JMS Queue. We need consume some messages from the Queue based on payload content since interfaces for other messages may go Live in next year.
    JMS Message look like
    <Schools>
    <School>
    <Id></Id>
    <ServiceArea>100</ServiceArea>
    <Type></Type>
    </School>
    </Schools>
    We need to consume messages where ServiceArea = 100.
    Can you advise how to consume messages where ServiceArea = 100 ?
    I would appreciate your help.
    Thanks in advance.
    Kiran
    Edited by: 844345 on Mar 14, 2011 5:02 PM

    JMS message selector on message payload fields is not recommended and it will have performance implications. Instead you can design this in either of the 2 ways below
    1 - Modify the HTTP PS which publishes the message to set the JMSCorrerlationID header ( or any othe custom JMS property) with the value of Service Area. You can achieve this using Transport Header action in HTTP PS route node.
    For the JMS consumer proxy set a message selector on the JMS transport page to filter only messages belonging to this service area.
    2. Let the HTTP PS continue publishing all messages to the output queue. Have a new component in your design called a 'disaptcher' which reads all the message from the output queue, check service area tag and route messages belonging to particular area to an area specific queue. Have your jms consumer specific for service area 100 to listen to only this Area specific queue.

  • JMS Consumer error

    I am having an JMS Consumer in a esb service to trigger a bpel process.However the consumer gives the following error when invoked
    ORABPEL-11206
    Invalid input to translator.
    The Inbound Opaque translator recieved invalid input value : null for argument : InputStream/Result.
    This is because the translator was invoked with invalid arguments. Contact oracle support if error is not fixable.
         at oracle.tip.pc.services.translation.xlators.opaque.OpaqueTranslator.translateFromNative(OpaqueTranslator.java:153)
         at oracle.tip.adapter.jms.inbound.JmsConsumer.translateFromNative(JmsConsumer.java:649)
         at oracle.tip.adapter.jms.inbound.JmsConsumer.sendInboundMessage(JmsConsumer.java:552)
         at oracle.tip.adapter.jms.inbound.JmsConsumer.send(JmsConsumer.java:388)
         at oracle.tip.adapter.jms.inbound.JmsConsumer.run(JmsConsumer.java:308)
         at oracle.j2ee.connector.work.WorkWrapper.runTargetWork(WorkWrapper.java:242)
         at oracle.j2ee.connector.work.WorkWrapper.doWork(WorkWrapper.java:215)
         at oracle.j2ee.connector.work.WorkWrapper.run(WorkWrapper.java:190)
         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:825)
         at java.lang.Thread.run(Thread.java:595)
    I am using opaque schema element as the payload may vary.
    Can you pls help me resolve this issue.

    Hi,
    Thanks a lot for your response. The oc4j-ra.xml is located in C:\product\10.1.3.1\OracleAS_1\j2ee\home\application-deployments\default\JmsAdapter
    Entry is :
    <connector-factory location="TestRequestQueueJNDI" connector-name="Jms Adapter">
              <config-property name="connectionFactoryLocation" value="TestJMSCF"/>
              <config-property name="factoryProperties" value="java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory; java.naming.provider.url=t3://hostName:port; java.naming.security.principal=weblogic;java.naming.security.credentials=weblogic"/>
              <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
              <config-property name="isTopic" value="false"/>
              <config-property name="isTransacted" value="false"/>
              <config-property name="username" value="weblogic"/>
              <config-property name="password" value="weblogic"/>
              <connection-pooling use="none">
              </connection-pooling>
              <security-config use="none">
              </security-config>
         </connector-factory>
    Thanks
    Chandra

  • Wht will happen if  JMS Consumer thread gets a TMF Error

    Hi
    If anybody knows the implementation of various providers of JMS how they will behave , when a TMF error [ Invalid transaction / Obsolete transaction] is thrown to the Consumer thread.
    Consider this as the scenario.
    Consumer Thread starts it transaction
    does a fetch on the database
    Getting TMF error Invalid transaction for a Active transaction.
    ie
    Say curently Consumer thread is having 892346 as transaction id.
    but TMF throws Invalid trnsaction for transaction 892333 but it's thorwn to the JMS Consumer thread when it's under the transaction 892346.
    SO error occurs Consume rthread will throw it to the application which causes abnormal termination.
    Have anyone came across this scenario ? If so U r welcome.
    Also anyone have any idea of JMS venodrs how they ll behave in this scenario ?

    Hi
    If anybody knows the implementation of various providers of JMS how they will behave , when a TMF error [ Invalid transaction / Obsolete transaction] is thrown to the Consumer thread.
    Consider this as the scenario.
    Consumer Thread starts it transaction
    does a fetch on the database
    Getting TMF error Invalid transaction for a Active transaction.
    ie
    Say curently Consumer thread is having 892346 as transaction id.
    but TMF throws Invalid trnsaction for transaction 892333 but it's thorwn to the JMS Consumer thread when it's under the transaction 892346.
    SO error occurs Consume rthread will throw it to the application which causes abnormal termination.
    Have anyone came across this scenario ? If so U r welcome.
    Also anyone have any idea of JMS venodrs how they ll behave in this scenario ?

  • Asynchronous jms consumer

    Hi all
    I want to create an asynchronous jms consumer.
    The problem is that i do not want create a message driven bean.
    I have a session bean that dynamically read from data base the name of the queue listened.
    So i wonder if exists a way for implementing a asynchronous jms consumer.
    Please help!!!
    Regards

    Yes there is - it's called a Listener and needs to run in a separate thread. If you're already using EJB why don't you want to use MDBs?

  • OSB: JMS Transport URL for cluster

    Hi,
    I am trying to configure OSB JMS Transport business service. I have 3 JMS servers in my cluster and I am trying to understand how to configure my business service URI. Can I use all three uri's in my business service? If we configure multiple URI's how will they be used? The load balanced algorithm(round robin) we specify is for these uris?
    Thank you
    Matt

    maybe this one helps a bit :
    https://blogs.oracle.com/MarkSmith/entry/osb_and_jms_business_service_c

  • OSB JMS Transport configuration

    I have a need to pass a reply-to destination from one external process (the producer) to a second external process (the consumer), with the design supporting flexibility for changing destinations within the OSB pipeline at a future time. To enable this functionality, the following jms transport was designed on the OSB 10gR3:
    external producer--->|---q1--->jmsTransProxy---->q2---|--->external consumer
    The jmsTransProxy is configured with request/response text message types, jms protocol, Get All Headers yes, Is Response Required enabled, and Response Correlation Pattern CorrelationID.
    In the Request pipeline of jmsTransProxy, a single stage is configured to Pass All Headers through Pipeline.
    In the Response pipeline of jmsTransProxy, a single stage is configured to Pass All Headers through Pipeline.
    When the external producer sets the JMSReplyTo header, I expected that this header would be passed from q1 to q2 so that the external consumer would receive it. The message payload is correctly received by the external consumer along with the JMSCorrelationID, but not the JMSReplyTo header information. By examining the logs, I can see the header information is received correctly in the request pipeline, but is not available from q2.
    What is the correct solution to have the JMSReplyTo information pass through to the external consumer?

    Thank-you for your tips.
    I have revised the pipeline as you indicated and more of the headers pass through, but not the JMSReplyTo header. Because the user headers are passed through, I can use get/setObjectProperty on the message to realize the functionality required (though this is a workaround).
    current configuration:
    external producer--->q1--->jmsProxy--->jmsBusiness--->q2---> external consumer
    jmsProxy parameters:
    service type: messaging service
    request message type: text
    response message type: none
    protocol: jms
    endpoint uri: q1
    get all headers: yes
    destination type: queue
    is reposnse required: disabled
    etc.
    jmsProxy request pipeline:
    publish to [ jmsBusiness ]
    request actions: set transport headers for [ outbound request ] (pass all headers)
    jmsBusiness parameters:
    service type: messaging service
    request message type: text
    response message type: none
    protocol: jms
    endpoint uri: q2
    destination type: queue
    is reposnse required: disabled
    etc.

  • OSB JMS Proxy XA Transaction Rollback not occuring to queue

    Hi All
    We are dequeuing a message from JMS queue via an XA connection factory and then calling a web service. If any error occurs in the web service we catch the error handler, log and notify it and want to send this message back to the queue for retrial (The retry settings are defined at the Queue Level from weblogic console).
    Problem is rollback is not occurring, we have tried the below:
    1) There is no OSB reply with either success or failure in the error handler (This should have done the trick)
    2) We have also tried addiing an explicit Raise Error (Uncaught Error) to roll the message back, but its not working.
    This rollback is not occurring because JMS Resource is XA and web service call is NON XA, hence the entire message flow becomes NON XA. Is this understanding correct?
    How can we fix this? Please help

    Hi atheek1
    Thanks for the reply, it worked. Before I mark this question as answered, pls. answer the below queries (Thanks a lot!)
    1) Well, i just ticked transaction required and same transaction for response and it started working. I did not add routing options like you mentioned to QOS Exactly Once. Its working without it fine. So, my questions is what is the use of adding this QOS to exactly once. Is it mandatory?
    2) I have a couple of OSB services in which rollback is working automatically (XA JMS to JCA FTP Adapter) and (XA JMS to JCA DB adapter XA data source), here rollback works automatically. I dont have to tick transaction required. So my question is, when an XA based connection factory picks a message from the queue, a transaction is started at the container level. So why tick transaction required at the message flow level, when the weblogic has already initiated a transaction. Since you said that HTTP transport commits a transaction even if 500 or 404 occurs, it makes sense to tick is transaction required and same transaction for response in OSB proxy service. But the remaining scenarios work without these options. Hence will it be wise to say that these settings are only required for HTTP transport coz of the way it behaves (commits 404 and 500).
    Thanks

  • [OSB]JMS Business Service sending message with a given JMSCorrelationID

    Hi,
    Is it possible to send jms message with a given JMSCorrelationID in OSB? Just like use javax.jms.Message.setJMSCorrelationID() before sending.
    If yes, how to change the payload accordingly?
    Any help? Thanks in advance.

    Try Transport Headers action in request action route node (Add Action >> Communication >> Transport Headers).
    Then click on add headers and in name drop down select the JMSCorrelationID. In set Headers to expression select the value you want to put for JMSCorrelationID.

  • OSB JMS resources in a cluster

    Hi,
    I am creating an OSB cluster with multiple managed servers using a script. I would like to know what resources (JMS) are needed and how they should be targeted so that reporting works.
    Best regards
    Dimo

    I think I have found out what is required by the OSB:
    1. DataSource deployed in the cluster AND on the admin server for the reporting (wlsbjmsrpDataSource), scripts to drop and create the tables are located in ${osb_home}/dbscripts/oracle/
    2. JMS Module containing:
    2.1. 3 Connection factories:weblogic.wlsb.jms.transporttask.QueueConnectionFactory, wli.reporting.jmsprovider.XAConnectionFactory, wli.reporting.jmsprovider.NonXAConnectionFactory
    2.2. 8 Queues - QueueIn, wli.reporting.jmsprovider.queue, wli.reporting.jmsprovider_error.queue, wli.reporting.purge.queue, wlsb.internal.transport.task.queue.email, wlsb.internal.transport.task.queue.file, wlsb.internal.transport.task.queue.ftp, wlsb.internal.transport.task.queue.sftp
    I am not sure if that list is complete as it has been a bit of reverse engineering to find it out...

  • OSB JMS proxy.  Determine when processing is complete

    Basically, I need visibility into how many rows the JMS adapter is processing and when it is complete.
    I am doing a simple request\response proxy where the response is a second queue. Basically, it just moves messages from one queue to another.
    In our case, the source queue will be paused until a specific point in time where we resume it and let OSB process all the messages. I need to know when the process is complete. Anything I put in the pipeline is executed for each message.
    Any ideas?
    Thanks,
    Sam

    You don't have to check for every message. Why don't check once a minute or so? Alternatively, you can enqueue a special "finished" message and check for it in your proxy.
    Or you can try to describe what you need in more details. ;-)

  • Persisting a user id across an OSB JMS Application

    I have an application that user's log in to. After logging in they call an OSB service which puts a message on a jms queue using an OSB business service. I have an OSB proxy service that is listening on the queue. It picks up the message off the queue and calls another service.  I want to be able to pass along the userid from the original cookie through the jms flow until my end point where a database insert is made.  Does anyone have any suggestions how best to persist the userid through the jms busness and proxy services.  I've seen where you can pass the caller's subject in the transport detail section of the jms business service definition, but I'm not sure if that will work and how the proxy could get a hold of it on the other end.  Any tips would be appreciated.
    thanks,
    Mike

    I found the answer from a collegue. Here's one solution:  Oracle Fusion Middleware Security: Identity Propagation using JMS Transport with Oracle Server Bus 11gR1 PS2

  • OSB JMS Proxy

    Hi ,
    can i use a Proxy service with out a Business service to write a messge onto a queue.I jus tried a sample on my local and i am able to write a message on to a queue using a proxy service .
    Flow :-
    PS1(http) using publish action invokes -> PS2 (jms uri config)
    I am clue less how this is working.when the PS2 transport has been defined as jms ,how am i able to invoke it from PS1 using publish action?
    My understanding of OSB is ProxyService is for reading message from queue and Business service is for writing or publishing a message onto a queue.
    can some body help me udnerstand how this is working.

    Basically, you're right when it comes to the difference between business and proxy services. Also, you're not the only confused when routing data from http-based proxy to JMS proxy.
    We touched the topic earlier:
    Re: Retry mechanism for HTTP Transport in OSB
    The point is your layout (HTTP PS -> JMS PS) is sound and works even without intermediate business service.

  • OSB Jms Messaging Service

    Hi,
    i want to pass some kind of object argument using jms ObjectMessage and receive it from OSB proxy service.
    I create proxy service as messaging service. but i have no idea with Message Type.
    What kind of message type i should use to read java Object message?
    Is it possible ?
    actually, i am using OSB proxy service as Message receiver.
    then when i receive message, i need to read message from soap body and pass as arguments in business service.
    Is it possible to achieve this?
    With Regards,
    WP

    Hi Wai Phyo,
    waiphyo wrote:
    yeah that is true.
    but i still have no idea how to wrap xml into soap body.
    that's easy there are several ways for doing it, that's one of the easiest:
    http://static.springsource.org/spring-ws/sites/1.5/reference/html/client.html
    waiphyo wrote:
    and how to make message transformation in proxy services layer.
    to transform messages you have to use a mix and match of OSB "Message Processing" actions
    http://download.oracle.com/docs/cd/E13171_01/alsb/docs30/userguide/modelingmessageflow.html#wp1070403
    and either XQuery or XSLT or both called within your proxy actions.
    Regards,
    Tony

Maybe you are looking for