1 2 Previous Next 17 Replies Latest reply on Jul 29, 2010 11:18 AM by SivakDivi

    "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 Previous Next