IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
  • 1.  Not picking up right canonical from webMethods URGENT

    Posted Wed February 05, 2003 04:45 PM

    Our application is using JSP in front end, webMethods Server as middleware and Oracle at the backend. We are sending request to webMethods using BrokerClient; however, when concurrent users are using this Broker Client, the returned canonical is not the one intended for a particular user. Is there a way to check which canonical should go with the request?


    #webMethods
    #broker
    #Universal-Messaging-Broker
    #Integration-Server-and-ESB


  • 2.  RE: Not picking up right canonical from webMethods URGENT

    Posted Wed February 05, 2003 06:52 PM

    Can you provide a bit more info?

    I assume the client is publishing and event. Is it expecting a reply? In other words, is it calling publishRequestAndWait?

    Is the published event configured to deliver a reply or publish it? If publish, the reply will go to all subscribers and publishRequestAndWait won’t work.

    Is each instance of the broker client connecting to the broker getting its own queue? If not, replies for publishes from all clients will be intermingled in the single shared queue.


    #Integration-Server-and-ESB
    #broker
    #webMethods
    #Universal-Messaging-Broker


  • 3.  RE: Not picking up right canonical from webMethods URGENT

    Posted Thu February 06, 2003 06:12 AM

    This response is from Bob Richardson of Conexus:

    The request/reply protocol requires the request to set the _env.tag field to
    a value that identifies the request. This value will be returned in the
    _env.tag field (assuming that the adapter/server has properly implemented
    the protocol). The requestor should match the request tag with the reply tag
    to match the request with its reply. webMethods supplies several convenience
    APIs for doing request/reply. These APIs automate setting and matching the
    tags. Unfortunately, some of the APIs are not thread safe…


    #broker
    #Integration-Server-and-ESB
    #webMethods
    #Universal-Messaging-Broker


  • 4.  RE: Not picking up right canonical from webMethods URGENT

    Posted Thu February 06, 2003 03:07 PM

    “The request/reply protocol requires the request to set the _env.tag field to a value that identifies the request.”

    wM-supplied adapters, such as the Oracle DB adapter, do this. Also, the API provides a method for easily creating a reply event within broker clients.

    “The requestor should match the request tag with the reply tag to match the request with its reply.”

    The publishRequestAndWait method does this.

    To address Rahul’s question we need to know how the broke client is connecting to the broker and how it is publishing and waiting for the reply. There are many ways to do this, each with its own issues/gotchas.


    #Integration-Server-and-ESB
    #Universal-Messaging-Broker
    #broker
    #webMethods


  • 5.  RE: Not picking up right canonical from webMethods URGENT

    Posted Thu February 06, 2003 09:11 PM

    Hi,

    Thanks a lot for your suggestion.

    We were able to resolve our problem.
    and had to make two changes in our application.

    First
    Instead of using
    COMSBrokerClient = COMSBrokerClient.newOrReconnect(cHost, brokerName, userId, clientGroup, “COMSJavaClient”, new BrokerConnectionDescriptor());
    to create a BrokerCLient now we are using this method
    COMSBrokerClient = new BrokerClient(cHost, brokerName,“”,clientGroup,“COMSJavaClient”, new BrokerConnectionDescriptor ());
    Second
    In webMethods
    Instead of publish step in Integration Component we are usig output step.

    These two changes solved our problem but Performance has been hit.
    May be if you could suggest some other way , It would be a great help.

    Here are the answers to your queries

    I assume the client is publishing and event. Is it expecting
    a reply? In other words, is it calling
    publishRequestAndWait?

    Yes,Client is publishing an event and we are using publish() to do that
    objEvent = new BrokerEvent(COMSBrokerClient, userEvent);

            objEvent.setTag(COMSBrokerClient.makeTag()); 
    COMSBrokerClient.publish(objEvent); 
    

    where “COMSBrokerClient” is the client we created using BrokerClient()
    and “userEvent” is the document we publish

    Is the published event configured to deliver a reply or
    publish it? If publish, the reply will go to all subscribers
    and publishRequestAndWait won’t work.

    Earlier we were using publish in webMethods however after
    this problem we are using an output step in webMethods
    which has solved our problem.

    Is each instance of the broker client connecting to the
    broker getting its own queue? If not, replies for publishes
    from all clients will be intermingled in the single shared
    queue.

    Since each connection was unique, each Broker was getting its own queue.

    Thanks


    #broker
    #webMethods
    #Integration-Server-and-ESB
    #Universal-Messaging-Broker


  • 6.  RE: Not picking up right canonical from webMethods URGENT

    Posted Thu February 06, 2003 10:41 PM

    COMSBrokerClient = COMSBrokerClient.newOrReconnect(cHost, brokerName, userId, clientGroup, “COMSJavaClient”, new BrokerConnectionDescriptor());

    This should work just fine, as long as userId is unique among all users and is consistent from connection to connection. What you may have been seeing is old replies/events held in the queue that weren’t retrieved. However, your new approach, allowing the Broker to create a unique client identifier, is the proper approach for request/reply operations.

    For your COMSBrokerClient.publish(objEvent); call, is there a reason you’re not using publishRequestAndWait(objEvent, timeout)?

    “Since each connection was unique, each Broker was getting its own queue.”

    Just to clarify: Having an instance of a BrokerClient object does not imply a unique queue for that client on the Broker (I know that’s not what you meant, but just clarifying for those who may not be familiar with this). The clientId parameter to the BrokerClient constructor identifies the queue on the broker. Multiple BrokerClient objects can specify the same clientId parameter, thus sharing the queue (assuming sharing is enabled).

    Regarding the performance: are you creating and destroying the connection for every request? You might consider broker connection pooling.

    Glad you got things working right!


    #broker
    #Universal-Messaging-Broker
    #Integration-Server-and-ESB
    #webMethods


  • 7.  RE: Not picking up right canonical from webMethods URGENT

    Posted Tue April 26, 2005 04:02 PM

    I am currently having this same problem. I am successfully triggering the subscribing service, the subscribing service successfully publishes the REPLY, but the publishandwait service keeps on waiting until it times out. Jenny (or) Jay , can you tell me if you solved the problem? I would appreciate any help you or others could offer.In my receivedDocumnet the value is “null”


    #webMethods
    #Integration-Server-and-ESB
    #broker
    #Universal-Messaging-Broker