"500 Internal Server Error" response from asynchronous AquaLogic proxy

650837
    Hi,

    We have a proxy service deployed to AquaLogic Service Bus (alsb) v3.0 as a WSDL-based SOAP/HTTP service. The WSDL for the proxy defines a single one-way operation (i.e. no response message is defined), making it an asynchronous operation. The proxy routes the request through a couple business services and then routes the response to a URL specified in the request (in the ReplyTo element of a WS-Addressing header). Essentially it's an asynchronous request-response pattern that accepts requests from a web service and calls back to that web service with the response.

    This proxy service works perfectly when run from the test page in the ALSB console. However, when calling the proxy from the real client web service, AquaLogic returns a "500" response from the HTTP POST. The WSDL and everything look correct, and we can use the proxy's URL to download the WSDL with no problem.

    Is this a known problem?

    Thanks!
    -Eric
      • 1. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
        James Taylor-Oracle
        First question is have you published the proxy service?

        I have seen something similar, but can't remember if it was a HTTP 500 error. But If I specified the URL to be localhost instead of file name then it worked. Have you tried that?

        cheers
        James
        • 2. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
          650837
          The proxy is published and active within AquaLogic. We can call the proxy from the web-based test client in the AquaLogic console, and no errors are reported.
          • 3. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
            James Taylor-Oracle
            Sorry for may last post I meant to say hostname instead of file name.

            It looks like a networking issue. If the console client works then it should work from an actual client. Where is this client situated? Is it able to ping the OSB / ALSB server?

            cheers
            James
            • 4. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
              James Taylor-Oracle
              Actually, this issue may be with the asynchronous nature of the process. Do you know if the service is getting fired? You may need to turn the process into a synchronous process which returns something back to the client?

              cheers
              James
              • 5. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                650837
                James,

                Thanks for your suggestions. The network path from the client to the AquaLogic server is good, and the proxy service message flow is executed correctly. I need the invocation of the proxy service to be asynchronous for performance reasons (i.e. I need control to return to the caller before the proxy finishes processing the request), so adding a response message to the proxy's WSDL would be counterproductive.

                Is there something special I need to do in the proxy service due to the oneway (asynchronous) operation signatures?

                Thanks,
                Eric
                • 6. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                  James Taylor-Oracle
                  Can you please just clarify. When the client calls the proxy service, is the OSB proxy service getting invoked?

                  I'm trying to understand if the client is expecting a response?

                  Generally there is nothing that needs doing, but this comes down to the client. If you can test it via the OSB console that should be correct.

                  Also have you checked that the client can listen on that port to test this open a command prompt and enter the command on the client machine

                  *telnet [machine name] [port]*

                  subsitute the machine name and the port with your server and port.

                  cheers
                  James
                  • 7. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                    650837
                    James,

                    The client connects to the ALSB server successfully, sumbits the SOAP request successfully (via an HTTP POST), the proxy service executes successfully, but the client receives a "500 Internal Server Error" response to the POST. I've enabled tracing in the proxy service and the logs indicate that the proxy's message flow is happening as expected. Note - we're using AquaLogic Service Bus 3.0 and not OSB. There are problems with OSB that are preventing us from being able to upgrade.

                    The ALSB console shows success when I submit an identical SOAP message from the proxy service's test page, but it's hard to know whether the test driver calls the service the exact same way as an external client.

                    The telnet (or netcat, or openssl s_client) would be a good suggestion if it were a "connection refused" error (or something similar) that the client was reporting.

                    Thanks,
                    Eric
                    • 8. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                      James Taylor-Oracle
                      Oh sorry I was thinking you had an i other way round. Makes sense now as this process seems to run in the console. Asynchronous responses need to be able to connect back to the consuming client with a new connection whereas a sync process communicates on the same connection.

                      Therefore your client needs to be able to accept the asynchronous calls. Has you client been set up to mange this?

                      cheers
                      James
                      • 9. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                        680300
                        Hi Eric,

                        Could you resolve the issue?
                        I am looking for a solution to the problem (i am using synchronous service only).

                        After publishing, I can get the wsdl from the web browser but calling the proxy service directly results in soap error "BEA-380001: Internal Server Error"

                        Please share any additional configuration/settings needed.

                        thanks
                        Jaydeep
                        • 10. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                          650837
                          Thanks for the suggestions everyone. I ended up resolving the issue, but it wasn't easy.

                          The proxy service in question is an asynchronous service (i.e. the single public operation is a one-way operation). WS-Addressing headers are inspected within the message flow, and the caller is "called back" with the service results on the ReplyTo address. The call to this response callback from the proxy is implemented as a "Route" to a business service, supplying the endpoint address as a routing option.

                          It turns out that the HTTP "500 Internal Server Error" was originating from the response callback service that was invoked by the proxy service. The root cause was an incorrect XML namespace in the message that was passed to the callback. Evidently AquaLogic, upon receiving the error response from the proxy's call to the callback service, routes this error response back to the original caller of the proxy. There are two problems with the way AquaLogic does this:
                          <ol><li>Despite being an asynchronous operation that the proxy is handling, an HTTP response is not sent back to the caller of the proxy until the final "Route" node is completed within the proxy's message flow. This is not asynchronous behavior.</li>
                          <li>The response returned from the callback service that is called in the proxy's "Route" node contained the "500 Internal Server" as well as a SOAP fault that described the error condition. Although the HTTP "500 Internal Server Error" response was forwarded (returned?) to the caller of the proxy service, the SOAP fault was not included in the HTTP response from the proxy to its client. Therefore all useful information about the source of the error was lost. I only found the error message by snooping the network and decoding the HTTP packets exchanged between the proxy and its client.</li>
                          </ol>
                          #2 just sounds like a bug in AquaLogic's error handling logic. #1, however, surprises me. Is there a way to make the proxy service truly asynchronous?

                          Thanks,
                          Eric
                          • 11. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                            22565
                            Hi Eric,

                            split the proxy service into a front-end HTTP proxy service and a
                            back-end JMS (one-way) proxy service with an HTTP outbound
                            transport.

                            regards,
                            Jesper
                            • 12. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                              user10984444
                              HI,

                              I am looking for a solution to the problem (i am using Oracle service Bus_10.3).

                              After publishing, I can get the wsdl from the web browser but calling the proxy service directly results:

                              com.bea.control.ServiceControlException: Unexpected exception raised invoking getTerminalDistance on control com.demo.control.TerminalLocationServiceControl. Use getCause() to see the root cause.[java.rmi.RemoteException: SOAPFaultException - FaultCode [{http://schemas.xmlsoap.org/soap/envelope/}Server] FaultString [BEA-380001: Internal Server Error] FaultActor [null] Detail [<detail><con:fault xmlns:con="http://www.bea.com/wli/sb/context"><con:errorCode>BEA-380001</con:errorCode><con:reason>Internal Server Error</con:reason><con:location><con:node>RouteNode3</con:node><con:path>response-pipeline</con:path></con:location></con:fault></detail>]; nested exception is:
                                   weblogic.wsee.jaxrpc.soapfault.WLSOAPFaultException: BEA-380001: Internal Server Error]
                                   at com.bea.control.servicecontrol.impl.ServiceControlImpl.invoke(ServiceControlImpl.java:696)
                                   at com.demo.control.TerminalLocationServiceControlBean.getTerminalDistance(TerminalLocationServiceControlBean.java:132)
                                   at com.demo.control.TerminalLocationImpl.getTerminalDistance(TerminalLocationImpl.java:51)
                                   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                                   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                   at java.lang.reflect.Method.invoke(Method.java:597)
                                   at weblogic.wsee.component.pojo.JavaClassComponent.invoke(JavaClassComponent.java:112)
                                   at weblogic.wsee.ws.dispatch.server.ComponentHandler.handleRequest(ComponentHandler.java:84)
                                   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:292)
                                   at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
                                   at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3504)
                                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
                                   at weblogic.security.service.SecurityManager.runAs(Unknown Source)
                                   at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2186)
                                   at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2092)
                                   at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
                                   at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                                   at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
                              Caused by: java.rmi.RemoteException: SOAPFaultException - FaultCode [{http://schemas.xmlsoap.org/soap/envelope/}Server] FaultString [BEA-380001: Internal Server Error] FaultActor [null] Detail [<detail><con:fault xmlns:con="http://www.bea.com/wli/sb/context"><con:errorCode>BEA-380001</con:errorCode><con:reason>Internal Server Error</con:reason><con:location><con:node>RouteNode3</con:node><con:path>response-pipeline</con:path></con:location></con:fault></detail>]; nested exception is:
                                   weblogic.wsee.jaxrpc.soapfault.WLSOAPFaultException: BEA-380001: Internal Server Error
                                   at weblogic.wsee.jaxrpc.StubImpl.throwRemoteException(StubImpl.java:296)

                              I have implemented one testservice and trying to invoke Aqualogic proxy using service control generated through weblogic workshop and getting above error. but if I use test console of Service bus to test this proxy, it runs fine. Also I have configured proxy service message flow where i am using "Replace" action to replce the header from the incoming reuest with the following as my business service expects this security token:

                              <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                              <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:mustUnderstand="1">
                              <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-24512621">
                              <wsse:Username>sample:parlayx</wsse:Username>
                              <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">1234</wsse:Password>
                              </wsse:UsernameToken>
                              </wsse:Security>
                              </soap:Header>


                              please Please share any additional configuration/settings needed.

                              thanks
                              Narendra
                              • 13. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                                user10984444
                                In sequence with above post:

                                My business service is targeting a service deployed on tomcat5.5 and when i saw the error log, it is showing:

                                [27 May 2009 10:38:46,921] ERROR http.AxisServlet -
                                String index out of range: -2

                                java.lang.StringIndexOutOfBoundsException: String index out of range: -2
                                     at java.lang.String.substring(String.java:1938)
                                     at com.lucent.isg.parlayx.simulator.soapmonitor.SOAPMonitorService.publishMessage(SOAPMonitorService.java:46)
                                     at com.lucent.isg.parlayx.simulator.soapmonitor.SOAPMonitorHandler.invoke(SOAPMonitorHandler.java:102)
                                     at org.apache.axis2.engine.Phase.invoke(Phase.java:292)
                                     at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
                                     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132)
                                     at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
                                     at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
                                     at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                                     at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                                     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
                                     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
                                     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
                                     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
                                     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                                     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
                                     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
                                     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
                                     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
                                     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
                                     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
                                     at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
                                     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
                                     at java.lang.Thread.run(Thread.java:619)

                                I could not get the clue what is the problem? Is there any compatibility issue?

                                Please help as it is very urgent issue....thanks in advance...

                                thanks
                                Narendra
                                • 14. Re: "500 Internal Server Error" response from asynchronous AquaLogic proxy
                                  701465
                                  BEA-380001
                                       

                                  Error: Application error: message

                                  Description
                                       An application error has occured in ALSB transport subsystem while processing the message. There should be a specific message that describes specific cause of the problem. Only transports that explicitely declare support for application errors can return such errors. This error is explicitly raised by the transport implementation and usually has a customized message associated with it. It is used by ALSB to prevent unecessary retries.

                                  Action
                                       Check in the transport documentation describing application errors.
                                  1 2 上一个 下一个