Retry count JMS message on Proxy Service

I have a proxy service listening to a JMS Queue.
It is a task service. I need to try some functionality. If an error occurs (probably because of an offline external service/ business service) I need to rollback and retry). I want to do this for example 5 times. If this fails I want to send it to an error queue
I see the JMSXDeliveryCount going up. I though I could set this with the retry count field. But I see now it is for the response queue.
The only way I can solve it is to put an error handler and look at the JMSXDeliveryCount . If it is above the number of retries I stop reraising.
Is there another way?

If you choose the service type as WSDL based or Any SOAP service, then OSB engine will deconstruct the incoming SOAP Envelope and populate the parts of envelope (Header, Body etc) to correct context variables automatically. This happens before the message flow of proxy service is initiated, so you can not do anything about it. In the proxy service you will receive the deconstructed SOAP message only.
If you do however want to log the exact message which was received by OSB, then change the service type to (or create another proxy service in front of the existing proxy) Messaging type with binary or text content. Or you can also choose AnyXML service type, in which case the incoming SOAP Envelope will be available inside $body variable in message flow.

Similar Messages

  • Dequeue jms message using business service

    Hi,
    I want to pull back messages from response queue based on correlation id using business service.
    On receiving the message, i want to pass it on to the proxy service.
    How do i achieve this ?
    Thanks.

    OSB : How to use JMS Correlation ID to associate Reqeust with the Response
    Thanks
    Manoj

  • Access to original message inside proxy service

    I have proxy service (serviceType=WSDL Web Service) which is available to endpoint to customer and I want to save incoming message to file on disk. However I want to persist whole incoming message exectly (at byte level) as it was sent by sender (so together with Envelope).
    Inside proxy service I have access to variables like header, body etc. However they are not good for my purpose because they differ from corresponding parts of original message. E.g. xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" namespace in original message in
    defined only on Envelope level and not on Header or Body level. But in variables header and body available inside proxy service they (namespaces) are visible. Mayby there are more differences but this one is visible at once.
    So is it possible to access (to be able to save it) original message somehow? Any magic variable? Or mayby there is a way to say osb to persist it (incoming request) to file? (it would be enough for me (of course I need filename). I would manage file by myself further).
    Any hints appreciated

    If you choose the service type as WSDL based or Any SOAP service, then OSB engine will deconstruct the incoming SOAP Envelope and populate the parts of envelope (Header, Body etc) to correct context variables automatically. This happens before the message flow of proxy service is initiated, so you can not do anything about it. In the proxy service you will receive the deconstructed SOAP message only.
    If you do however want to log the exact message which was received by OSB, then change the service type to (or create another proxy service in front of the existing proxy) Messaging type with binary or text content. Or you can also choose AnyXML service type, in which case the incoming SOAP Envelope will be available inside $body variable in message flow.

  • Sending JMS messages as web services

    I am trying to read a JMS topic, retrieve an XMLBean from the queue, and send it
    via web services developed in Workshop. Everything seems to deploy fine, but
    when I post a message to the topic, it just disapears. No logging, no movement
    to the specified error queue, and println doesn't print. How do I do this?

    Hi Neil,
    Have you gone through the tutorial "how to" [1] on this subject? There
    is a basic JMS/webservice example [2], outside of WLW, that may be
    useful in validating your JMS/server configuration. Also, be sure to
    check the server log file for warning/error messages.
    Hope this is of some value,
    Bruce
    [1]
    http://edocs.bea.com/workshop/docs81/doc/en/workshop/guide/howdoi/howExchangeMessageswithaJMSQueueorTopicfromaWebService.html
    [2]
    http://webservice.bea.com/message.zip
    Neil Hornbeck wrote:
    >
    I am trying to read a JMS topic, retrieve an XMLBean from the queue, and send it
    via web services developed in Workshop. Everything seems to deploy fine, but
    when I post a message to the topic, it just disapears. No logging, no movement
    to the specified error queue, and println doesn't print. How do I do this?

  • How to count JMS messages count using BPEL

    Hi All,
    Can you please let me know how to count , total numbers of messages while pooling or pushing the messages using BPEL.
    Thanks,
    Srinivas.

    What do you mean by total number of messages? That are dequeued by BPEL? Or that are in the queue?
    Is the BPEL process started if a message is dequeued? In that case you could just count the number of BPEL instances...
    Kind regards Lonneke

  • Message Retry Count Zero error

    Hi,
    I am sending a Message from one Trading partner to another over ebMS protocol .
    The trading partners are using Weblogic JMS queues as the internal delivery channels.
    when one trading partner is sending message to another, the mesage comes to the receving trading partner with error as "Max retry count for Message is zero".
    I have reffered to one of the thread (Re: FTP retry issue) which says "Can you please update the Retry count and time to acknowledge in the<br />Delivery channel page and update the polling interval in the transport<br />server page as empty? I think the Polling interval value overrides the<br />retry count."
    I have followed this and I am getting a Transport Error.
    Please Help!
    With Thanks & Regards,
    Suhas.

    Hi,
    This is the idc log:
    2008.11.04 at 10:14:52:614: B2BStarter thread: (DEBUG) TransportProperties.TransportProperties():transport_callout_waittime=30;http.receiver.registry_port=5110;port=60700;smtp.receiver.protocol=imap;PROTOCOL_ENDPOINT=null;http.receiver.instance_name=IP;
    2008.11.04 at 10:14:52:615: B2BStarter thread: (DEBUG) initialize TransportReceiver: [BTGS_ebMS_Transport_Server < http > < BTGS >]
    2008.11.04 at 10:14:52:617: B2BStarter thread: (STATUS) [IPT_HttpRecRegisterBegin] HTTPReceiver.init(): Registering HTTP Receiver ...
    2008.11.04 at 10:14:52:618: B2BStarter thread: (STATUS) RMIResponsePort = null
    2008.11.04 at 10:14:53:020: B2BStarter thread: (STATUS) low port = 5110
    2008.11.04 at 10:14:53:022: B2BStarter thread: (STATUS) high port = 5110
    2008.11.04 at 10:14:53:023: B2BStarter thread: (STATUS) [IPT_HttpRecRegisterCompleted] HTTPReceiver.init(): Completed registering HTTP Receiver.
    2008.11.04 at 10:14:55:987: RMI TCP Connection(13)-147.149.200.108: (STATUS) [IPT_HttpRecSendMessageViaCallback] A request is routed by HTTP Receiver to registered listener.
    2008.11.04 at 10:14:58:018: Thread-14: (DEBUG) TransportProperties.TransportProperties():ACTION_NAME=ACTION:rqRequestTroubleReportAmendment;FROMROLE:Consumer;TOROLE:Provider;SERVICE:bcRequestTroubleReportConsumerAmendment_BT_V1;SERVICETYPE:string;;jms.sender.jndi_destination_provider_properties=java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory;java.naming.provider.url=t3://147.149.200.111:53482,147.149.200.111:53484;MSG_TYPE=1;MSG_ID=9395C86B11D66FF77B500000E555D000-1;TO_PARTY_IDENTIFIER=urn:oasis:names:tc:ebXML-cppa:partyid-type:duns#123456789;FROM_PARTY_IDENTIFIER=urn:oasis:names:tc:ebXML-cppa:partyid-type:duns#987654321;jms.sender.jndi_connection_factory_location=weblogic.jws.jms.QueueConnectionFactory;jms.sender.destination_password=******;jms.sender.factory_provider_properties=java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory;java.naming.provider.url=t3://147.149.200.111:53482,147.149.200.111:53484;jms.sender.jndi_destination_location=btgsb2b.distjms.WLI_to_CI_BPS_Cluster_1;jms.sender.is_topic=false;jms.sender.type=bytes;DOCTYPE_NAME=rqRequestTroubleReportAmendment_DocType;FROM_PARTY=BTW;DOCTYPE_REVISION=1.0;TO_PARTY=BTGS;jms.sender.destination_username=weblogic;
    2008.11.04 at 10:14:58:020: Thread-14: (DEBUG) Establishing JMS Connection.
    2008.11.04 at 10:14:58:431: Thread-14: (DEBUG) TransportProperties.TransportProperties():
    2008.11.04 at 10:14:58:433: Thread-14: (DEBUG) TransportProperties.TransportProperties():http.sender.port=80;http.sender.proto=http;http.sender.host=punin1879164268.sid.bt.com;http.sender.path=/b2b/transportServlet;
    2008.11.04 at 10:14:58:434: Thread-14: (DEBUG) Discard Existing Cookies for CurrentThreadContext = Thread[Thread-14,5,main]
    2008.11.04 at 10:14:58:435: Thread-14: (DEBUG) Timeout = 60000
    2008.11.04 at 10:14:58:436: Thread-14: (DEBUG) Basic authentication is not used due to one of security parameters not set. Make sure username, password, and realm are set in delivery channel.
    2008.11.04 at 10:14:58:437: Thread-14: (DEBUG) http.sync = null
    2008.11.04 at 10:14:58:438: Thread-14: (DEBUG) Number of headers to be added is 7
    2008.11.04 at 10:14:58:932: Thread-14: (DEBUG) [IPT_HttpSendResponseStatusCode] HTTP Response status code: 204
    2008.11.04 at 10:14:58:934: Thread-14: (DEBUG) [IPT_HttpSendResponseMessage] HTTP Response message: .
    Regards,
    Suhas.

  • Is it possible to make an OSB Proxy service offline/online based on BS

    JMS QUEUE
    |
    |_____ Proxy Service <-------->Business Service <---------> External System URL
    I have a configuration as shown above.
    There is a way to make the Business Service offline/online based on the External system URL being offline/online by setting the
    Business service-> Operational Settings->Offline Endpoint URIs with a timesatmp.
    Is it possible to make the state of the proxy service to enabled/disabled based on this state of BS based on external enpoint URI?
    This is a requirement such that the messages in the JMS queue doesnot get lost or consumed when the external system is offline.
    Thanks in Advance!

    I have thought about this. There are some problems here....
    I cannot use the same proxy to invoke the java callout and then based on the code or handler disable it, since
    1) i would have no way to enable back the proxy again.
    2) Also there is some amount of message loss.
    So i will have to use another proxy to do the same, but in this case
    1) what would be the trigger to this proxy?
    2) And how often do i invoke the java callout to see if the URI is up or not? (wouldnt that affect the performance?)
    I am just wondering why did they give an offline URI option in the business service and no similar option in the proxy service, Any Idea?
    Thanks

  • Make jms queue forward messages to a proxy service

    Greetings!
    Here's my task. I have a pretty complex proxy service that routes the message to different web services. This proxy has a conditional branch. Now, what I needed to do was implement a JMS queue and fuse it with my proxy. I have successfully created a proxy and a business service that send messages to the JMS queue. However, the queue doesn't forward the messages to my routing proxy. My guess is that when the queue tries to send the message to my proxy, it encounters a conditional branch and doesn't know which branch to use. I have tried to put a log action in the default branch to determine if the message ends up there, but it doesn't.
    If anyone knows a way to forward messages from a JMS queue to a proxy with a conditional branch, please advise a solution.
    Thanks in advance,
    Andrew

    Hello Andrew,
    To communicate with JMS (either to poll JMS for dequing messages or to connect to JMS to enqueue a message), you have to use JMS transport in Oracle Service Bus.
    I am still not sure if this would have worked had I left the conditional branch in my Message Flow.It will work. You may try configuring it.
    Could you please be more specific as to where I can enable message tracking for my proxy service?You may enable message tracing in "Operational Settings" of a particular proxy/business service. Please refer sections "Configuring Operational Settings for Proxy Services" and "Configuring Operational Settings for Business Services" on below link to know more -
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/monitoring.html#wp1028056
    Should it be enabled for a specific proxy service or for all of them?You may enable it for all or for a particular service. It depends on requirement.
    Regards,
    Anuj

  • Consume JMS Unit-Of-Work message through OSB proxy service

    Hi,
    Anyone know how to consume a JMS Unit-Of-Work (UOW) message using an OSB Proxy Service of JMS type?
    I can submit a unit-of-work JMS message (which consists of multiple constituent messages) using an OSB proxy & business service combination and setting the UOW transport headers appropriately. I can also separately produce and consume Java objects via a JMS queue where the consumption is done via OSB proxy (of java request message type), but these aren't UOW messages.
    Apparently as soon as it is a UOW message then the message consumed is an ObjectMessage ArrayList and one has to use the "Java" request message type for the JMS consumer proxy, but I'm unsure of how to create the concurrent client jar to use it in the same proxy service's JMS transport configuration in order to output the ObjectMessage ArrayList (UOW message). 
    Ideally I'd like to consume a single UOW XML message via an OSB JMS proxy service.
    Any pointers would be appreciated.
    R

    Finally got this working!!
    For posterity: Needed to insert Java Object JMS messages on the OSB JMS producer (Business Service) side with correct UOW jms transport header set in route node. Then consume the Unit-Of-Work message on the other side via jms proxy service with "java" request message type, with appropriate jar containing the Object class as the "Client jar" in the JMS Transport configuration. In the same JMS consumer proxy I had to do a java callout, passing the contents of $body, using java.util.ArrayList and javax.jms.ObjectMessage, as input into a method (.. decodeJavaMessage(ArrayList<ObjectMessage> ...)). In this java callout class you can get to each individual ObjectMessage via typecasting the get() method on the Arraylist to (ObjectMessage) and then just typecast the getObject() on this Objectmessage into your original Java Class (same as what you inserted onto queue originally).
    Hope this saves someone some time in future!

  • OSB 1031: proxy service and publishing JMS messages with no duplicates

    Hi all,
    we have a Web Service proxy that publishes messages into a JMS queue. The queue is persistent and the related connection factory is XA enabled.
    The proxy does the call to the JMS business service from a route node.
    If a failure occurrs after the publishing returns successfully, the caller receives back an error and it will try again to call the web service proxy.
    As the message has been published successfully and was not rollbacked by the proxy, the second call could put on the JMS queue a duplicate message.
    As far as we know only with JMS proxy service, OSB starts a transaction within the pipeline or are we wrong ?
    What do you suggest in order to avoid such a scenario described above ?
    Thanks and regards
    ferp

    Try this link to depict the behavior
    http://allthingsmdw.blogspot.com.au/2012/09/osb-service-callouts-and-oql-part-1.html

  • Publishing message to JMS Queue on Weblogic from OSB proxy service

    Hi,
    1. I have created a JMS module: testModule and a JMS queue: testQueue in the weblogic admin console.
    2. Created a business service with the above queue as endpoint.
    3. Created a proxy service which publishes the message to the queue using the business service. I have used Publish activity to publish the message to the business service.
    When i run the proxy service with the request message, then, no error is coming but, in the admin console when i click on JMS module->testModule->testQueue->Monitoring tab, i see nothing. There are no entries in the table so, how can i check if the message is properly published to the queue or not.
    The queue is not listened by any service for consuming the messages.
    Kindly help me in figuring out this issue.
    Thanks in advance.

    If the destination was a topic, the behavior would be expected. Messages only stays on a topic and are delivered to consumers if there are consumers or durable subscribers.
    Did you check the server logs and see if there are any exceptions or warnings?
    You can also turn on jms debugging by adding the following to your server startup script.
    -Dweblogic.debug.DebugJMSFrontEnd=true
    -Dweblogic.debug.DebugJMSBackEnd=true
    The debugging messages wiill show up in the server log.

  • Error Destination in JMS Transport Configuration page (Proxy Services)

    Hi, Can anybody provides me the sample of Error Destination in JMS Transport Configuration page (Proxy Services) .I need to know the format. I am using "jms://<host:port[,host:port]*/factoryJndiName/destJndiName>", but it does not work.
    From Oracle webstie, http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/interopjms/transport.html, the detail description of Error Destination is " In this field you can configure the name of the target destination for the messages, which have reached the maximum number of retry count. "

    Can you provide the JNDI name of the error destination alone there ?

  • 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 do service callout with the incoming JMS message in OSB 11g

    Hello All,
    I have a specific requirement for which I am creating a kind of POC where I need some help in OSB, however am new to OSB.
    My Environment:
    1> I have a request queue (deployed on a WLS domain) - WFReq_WS
    2> I have a response queue (deployed on a WLS domain) - WFRes_WS
    3> I have created a ProxyService (request/response type) in OSB 11g which is simply mapping the incoming message in WFReq_WS to WFRes_WS
    4> I have a WebService (it is currently a simple hello WebService for testing) which takes a string and returns the same string with an added 'Hi' in front of it (e.g. If you send Jack, it will return 'Hi Jack')
    My Requirement:
    1> I have to do some mechanism in OSB, by which while mapping the message from WFReq_WS to WFRes_WS (through the proxy service I have), it will pick the JMS message (which will be a string/text) and will make a service callout to the Webservice I mentioned using the message as the input parameter of the WebService.
    2>Now when the response of the WebService will come, OSB should send this response as the message in the response queue (WFRes_WS) I mentioned above.
    To simplify the requirement using an example:
    A> I will send a text/String message (say Jack) to the request queue (WFReq_WS)
    B> OSB should pick the message (Jack) and make a service callout to the webservice
    C> webservice will return 'Hi Jack'
    D> OSB should send this to the response queue (WFRes_WS)
    I know the above might look very basic question to the PROs, but please elaborate (step by step) what need to be done, since I do not know OSB.
    Thanks a lot for your help !

    Your example points A and D are easily done by having a "Proxy Service" which has the following details:
    Service Type = Messaging Service
    Request and Response type = Text
    Protocol = jms
    Endpoint URI = your request queue (format like 'jms://localhost:7013/weblogic.jms.XAConnectionFactory/QueueJNDIName')
    Checkmark "response" so that the proxy service automatically delivers the response to another queue - your response queue
    Response URI = jms://localhost:7013/weblogic.jms.XAConnectionFactory/QueueResponse
    Now since your "Hello" webservice is (probably) a SOAP xml service you need to "convert" your text based JMS message to xml before sending it on to the "Hello" service.
    Your JMS proxy can do that by just doing a "Assign <whom>{$body/text()}</whom>" to a variable (lets call it 'reqHello')
    Now your JMS proxy should actually call the Hello service and since your JMS proxy is text and the Hello service is SOAP you cannot just "pass" on to the Hello service in a "Route to". Instead you can do a Service Callout where you can specify your "reqHello" variable as payload and a "respHello" as response variable.
    Now you have the "<whom>Hi jack</whom>" in the response variable and since the JMS response needs to be text format you can "extract" the text value into the body variable of the JMS proxy (use "replace /* in body with $respHello/text()" - replace node contents)
    The actual Hello service is a simple "SOAP" based Proxy Service. Add a pipeline and add a stage in the reponse pipeline. Do a ...
    Assign fn:concat("Hi ",$body/whom/text()) to $whomVar
    Replace whom in body with $whomVar (replace node contents)

  • 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

Maybe you are looking for

  • Problem when changing the target quantity for a contract

    Hello, I have a problem when i try to change the target quantity for a contract through the BAPI 'BAPI_CONTRACT_CHANGE'. I filled the tables 'item' and 'itemx' with new values. the BAPI 'BAPI_CONTRACT_CHANGE' returns no error, but after using the BAP

  • SWF animation is not showing up in IE8

    I have test page : http://drupal-windwater/windWaterWidget With two flash banners which are clickable . On click they open bigger window with additional swf animation inside. In any case, neither small or expanded animation is showing up in IE8. It w

  • Hello again Just wondering if the problems with Vid(ATI) drivers still

    Hello I haven't been here in a while, I did an Arch Linux install a few months back and it was quite the learning experience for someone like me being a noob . I loved Arch( I was using 64bit) but the only thing that made me leave it was because afte

  • Use SLT to transfer to non-HANA target

    Tobias Koebler, is it possible to use SLT to replicate SAP source tables to a non-HANA target while still using HANA as a target? This would have to be a multi-usage to both HANA and OtherDB. The only information I can find is this post SLT to non HA

  • Multi page header

    Hi, Its for an Invoice Report. I am having a list of values which are directly fetched from a table. There is a column named 'Type' which will be having values 'Gas' and 'Water'. It is having another column named 'values' which will list all values.