OSB -11g - Calling JMS Proxy Service in a stage

Hi,
When we createa JMS based proxy service, the proxy service keeps on polling the JMS Queue for any new messages arriving in the queue. But I do not want the proxy service to keep on polling the Queue. Instead I want to call the JMS Proxy Service in any stage (of any other Proxy Service) using a service callout. It means that I do not want the Queue to be polled always, instead the queue should be polled only when this JMS Proxy Service is invoked.
Is it possible to do? If so, how?
Thanks,
Sanjay

Hi Anuj,
Following is my requirement:
The producer wants to interact with us using Web Services. The input payload has some more values (username and password) apart from the HL7 data (base64 encoded) itself. I have to receive the input payload, authenticate the call and convert the HL7 encoded message into an XML and send it to the consumer.
What have I done till now:
1) I have created two Proxy Services PS1 and PS2
2) Proxy Service (PS1) will be invoked by the producer.
3) Then I get the username, password and data from the payload
4) Populate the username and password in the SOAP Header and HL7 data in SOAP Body
5) Call PS2 from PS1
6) In PS2 I have configured Message Level Security to authenticate with the username and password
7) After authentication I make a Java Callout to decode the base64 encoded HL7 data
8) I now have written my own HL7 sender (Java code) which wraps the decoded HL7 data with MLLP requirements and then send it to the B2B server using a Socket (TCP connection). I do a Java Callout to this Java class.
9) In B2B I have configured a RTP (Remote Trading Partner) which has a MLLP channel.
10) I created a ADT message document and a ACK document
11) I created two agreements between HTP and RTP (one agreement receives the HL7 data from the TRP using MLLP and another which sends the ACK to the RTP using MLLP channel)
12) In the receiveing agreement I have configured a JMS channel (on the HTP side) becuase of which B2B receives the HL7 Pipe delimited data and translates it and then pushes the XML data into the JMS queue (which needs to be transformed to producer XML)
13) I have also configured a JMS channel for the RTP which I am using in second agreement to get the acknowledgement. Because of this the ACK is placed in a JMS queue.
I need to poll this JMS queue in order to send the ACK back to the producer (which I have to do in the response pipeline of PS2). Hence I wanted to pop the message from the JMS queue in the response pipeline and then send that message.
Please advice if my approach is correct.
Thanks,
Sanjay
Edited by: Sanjay Bharatiya on 17-Mar-2011 12:06 PM

Similar Messages

  • OSB 11g  - lock jms/web-services connection

    Hello!
    I have next configuration:
    ws client <- -> proxy service (soap/http) <- -> osb business service <- one-way ssl -> ws provider (basic authentification)
    jms client <- -> proxy service (soap/jms) <- -^
    Problem:
    If run load test ws client - service work fine, but if in moment this test jms client send message then ws service and jms service have locks by 2 min.
    ThreadStackDump contains:
    "[ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock java.util.Vector@6a692986 BLOCKED
                     java.util.Vector.isEmpty(Vector.java:279)
                     weblogic.net.http.KeepAliveCache.get(KeepAliveCache.java:150)
                     weblogic.net.http.HttpClient.findInCache(HttpClient.java:230)
                     weblogic.net.http.HttpsClient.New(HttpsClient.java:499)
                     weblogic.net.http.HttpsURLConnection.connect(HttpsURLConnection.java:239)Do you have ideas about problem?
    Thanks

    The reason for asking was this type of thread locking issues requires reproducible set-up for further investigation. This type of investigation takes time/effort which might not be possible on Forums. Are you able to reproduce it consistently on other machines?If so if you can send me the reproducer, I can try analysis for you. (if time permits)
    Thanks
    Manoj

  • Can a business service call a proxy service in OSB

    In Oracle service bus, can a business service call a proxy service and if yes , what is the scenario?
    Thanks in advance
    Priya

    Yes a business service can call a proxy service......for example set your PS as http proxy service and set the endpoint url of PS in the business service..... Lets say when you have three service callouts to be done...the third service callout needs to retried in case of any failures, then you may move the third service callout to a new proxy service and use the buisness service for calling it,,, use the BS retry settings for retyring..

  • Report and Alert don't executed in the error handler with a JMS proxy service

    Hi,
    I'm working with OSB 11.1.1.4.0 and I'm facing a problem with the error handler of my JMS proxy service.
    My error handler contains two main elements :
    - a Report action
    - an Alert with a JMS destination defined
    When the business service failed the message remain in the queue. It's the expected behavior.
    The problem is :
    - the report is missing
    - the alert is raised but missing in the JMS destination defined in the Alert setting.
    I've noticed if I add a Reply with Failure or Success, Report and Alert are successfully executed.
    Unfortunately the message don't remain in the JMS queue.
    What can I do in order to have my report/alert done and the JMS transaction rollback in order to keep the message in the queue ?
    I've already met this problem in the past with alsb v3 and my solution was to add Service Callout in the error handler in order to externalize these actions.
    This solution is not convenient and I hope another solution is possible.

    Inventorying workgroups can be difficult, especially when it comes to remote access and network security. Because workgroups are not centrally managed, some of the items discussed in this
    wiki article on preparing your workgroup environment may require you to visit each machine individually.
    For non-domain credentials, you do not use the <systemname>\<user> format, you simply enter the user name. Regarding how to enter the credentials, if you have an account that uses the same username and password on all machines and is an administrator
    on all of those machines, then you can enter that in the All computers credentials page of the wizard. You can also do this if they are different user names. However, if some machines have an account with the same user name, such as Administrator,
    but different passwords on each machine, you will need to use the Manually enter computer names discovery method, and then enter the information for each group or each machine.
    As you can tell, workgroup environments can quickly negate any benefit that the agentless inventory nature of MAP provides.
    Please remember to click "Mark as Answer" on the post that helps you, and to click
    "Unmark as Answer" if a marked post does not actually answer your question. Please
    VOTE as HELPFUL if the post helps you. This can be beneficial to other community members reading the thread.

  • How to get server name and port of OSB server in a proxy service ?

    I need to get the server name and port of the OSB server inside a proxy service. How can I get this?

    You may use java callout for this purpose -
    How to get ServerName and ApplicationName in OSB (ALSB) ?
    Regards,
    Anuj

  • The JMS proxy service unable to route to another Proxy Service

    Hello,
    I have a JMS proxy service. Inside its pipeline, I am routing to another Proxy Service of Service Type "Messaging", protocol: "Local" & Request Message Type: "XML"
    It's printing the message correctly from inside the routing node in the pipeline of JMS proxy. However, it's not invoking the Proxy Service that I am routing to, since I am not seeing the log message that I am trying to print from inside the pipeline of Local Proxy. Could someone please point out the error in my configuration?
    Any help will be greatly appreciated.
    Thanks much,
    Mamta Kansal

    OSB/ALSB use the SOA Suite forum
    SOA Suite

  • OSB example calling multiple business services using a single proxy service???

    Hi,
    I have three business services created using http urls i.e.
    1. LoginBS
    2. GetListBS
    3. LogoutBS
    My requirement is to get a list of names from GetListBS using a single proxy service and to call GetListBS I have to first call LoginBS then GetListBS i.e. after authentication and then finally logout.
    Kindly help with a detailed example for this and I am new to OSB.
    Thanks,
    Vik

    Hi Eric,
    Thanks for the response. We figured that it is possible to call multiple services with Split Join. However, we ran into the issue you described. We had a blocking call and had to wait until each of the services returned a response.
    However, we needed a Async model for our design and felt that this might not be a right fit.
    We are now looking at implementing the publish option with QoS configured as this fits our usecase better. Thanks for the help again.
    Rudraksh

  • Osb proxy service calling other proxy services

    hi
    I'm new to the oracle service bus and i need some help
    i created 3 proxy services and i need to create one proxy service that call the other proxy services and return the output of these proxy services in one response message
    please help me in that problem. it'll be helpful to show me example
    thanks in advanced

    bear in mind that all exchanges amongst services are done by writing /reading the $body variable.
    The easiest way to produce a valid $body is to start from the preexisting $body and use the action
    replace <yourPayloadHere/> in variable $body
    using the option "replace node content"
    If you want to store a response from a service for later reuse:
    assign $body/* to myvariable

  • OSB- Any Soap type Proxy service URL issue.

    Hi,
    There is an issue which i am facing and stuggling with it for sometime :(
    Requirement - Using OSB 11g i had created 12 different services based on WSDLs provided by the client and all of them are working fine.However the client wanted a OSB router service on top of these 12 services which wil search for a string in the input xml and then route it to the required Proxy service (amongst the 12 services developed).
    Problem- I was able to create the router Proxy service which was a Any Soap type of proxy service as i didnot have a WSDL for the router service.The router service is working fine when we test it from the OSB console.
    When We tried to test the flow from SOAPUI (we used the WSDL of one of the 12 webservices developed and modified the uri to the uri of the router service ie. http://hostname:port/router/routerProxy) and it does not work.
    The error returned is ERROR 404 nothing found by this name.
    As The router proxy is a Any Soap kind of service i do not have the option of providing the client with the WSDL.
    I would want to know how to i call this router service from an external source like SOAPUI so that the client is able to hit it.Also what would be the end point uri of this router service ?
    Kindly Help
    Thanks
    Pranav Shah

    Hi anuj,
    Here you have the configuration
    <?xml version="1.0" encoding="UTF-8"?>
    <xml-fragment xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env" xmlns:con="http://www.bea.com/wli/sb/pipeline/config" xmlns:con1="http://www.bea.com/wli/sb/stages/routing/config" xmlns:con2="http://www.bea.com/wli/sb/stages/config" xmlns:con3="http://www.bea.com/wli/sb/stages/transform/config">
    <ser:coreEntry isProxy="true" isEnabled="false" isAutoPublish="false" isTracingEnabled="false">
    <ser:description/>
    <ser:binding type="abstract SOAP" xsi:type="con:AnySoapBindingType" isSoap12="false" xmlns:con="http://www.bea.com/wli/sb/services/bindings/config"/>
    <ser:monitoring isEnabled="false">
    <ser:aggregationInterval>10</ser:aggregationInterval>
    <ser:pipelineMonitoringLevel>Pipeline</ser:pipelineMonitoringLevel>
    </ser:monitoring>
    <ser:reporting>true</ser:reporting>
    <ser:logging isEnabled="true">
    <ser:logLevel>debug</ser:logLevel>
    </ser:logging>
    <ser:sla-alerting isEnabled="true">
    <ser:alertLevel>normal</ser:alertLevel>
    </ser:sla-alerting>
    <ser:pipeline-alerting isEnabled="true">
    <ser:alertLevel>normal</ser:alertLevel>
    </ser:pipeline-alerting>
    <ser:ws-policy>
    <ser:binding-mode>service-policy-bindings</ser:binding-mode>
    <ser:policies/>
    </ser:ws-policy>
    <ser:throttling enabled="false">
    <ser:capacity>0</ser:capacity>
    <ser:maxQueueLength>0</ser:maxQueueLength>
    <ser:timeToLive>0</ser:timeToLive>
    </ser:throttling>
    <ser:messageTracing enabled="false">
    <ser:detailsLevel>Terse</ser:detailsLevel>
    <ser:maxSize>8192</ser:maxSize>
    </ser:messageTracing>
    <ser:pageAttachments isEnabled="false"/>
    <ser:transactions isRequired="false" sameTxForResponse="false"/>
    </ser:coreEntry>
    <ser:endpointConfig>
    <tran:provider-id>http</tran:provider-id>
    <tran:inbound>true</tran:inbound>
    <tran:URI>
    <env:value>/testRouter/test</env:value>
    </tran:URI>
    <tran:inbound-properties/>
    <tran:all-headers>true</tran:all-headers>
    <tran:provider-specific xsi:type="http:HttpEndPointConfiguration" xmlns:http="http://www.bea.com/wli/sb/transports/http">
    <http:inbound-properties/>
    </tran:provider-specific>
    </ser:endpointConfig>
    <ser:router>
    <con:flow>
    <con:route-node name="RouteNode1">
    <con:context/>
    <con:actions>
    <con3:ifThenElse>
    <con2:id>_ActionId-9110389481588294027-8fc6726.12c833ed7e1.-7c90</con2:id>
    <con3:case>
    <con3:condition>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">fn:contains(fn-bea:serialize($body), 'ImsersoSiebelContactInsert')</con:xqueryText>
    </con3:condition>
    <con3:actions>
    <con1:route>
    <con2:id>_ActionId-9110389481588294027-8fc6726.12c833ed7e1.-7c8f</con2:id>
    <con1:service ref="ServiWebEntrada/AltaExpediente/ProxyService/AltaExpedienteProxyService" xsi:type="ref:ProxyRef" xmlns:ref="http://www.bea.com/wli/sb/reference"/>
    <con1:operation>ImsersoSiebelContactInsert</con1:operation>
    <con1:outboundTransform/>
    <con1:responseTransform/>
    </con1:route>
    </con3:actions>
    </con3:case>
    <con3:case>
    <con3:condition>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">fn:contains(fn-bea:serialize($body), 'CreaContacto')</con:xqueryText>
    </con3:condition>
    <con3:actions>
    <con1:route>
    <con2:id>_ActionId-9110389481588294027-8fc6726.12c833ed7e1.-7c8b</con2:id>
    <con1:service ref="ServiWebEntrada/CuidContact/ProxyService/CuidContactProxyService" xsi:type="ref:ProxyRef" xmlns:ref="http://www.bea.com/wli/sb/reference"/>
    <con1:operation>CreaContacto</con1:operation>
    <con1:outboundTransform/>
    <con1:responseTransform/>
    </con1:route>
    </con3:actions>
    </con3:case>
    </con3:ifThenElse>
    </con:actions>
    </con:route-node>
    </con:flow>
    </ser:router>
    </xml-fragment>
    Regards
    Pranav

  • QoS issue with OSB publish to JMS business service

    Hi,
    1. I have a http OSB proxy service which is publishing an audit message to a JMS queue through OSB business service.
    MainProxyService (http) --> Publish (best-effort) --> AuditBusinessService (JMS) --> Audit Queue
    2. I want 'Publish to JMS business service' to be a non-blocking call so that proxy service message flow can continue. Transaction support is disabled in proxy service as well as in JMS connection factory.
    3. As default value of QoS (quality of service) for publish action is best-effort, ideally proxy service should continue its message flow immediately after dispatching the message to publish action and it should not block the main proxy flow.
    4. But in my case, proxy service is blocking the message flow until the message is delivered to JMS business service/JMS queue. This is degrading performance of my application.
    5. I think default 'best-effort' QoS is not working with JMS business service as there is a significant time lag between publish action and its next subsequent action.
    6. If I replace the JMS business service with HTTP business service, then it seems to be a non-blocking call and message flow immediately proceeds to next actions.
    Correct me if I am going wrong anywhere or my understanding is wrong.
    Many thanks.

    HI,
    u can use Conditional Branching
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1061670
    Split join would be used in case u need to split your request and call your Business Service in Serial/parallel & then gather resposnes from multiple callouts to have single response
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html#wp1137258
    Abhinav

  • OSB 11g - poll JMS topic on OAS 10.1.2

    Hi everybody,
    We are going to create OSB 11g proxy service that will poll JMS topic located on Oracle Application Server 10.1.2. I think that the first step is to set up foreign JMS server, connection factory and destinations in the Weblogic server, am I right?
    I've never set up that before and l looking for any guides on how to set up OAS 10.1.2 topic as foreign destination in Weblogic 10.3.3.
    Any help will be appreciated
    Best regards,
    Dmitry

    Ok, finally I found this guide http://www.oracle.com/technetwork/middleware/bam/technote-bam-connectingoc4jjms-129297.pdf and set up foreign JMS server, connection factory and topic. These foreign JMS objects are included in weblogic JNDI tree, and I could successfully deploy OSB Proxy Service that is intended to poll foreign JMS topic. The following error appeared in the weblogic server log file after deployment:
    <Aug 24, 2010 1:21:44 PM MSD> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: RequestEJB-4249293316140669267--703a
    3e3e.12aa2c85115.-7fcd is unable to connect to the JMS destination: jms.oc4jUDC_IDENTITY_TOPIC. The Error was:
    [EJB:011014]The Message-Driven EJB failed while creating a JMS Connection. The error was:
    javax.jms.JMSException: Unable to create a connection to "/0.0.0.0:12,601" as user "null".
    Linked exception: java.net.ConnectException: Connection refused.
    javax.jms.JMSException: Unable to create a connection to "/0.0.0.0:12,601" as user "null".
    at com.evermind.server.jms.JMSUtils.makeJMSException(JMSUtils.java:1898)
    at com.evermind.server.jms.JMSUtils.toJMSException(JMSUtils.java:1914)
    at com.evermind.server.jms.EvermindConnection.<init>(EvermindConnection.java:114)
    at com.evermind.server.jms.EvermindTopicConnection.<init>(EvermindTopicConnection.java:63)
    at com.evermind.server.jms.EvermindTopicConnectionFactory.createTopicConnection(EvermindTopicConnectionFactory.java:91)
    at com.evermind.server.jms.EvermindTopicConnectionFactory.createTopicConnection(EvermindTopicConnectionFactory.java:83)
    at weblogic.ejb.container.internal.JMSConnectionPoller.getConnection(JMSConnectionPoller.java:503)
    at weblogic.ejb.container.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:1969)
    12601 is JMS port of remote OC4J instance, I can connect to this port from weblogic server though telnet.
    I do not know why 0.0.0.0 is printed as IP address, and why user is "null" ..
    Any ideas on that?

  • How to make a JMS Proxy Service Subscriber act as a synchronous service

    I am trying to find the correct OSB pattern/configuration to support the following.
    Use case:
    Multiple messages put onto a JMS topic. The Java Web Service invoked by the Proxy Service subscriber should only ever have one instance active at a time so that it processes messages syncronously.
    Current OSB Configuration:
    JMS Topic -> ProxyServiceA -> BusinessServiceA (Java Synchronous Web Service)
    -> ProxyServiceB -> BusinessServiceB (BPEL Synchronous Web Service)
    Work Manager configured on ProxyServiceA with maxThreadCount = 1 and minThreadCount = 1
    Issue:
    Multiple instances of BusinessServiceA are active at the same time with the settings above. I am unable to make ProxyServiceA act as a synchronous process, so that it will not return until BusinessServiceA has completed.

    JMS Topic -> ProxyServiceA -> BusinessServiceA (Java Synchronous Web Service)-> ProxyServiceB -> BusinessServiceB (BPEL Synchronous Web Service)
    If I remember correct there were some issue with work-manager being configured in proxy is not used. Engineering has fixed that issue in Oracle Service Bus (11.1.1.3.0). You might want to check with support to get the requisite patch for your version.
    You requirement for synchronous process can be achieved by two ways
    Option1) Configure BusinessServiceA with Throttle Q with Maximum Concurrency 1 http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/operations/throttling.html
    Multiple instances of BusinessServiceA are active at the same time with the settings above. I am unable to make ProxyServiceA act as a synchronous process, so that it will not return until BusinessServiceA has completed.Does BusinessServiceA (Java Synchronous Web Service) return response? Is it invoking the ProxyServiceB via HTTP?
    Manoj

  • JMS Proxy Service !

    Hi I have a scenario --
    1. Pandox System(queue) ------> OSB [ ProxyService]-------->Seibel System(queue)
    . Is the above scenario possible in OSB ? If yes , then how ?
    . Should I go for JMS Bridge ? No ? Yes ? Why?
    Note: What would be the end point URIs in the Proxy Service if the systems are non-weblogic like Pandox and Seibel ? Will it require any extra configuration any where in OSB ?

    OSB can interface with JMS/MQs.
    You can configure your proxy service/business service JMS URI of the pattern if using JMS
    jms://localhost:port/QCFJNDI/QJNDI
    For MQ you can use the MQ transport or create Foreign JMS servers depending on your version of OSB.
    Refer OSB user guide for further details on MQ transport etc.

  • OSB: Retrieve list of proxy service/business service operations via OSB API

    Hi,
    I would like to retrieve the list of proxy service/business service operations using OSB API. I was able to retrieve References to all services on given server using examples from documentation (http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/javadoc/com/bea/wli/sb/management/configuration/ALSBConfigurationMBean.html). I'm also able to retrieve the Reference to any given service I want.
    My problem is - what do I do next? I've read here[http://www.theserverlabs.com/blog/2012/03/14/alsbosb-customization-using-wlst/] , that one can use ServiceConfigurationMBean.
    But when I execute this code:
              ServiceConfigurationMBean servConfMBean = (ServiceConfigurationMBean) domainService
              .findService(
                        ServiceConfigurationMBean.NAME + "." + sessionName,
                        ServiceConfigurationMBean.TYPE,null);
    The servConfMBean object is null.
    I know that there might be some useful info in the statistics, but my proxys are enabled for monitoring, and therefore I'm unable to obtain statistics programatically.
    I've also learned that thereis a TransportManagerHelper.getWsdlDescription(ref) method. But it throws null pointer exception. I dont understand how to use it.
    Any help would be greatly appreciated.
    Veronica
    Edited by: Veronica on Apr 11, 2012 2:33 AM

    There is an API change from the OSB release 11.1.1.3 and later....
    There is a solution, but this is based on Java & JMX:
    See support on this note:
    WLST scripting needed for note [ID 1431254.1]

  • OSB: How to get proxy service name

    Hi all,
    Could anyone please tell me the way to get the proxy service name inside the message flow of OSB.
    Regards,
    Rakesh Ranjan.
    Edited by: Rakesh Ranjan on Oct 1, 2010 2:27 PM

    Inound context variable ($inbound) holds the value of service name and operation name being invoked. Use expression $inbound/@name to get service name and expression $inbound/ctx:service/ctx:operation/text() to get operation name being invoked.
    Remember that opeartion name will be there only for services which have operations (like a WSDL based service)
    Regards,
    Anuj

Maybe you are looking for

  • Error While creating a regular item without any demo data.

    Hi All, In RMS13.1.1, during creation of an item without any demo data, and entering all the required inputs on the item master & itemsupp form. When we click on "Retail by Zone" the following error message got displayed "Exchange rates does not exis

  • Bridge CC will not open.

    Upgraded creative cloud and downloaded Bridge CC.  The icon will bounce a few times and then the light goes out.  Researched forums and tried resetting the priviledges for users. Still no change.

  • Missing Java Web Start after 1.4.2 SDK install??

    After doing the full 1.4.2 SDK install on Windows XP SP 1 there is no sign of Java Web Start (no desktop icon, no obvious folder, etc)! Further the appropriate extensions do not seem to be mapped. The installed completed without errors and in other r

  • How to Reduce Image Size and show upload Progress Bar

    i need to capture an image from the camera and send it to the server. however to reduce the amount of data transmitted i want to shrink the image and lower its resolution. I have code that currently does the following : UIImage *testImage = [UIImage

  • Moving averages

    I want to write a moving average line, in Java, consisting of a slow line and a fast line. A six-numeral address bar will be required. I don�t know which end of this beast to get hold of. Maybe some kindly soul will give me some strong clues. TIA clu