5 Replies Latest reply on Mar 28, 2011 12:29 PM by 814248

    WS-RM in OSB 11g


      I have a query for WS-RM in OSB.

      My client (another team) will call my Proxy . The proxy is a wsdl based proxy. The input is an xml message and the output is an xml message.

      My proxy work flow is
      1. Read Input Body and assign to a variable.
      2. Service call out to a BS which stores the message( in the variable) to the JMS Queue
      3. Proxy returns back XML message with a success and some values from the input message (variable from step 1).

      The workflow is synchronous.

      This all works fine. The proxy protocol was http with https enabled.

      My client wants to implement Ws-reliable Messaging.

      Based on my undersatnding and reading these are the things I did.
      1. changed the protocol to ws.
      2. Added the Longrunningreliability policy to the proxy from the Pre-defined Policy.

      My client tries to call my proxy and now it does not work.

      I assume I am done from my end. Now whatever changes need to be done has to be done from my client. Am I right in my understanding ?
      if not what are changes I need to do, to support the above workflow for reliable messaging ?

      When I test from SB console, it works fine. But when I test from SOAPUI, it gives error.

      Appreciate your help on this.

        • 1. Re: WS-RM in OSB 11g
          Anuj Dwivedi--Oracle
          What error do you see in SOAPUI? Which OSB version are you using?

          • 2. Re: WS-RM in OSB 11g
            Hi Anuj
            I am using OSB

            This is what I do in SoapUI. I import the wsdl which is exported from sbconsole.

            When I execute the request I get this error.

            <faultstring>This endpoint requires reliable messaging</faultstring>

            Then I go to the WS-reliablemessaging settinsg tab and
            1. I check the enable WS-reliable messaging checkbox.
            2. I select WS-RM version to 1.0. (I assume this is the version OSB uses).
            3. The acknowledge To textbox is blank.

            after the above settings and executing, this is the error I get

            <faultstring>Reliable messaging can only work with oneway or asynchronous request/response MEP. The reply-to endpoint should not be anonymous in request/response.</faultstring>

            Appreciate your help on this.

            • 3. Re: WS-RM in OSB 11g
              Anuj Dwivedi--Oracle
              <faultstring>Reliable messaging can only work with oneway or asynchronous request/response MEP. The reply-to endpoint should not be anonymous in request/response.</faultstring>
              The error is quite obvious. You need to provide the reply-to endpoint where response from service should be posted. Remember that WSRM supports both one-way and request/response messaging patterns (both aync).

              • 4. Re: WS-RM in OSB 11g
                Hi Anuj
                I did change my proxy workflow to be asynchronous. I used this link as a reference (http://biemond.blogspot.com/2011/02/building-asynchronous-web-service-with_27.html) .

                With SOAPUI, I tested the proxy, I get a callback. All works fine when I transport protocol is http.

                Then I change my protocol to ws and add Defaultreliability policy.

                Then I go to SOAPUI, I retain my ws-addressing options from my previous test and now I enable the ws-RM option. I change the version to 1.0 . I keep the Acknowledgement url as blank. When I execute my message I get the below error. But when I give the Acknowledgment url as any dummy url then I dont see the error, but I dont get a callback.

                Let me know what I am doing wrong.

                Appreciate your help.
                Error in SOAPUI
                <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
                <faultstring>String index out of range: -6</faultstring>
                <bea_fault:stacktrace xmlns:bea_fault="http://www.bea.com/servers/wls70/webservice/fault/1.0.0">java.lang.StringIndexOutOfBoundsException: String index out of range: -6
                     at java.lang.String.substring(String.java:1937)
                     at weblogic.wsee.cluster.ForwardingHandler.handleRequest(ForwardingHandler.java:255)
                     at weblogic.wsee.handler.HandlerIterator.handleRequest(HandlerIterator.java:141)
                     at weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch(ServerDispatcher.java:114)
                     at weblogic.wsee.ws.WsSkel.invoke(WsSkel.java:80)
                     at weblogic.wsee.server.servlet.SoapProcessor.handlePost(SoapProcessor.java:66)
                     at weblogic.wsee.server.servlet.SoapProcessor.process(SoapProcessor.java:44)
                     at weblogic.wsee.server.servlet.BaseWSServlet$AuthorizedInvoke.run(BaseWSServlet.java:285)
                     at weblogic.wsee.server.servlet.BaseWSServlet.service(BaseWSServlet.java:169)
                     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
                     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
                     at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
                     at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
                     at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
                     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
                     at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:330)
                     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
                     at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)
                     at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
                     at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
                     at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
                     at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
                     at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
                     at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
                     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                     at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)</bea_fault:stacktrace>
                • 5. Re: WS-RM in OSB 11g
                  Need quick help to my queries.
                  For implementing WS-RM what are the steps need to be done to a OSB proxy.

                  1. MY proxy is a asynchronous with a callback to the Reply url passed in by the client.
                  2. in OSB , I have set the transport protocol to ws.
                  3. Added a pre defined policy (Defaultreliability) to my proxy.

                  Do I need to configure anything else. Do my proxy need to handle anything related to Sequence acknowledgement etc..? or does the ws transport protocol manage the sequence acknowledgement etc.. ?

                  please help as it is urgent.