Hi Ruwan, I'm using synapse-1.1.1. If I remove the format="pox" from my original configuration, or use your filter configuration (both attached), I get a new series of errors. Synapse now wraps the request to the remote server in a soap envelope, instead of leaving it unadulterated. The request gets turned from this:
<?xml version="1.0" ?> <request> <message> <recipient>abc1234</recipient> <text>Test message.</text> </message> </request> into this: <?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <request> <message> <recipient>abc1234</recipient> <text>Test message.</text> </message> </request> </soapenv:Body> </soapenv:Envelope> Then, because the remote server cannot understand the xml, it produces a validation error that looks like this: <?xml version="1.0" ?> <response> <status>4</status> </response> Synapse is unhappy with that response and throws the following exception in the debug logs, probably because it is expecting some kind of SOAP response: 2008-05-02 18:39:02,985 [172.22.1.144-garth.corp.4info.net] [HttpClientWorker-3] ERROR ClientWorker Unexpected response received org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found response at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:219) at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:177) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:163) at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:161) at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:110) at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:53) at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:160) at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:111) at org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:160) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Synapse then responds to the client with a SOAP fault: <?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode>200</faultcode> <faultstring>OK</faultstring> <detail>Unexpected response received : First Element must contain the local name, Envelope , but found response</detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> Thanks, Garth On Fri, May 2, 2008 at 6:27 PM, Ruwan Linton <[EMAIL PROTECTED]> wrote: > Hi Garth, > > I just checked this with our sample client and it seems to work fine. I sent > a XML payload to the proxy on Synapse and forwarded that message to the > sample service (SimpleStockQuoteService) and send back the response. (You > don't need to use the format="pox" in the endpoint because you are sending a > POX payload) You may verify this by running the sample 50 [1] after changing > the address endpoint to remove the format="soap11". > > > <definitions xmlns="http://ws.apache.org/ns/synapse"> > <!-- filtering of messages with XPath and regex matches --> > <filter source="get-property('To')" regex=".*/StockQuote.*"> > <send> > <endpoint> > <address > uri="http://localhost:9000/soap/SimpleStockQuoteService"/> > </endpoint> > </send> > <drop/> > </filter> > <send/> > </definitions> > > > BTW: what is the version of synapse that you are using? > > [1] - http://synapse.apache.org/Synapse_Samples.html#Sample50 > > Thanks, > Ruwan > > > > On Fri, May 2, 2008 at 11:23 PM, Garth Patil <[EMAIL PROTECTED]> wrote: > > > log4j.category.org.apache.synapse=DEBUG > > log attached. > > Thanks, > > Garth > > > > On Fri, May 2, 2008 at 10:37 AM, Ruwan Linton <[EMAIL PROTECTED]> > > wrote: > > > Hi Garth, > > > > > > Thanks for the information, could you please send us the synapse DEBUG > > log > > > as well. You can change the log level by editing the > > lib/log4j.properties > > > file to enable DEBUG logs. > > > > > > Thanks, > > > Ruwan > > > > > > > > > > > > On Fri, May 2, 2008 at 10:56 PM, Garth Patil <[EMAIL PROTECTED]> > > wrote: > > > > > > > The request and response from the actual service is not SOAP. It is > > > > just XML. While I understand that synapse is very SOAP-centric, in > > > > this case, I want to use synapse to proxy the request for logging. > > > > The request to synapse looks like this: > > > > > > > > <?xml version="1.0" ?> > > > > <request> > > > > <message> > > > > <recipient>abc1234</recipient> > > > > <text>Test message.</text> > > > > </message> > > > > </request> > > > > > > > > Synapse passes the request on to the actual service without changing > > > > the XML. The request to the actual service looks exactly the same > > > > The response from the actual service looks like this: > > > > > > > > <?xml version="1.0" ?> > > > > <response> > > > > <requestId>F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6</requestId> > > > > <status>1status> > > > > </response> > > > > > > > > But the response returned by synapse adds the soapenv:Body and > > > > soapenv:Envelope tags to the response: > > > > > > > > <?xml version="1.0" ?> > > > > <soapenv:Envelope> > > > > <soapenv:Body> > > > > <response> > > > > <requestId>F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6</requestId> > > > > <status>1status> > > > > </response> > > > > </soapenv:Body> > > > > </soapenv:Envelope> > > > > > > > > Thanks to everyone for the help. > > > > Best, > > > > Garth > > > > > > > > On Thu, May 1, 2008 at 10:11 PM, Asankha C. Perera <[EMAIL PROTECTED]> > > > > wrote: > > > > > Garth > > > > > > > > > > Could you post a sample request sent to Synapse? I think the > > problem > > > > here > > > > > is that Synapse "detects" your original request as SOAP. Probably > > this > > > > is > > > > > due to the content type of the message. Is there a possibility for > > you > > > > to > > > > > use the TCPMon to capture an input message and post it here? > > > > > > > > > > asankha > > > > > > > > > > > > > > > > > > > > > > > > > Ruwan Linton wrote: > > > > > > > > > > > Hi Garth, > > > > > > > > > > > > Is it the actual web service which returns SOAP as the response > > for > > > > POX > > > > > > (XML/HTTP) request, or Synapse. If it is the former you need to > > ask > > > > this > > > > > > question from the web service container guys... > > > > > > > > > > > > If the request you send to synapse is POX then synapse will > > respond to > > > > you > > > > > > as POX regardless of whether it receives a SOAP or POX.. > > > > > > > > > > > > Could you please clarify the problem a little bit more? > > > > > > > > > > > > Thanks, > > > > > > Ruwan > > > > > > > > > > > > On Fri, May 2, 2008 at 3:04 AM, Garth Patil <[EMAIL PROTECTED] > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > Hi All, > > > > > > > I'm using synapse to proxy a web service that uses XML over > > HTTP. My > > > > > > > configuration looks like this: > > > > > > > <definitions xmlns= "http://ws.apache.org/ns/synapse"> > > > > > > > <proxy name="TestProxy"> > > > > > > > <target> > > > > > > > <endpoint> > > > > > > > <address uri="http://someremoteservice.com/msg" > > format="pox" > > > > /> > > > > > > > </endpoint> > > > > > > > <inSequence> > > > > > > > <log level= "full" /> > > > > > > > </inSequence> > > > > > > > <outSequence> > > > > > > > <log level= "full" /> > > > > > > > <send /> > > > > > > > </outSequence> > > > > > > > </target> > > > > > > > </proxy> > > > > > > > </definitions> > > > > > > > > > > > > > > I post XML to localhost:8080/soap/TestProxy, and synapse passes > > it > > > > to > > > > > > > the specified endpoint without changing it. The remote service > > > > returns > > > > > > > XML which is wrapped in soapenv:Body and soapenv:Envelope tags. > > Is > > > > > > > there a way to specify that the response (like the request) > > remain > > > > > > > unadulterated by SOAP tags? > > > > > > > Thanks, > > > > > > > Garth > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Ruwan Linton > > > http://www.wso2.org - "Oxygenating the Web Services Platform" > > > > > > > > > -- > > > Ruwan Linton > http://www.wso2.org - "Oxygenating the Web Services Platform" >
