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.

Similar Messages

  • 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 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. ;-)

  • 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] Invoking OSB HTTP proxy as a part of a global transaction

    Hi,
    my question is, can a OSB HTTP proxy be executed in context of the global transaction?
    I did two tests. One had the following scenario:
    HTTP OSB proxy invokes JMS OSB proxy that invokes an "Insert to database" business services.
    Both of the proxies were transactional - I have set "Transaction Required" and "Same Transaction For Response" to enabled on both of them. Also, I've set QoS to "Exactly Once" in the Routing Option.
    The OSB JMS proxy's flow was executed as a part of the global transaction. I confirmed this with the following test:
    If I throw an exception in the responce pipeline of the HTTP OSB proxy, the database transaction was rolled back. If I throw an exception in the responce pipeline of the HTTP OSB proxy, but have the "Transaction Required" and "Same Transaction For Response disabled, the database transaction is commited and than the exception is thrown.
    The problem is, If I change the protocol of the second proxy to HTTP, then it doesn't seem to be executed in the context of the global transaction. If I throw an error in the response pipeline of the first OSB proxy(and "Transactions Are Required" and "Same Transaction For Response" are enabled for both proxy, and QoS is set to "Exactly once") the database transaction is not rolled back.
    So, can a OSB HTTP proxy be executed in context of the global transaction?
    Edited by: user13604541 on Dec 5, 2011 2:27 AM

    I have read on OSB doc that HTTP proxies do not support transactions... your tests seem to confirm this.

  • OSB 11g acting as a JMS Proxy

    I was hoping that someone can clear my understanding of OSB and how it interacts with JMS.
    I created a JMS server, connection and topic in WLS. It works great. I am able to subscribe and publish from a java client and from an OSB business service.
    Our use case is to use OSB as a "front end" to JMS if you will. We want JMS clients to be able to connect to OSB and subscribe to our JMS topic (durable). Is it possible to subscribe to a proxy service from a JMS client? How do I do it?
    The next thing we are going to try to do is have an OSB process listen to our JMS topic and invoke a web service when a new message is published. Any guides on this?
    Thanks so much,
    Sam

    We want JMS clients to be able to connect to OSB and subscribe to our JMS topic (durable). Is it possible to subscribe to a proxy service from a JMS client? How do I do it?I don't think subscribing to a proxy service is possible. Instead create a separate queue (or any other storage), for your client application and let OSB pull the message from source queue and pass it to target storage (may be another JMS queue)
    The next thing we are going to try to do is have an OSB process listen to our JMS topic and invoke a web service when a new message is published. Any guides on this?This approach is quite similar to what I mentioned above. Just create a JMS proxy service to let it consume messages from topic and create a Business Service (WSDL based web-service) to invoke the target web-service. In the message flow of JMS proxy you may have transformation if required, and then route the message to business service which will eventually deliver the message to target web-service.
    Regards,
    Anuj

  • 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

  • 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

  • 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.

  • OSB JMS transaction

    I'm trying to setup a proxy service to dequeue a message from JMS and submit to a business service. If the business service fails, I want the jsm message to remain in the queue/"rollback". I setup a queue CF with "XA Connection Factory Enabled", and I have a proxy service dequeueing from a queue through that connection factory. In the proxy service I have the "Is XA Reuired" box checked on the "JMS Transport" tab, and in the message flow, I have a route node with an exception handler that is calling the business service that I have setup to fail on purpose. The exception handler has a Reply "with failure" action.
    OSB-PS -> JMS -> OSB-PS -> OSB-BS -> Failing Service
    I want this to roll back to the JMS queue.
    Did I miss anything in setting up the XA support for this process? When I invoke the proxy service, it errors off, but the message doesn't get rolled back to the original queue.
    Does anyone have an example or docs on how to set this up?
    Thanks for any help.

    Hi All,
    I have checked the Retry with Application Errors, but no change.
    Also have a Routing Option set to "Exaclty Once".
    There is also a Route error handler where I raise an error and Reply with Failure.
    The JMS Connection Factory used is XA enabled and so is the JMS Proxy service.
    The strange thing I observe is when the endpoint server is down, teh transaction gets rolled back and remains in the queue.
    However, when the server is up but the path of the URI given is either incorrect(404 HTTP Response) or there is an internal server error(500 HTTP response),
    the message is picked up from the queue and is lost.
    What I am supposing the reason would be, the proxy is able to make connection to the http uri but there is an error from the business service, while in the first case, the server is not up and hence the connection itself is failing and the transaction is getting rolled back at the request pipeline level itself.
    I compared the logs when server is down and when the path is not found-> the difference I found was
    1. Server is down: Fault occurs in the flow of the Request flow of the Route node
    2. Server is up but path not found or internal error: Fault is thrown in the response action after getting the HTTP response.
    I have even tried Raise Error and Reply with failure at the Service Error Handler level as well, but the message is lost :(
    Could anyone please help me out on this? Is there any workaround for the same?

  • JMS proxy and XA connection factory

    Hi all,
    I would like to ask you what is the best practice to adopt about the scenario described below.
    A JMS proxy retrieves a message and processes it.
    Any error could occurr during processing it and, in case of errors, the JMS proxy error handler publishes the message on ad hoc recovery destination D.
    (later another app will check failed messages for fixing & republishing them into ALSB).
    In that scenario we have the JMS proxy and the jms business service that, in case of errors, publishes on destination D.
    Should the JMS proxy and the business service use both a XA connection factory in order to perform all the above steps in one transaction ?
    Otherwise if the business service itself fails publishing on destination D, the message retrieved by the JMS proxy is lost and not re-delivered to the JMS proxy.
    Or XA connection factory is not needed and could I use
    Routing Options with exactly once or both are needed ?
    Thanks
    ferp

    Hi all,
    I did some tests and follow what I've achieved.
    Scenario 1.
    - Precondition
    -- A JMS proxy with XA factory + Error Destination (MyRecoveryQueue)
    -- A business service BS with XA factory that publishes into MyOutboundQueue
    -- No "exactly once" routing option used calling BS
    -- an error is forced in the pipeline
    - Flow
    -- proxy retrieves a message and try to publish it using BS
    -- an error is forced in the pipeline:
    --- transaction is rolled back, message redelivered to proxy
    --- the message is posted to the error destination after all the retries failed
    Scenario 2.
    - Precondition
    -- As 1. but no error is forced in the pipeline
    -- the MyOutboundQueue destination queue is paused
    - Flow
    -- proxy retrieves a message and try to publish it using BS
    -- BS fails to publish it on MyOutboundQueue (because it is paused)
    --- transaction is rolled back, message redelivered to proxy
    --- the message is posted to the error destination after all the retries failed
    Scenario 2A.
    - Precondition
    -- As 2. with MyOutboundQueue paused and resumed
    - Flow:
    -- proxy retrieves a message and try to publish it using BS
    -- BS fails to publish it on MyOutboundQueue (because it is paused)
    --- transaction is rolled back, message redelivered to proxy
    --- before all the retries failed the queue is resumed
    --- BS succeeds to publish the message
    Scenario 3.
    - Precondition
    -- A JMS proxy with NO XA factory + Error Destination
    -- A business service BS with NO XA factory
    -- No "exactly once" routing option used calling BS
    -- an error is forced in the pipeline
    - Flow
    -- proxy retrieves a message and try to publish it using BS
    -- an error is forced in the pipeline:
    --- transaction is NOT rolled back, message NOT redelivered to proxy
    -- so
    --- no message delivered to MyOutboundQueue2 destination
    --- no message delivered to MyRecoveryQueue2 destination
    --- message consumed from MyQueue2 and now is lost!
    To publish message into MyRecoveryQueue2 a proxy error handler has to be added and here added explicit publish to MyRecoveryQueue2.
    But naturally in that case if in the proxy error handler, the explicit publish fails or any error occurrs no message is delivered to recovery queue.
    So if I'm not using an XAFactory the message is auto-acknowledged as soon as it is read and I've to use XA factory if I want the message to be put back in the queue in case of errors and the retry to happen.
    So both my proxy service and business service use an XA factory.
    Regards
    ferp

  • JMS Proxy to Web Service Problem

    Hi All,
    I have a JMS proxy that routes messages to a web service. I have set the delivery failure parameters on the JMS queue. When a message is put onto the queue and there is a problem within the message flow proper, the message is retried the appropriate number of times and put onto the Error Destination queue as necessary. However, if there is a problem calling the web service, message delivery is NOT retried, the message is NOT put onto the Error Destination queue, and the message is lost. The web service itself isn't throwing a SOAP Fault, but the business service can't reach the web service (firewall issue). My Route Error Handler in the message flow is hit and it performs a Reply With Failure.
    Can anyone please explain to me if this is by design and, if so, why? Also, how does a person work around this? I need the message to be retried. I understand that a web service cannot participate in an XA transaction, but it seems to me any failure within the message flow should cause a retry on the JMS queue.
    Thanks.
    Edited by mvcg at 06/11/2008 1:57 PM

    You should remove the Route Node since it should only be used in HttpProxy.
    Instead use just the request pipeline for your routing.
    if (condition1)
    Service Callout (or publish) to Service1
    else if (condition2)
    Service Callout (or publish) to Service2
    else
    Rasie error?
    You shouldn't need to reply with failure. Any errors in the service callout or publish should go to exception handling if you use QoS exactly-once.

  • Trouble with a JMS proxy listening to a distributed topic

    Hi all,
    I've setup an ALSB cluster with 1 admin instance and 2 managed instances (m01 and m02).
    I've also configured 1 distributed topic A and defined the two below proxies:
    - proxy P1 is a http proxy that publishes a message into the distributed topic A. The proxy uses a business service with jms protocol and endpoint uri:
    jms://wasdv1r3n1.dev.b-source.net:7301,wasdv1r3n1.dev.b-source.net:7303/my.ConnectionFactory/DistributedTopicA
    - proxy P2 is a JMS proxy listening to
    jms://wasdv1r3n1.dev.b-source.net:7301,wasdv1r3n1.dev.b-source.net:7303/my.ConnectionFactory/DistributedTopicA
    that logs the received message and writes it to file.
    The strange behaviour is that on the managed m01 log file I see the message received from P2 but also on the managed m02 log file I see the message received from P2.
    So I'm sending out 1 message and receiving 1 x managed that is total = 2.
    This strange behaviour is also confirmed from the fact that I see on the file system 2 files and not only 1.
    I thought it was a problem concerning the config of business service that publishes message into the distributed topicA; but I tried with an external 'normal' java JMS subscriber that listens to t3://wasdv1r3n1.dev.b-source.net:7301,wasdv1r3n1.dev.b-source.net:7303 and it works properly: it receives only 1 message.
    I'm trying to understand where is my fault.
    Do you have any idea ?
    Thanks in advance
    Patrizio

    If you publish a message to a topic, all the proxy that subscribed to this topic will receive the message. If you want the message to be processed by only one managed server you can publish to a queue instead.
    Gregory Haardt
    ALSB Prg. Manager
    [email protected]

  • SOAP Header based user/password authentication in OSB 11g Proxy Service

    Hi,
    I have implemented SOAP Header based authentication in my OSB 11g Proxy Service.
    In the Security settings of my AnySOAP(Soap 1.1) HTTP Proxy service, I have amde the following changes:
    1.
    In Transport Access Control link, i selected the User predicate, and provided an user already existing on weblogic server with following roles(AppTesters, Monitors, Operators).
    The AuthorizationProvider was XACMLAuthorizer
    2.
    Under Custom Authentication, I selected the Custom User Name and Password option, and provided the below mentiioned xpaths
    User Name XPath: ./*/*:Username/text()
    User Password XPath: ./*/*:Password/text()
    3.
    In Message Access Control link, i selected the User predicate with the same user as mentioned in Transport Access Control link.
    Now, when I am testing this service from OSB Test Console, I am providing the following input.
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:N1="http://abcd.com/common/bodcomponents/transactional/model/1.0/">
    <soap:Header>
    <AuthHeader>
    <N1:Username>userXYZ</N1:Username>
    <N1:Password>passXYZ</N1:Password>
    </AuthHeader>
    </soap:Header>
    <soap:Body>
    <!-- body payload -->
    </soap:Body>
    </soap:Envelope>
    The response is "The invocation resulted in an error: ."
    The OSB server logs show the below error:
    ####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Security> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-387082> <Proxy service access denied (proxy: ABCD/Services/Common_HTTP_Proxy, subject: Subject: 0
    )>
    ####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Kernel> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-382004> <Failed to process request message for service ProxyService ABCD/Services/Common_HTTP_Proxy: com.bea.wli.sb.security.AccessNotAllowedException
    com.bea.wli.sb.security.AccessNotAllowedException
         at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:136)
         at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:117)
         at com.bea.wli.sb.pipeline.RouterManager.processMessage(RouterManager.java:586)
         at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:329)
         at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:76)
         at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:134)
         at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:132)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
         at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:137)
         at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:454)
         at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
         at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
         at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(TestService_sqr59p_EOImpl.java:353)
         at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
         at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
         at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Please suggest where I am going wrong in this. I have cross checked the user/pass credentials with what I am giving in the input, and it is perfectly fine.

    I have added the Username and Password as follows, since the namespace declaration was required due to the namespace prefix 'N1' in the XPath
    declare namespace N1="http://abcd.com/common/bodcomponents/transactional/model/1.0/";./AuthHeader/N1:Username/text()
    declare namespace N1="http://abcdp.com/common/bodcomponents/transactional/model/1.0/";./AuthHeader/N1:Password/text()
    I have removed the Message Access Control conditions, have only kept Transport Access Control conditions.
    If i keep the condition in Transport Access Control as "Allow access to everyone", and test with proper credentials in the Username/Password tags in SOAP Header, then it works fine. However, if I try to give an incorrect password in the SOAP Header, it denies the access. So that means the XPaths given for Username/Password are working fine. The OSB logs show the below message
    +####<Feb 10, 2011 12:59:21 PM IST> <Error> <OSB Security> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000ef2> <1297322961536> <BEA-386008> <Message level username/password authentication failed: [Security:090304]Authentication Failed: User weblogic javax.security.auth.login.FailedLoginException: [Security:090302]Authentication Failed: User weblogic denied>+
    However if i add the condition with predicate as "User" and user name argument as "weblogic", and try to pass the same in the SOAP Header as well with the correct password, it denies the access with below message in the logs.
    +####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Security> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-387082> <Proxy service access denied (proxy: ABCD/Services/Common_HTTP_Proxy, subject: Subject: 0+
    +)>+
    +####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Kernel> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-382004> <Failed to process request message for service ProxyService ABCD/Services/Common_HTTP_Proxy: com.bea.wli.sb.security.AccessNotAllowedException+
    com.bea.wli.sb.security.AccessNotAllowedException
    at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:136)
    at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:117)
    at com.bea.wli.sb.pipeline.RouterManager.processMessage(RouterManager.java:586)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:329)
    at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:76)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:134)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:132)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:137)
    at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:454)
    at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
    at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(TestService_sqr59p_EOImpl.java:353)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
    at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

  • [OSB] Customize proxy with variable string

    Hi all,
    I've got this scenario:
    I need that my proxy service append a enviroment string to the output. I'm thinking to add this enviroment string on customization file. Is possible do this?
    For example i call a webservice that give me a link (ex. http://oracle.org), and i need that the proxy return link concat my string ("http://oracle.org" + mystring)
    Regards

    I got the same error with $accinfo/*:OutputParameters --->> BEA-382107: No value could be bound to variable: accsinf
    *$accinfo goes like this:*
    <get:OutputParameters      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:get="http://xmlns.oracle.com/pcbpel/adapter/db/SMS/GET_ACCOUNT_INFO/">
         <get:RESULTRECORDSET>
         <get:RESULTRECORDSET_Row>
         <get:BRANCH>87400</get:BRANCH>
    the XSLT:
    xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/SMS/GET_ACCOUNT_INFO/"
    <!-- Where the variable is defined -->
    <xsl:param name="v_accinfo"/>
    <xsl:template match="/">
    <inp1:something>
    <accounts>
    <!-- Here's how I use the variable: -->
    <xsl:for-each select="$v_accinfo/ns1:OutputParameters/ns1:RESULTRECORDSET/ns1:RESULTRECORDSET_Row">
    <xsl:if test="(ns1:BRANCH = $br) and ((ns1:ACC_NUM = $ac) and (ns1:CURRENCY = $cr))">
    <acc_description1>
    <xsl:value-of select="ns1:TYPE"/>
    </acc_description1>
    </xsl:if>
    </xsl:for-each>
    I tested the XSLT in JDeveloper. I just used the content of the $accinfo and $body from "Invocation Trace" (OSB Console > Proxy Service >Test) and the transformation works Fine. But I have problems when I use it in the Proxy Service's flow in OSB.
    Edited by: 849874 on Apr 5, 2011 6:43 AM

Maybe you are looking for

  • Previewing a pdf document created by Acrobat 5.0 in IE 7

    I have a document converted to pdf format by Adobe Acrobat 5.0 that needs to be accessible for viewing and download from a web page.  I got it uploaded to the website and there is a link to the file on the website's home page.  I have Adobe Reader 9.

  • My iPad is disabled but I don't have access to the laptop it was originally synced with

    I put my mini iPad in my suitcase next to the Bluetooth keyboard I use with it. Stupidly I didn't turn off either of the devices. At the other end of my journey I see that my iPad is disabled and I need to connect with iTunes Store. I have read how t

  • Other Limit : In Purchase Order ME21.

    Hi, When we are creating purchase order of services, There is tab: Other Limit, in which no limit check box by defaulted marked when creating the order. We donu2019t want that tick is updated at time of the PO creation. I appreciate as you can give s

  • MQJMS2005 - IBM wsad/mq pub/sub sample

    Has anyone had problems running the IBM pub-sub sample for wsad and wq. http://www-106.ibm.com/developerworks/ibm/library/i-jms2/ I am running MQ5.3 and WIN2000. The P2P example works fine, getting the folowing error when trying to test client access

  • TA26589 iphone 4s sort order for number in contacts

    iphone 4s How to sort order for numbers in contacts ? Like First - mobile Second - office Third - work Four - home It differs as you enter while as you enter / update. Can any one guide me. Thanks.