Many, many thanks for this Freeman.  Everything is working fine now.


On Wed, Oct 1, 2008 at 10:45 PM, Freeman Fang <[EMAIL PROTECTED]>wrote:

> Hi,
> By default cxf provider(which actually is cxf client) will use chunked
> transfer encoding for obtaining higher performance, which means doesn't set
> contentlength to the outgoing http header. However, some  server doesn't
> support this feature yet (or not by  default use chunked mode). You can
> disable chunked mode for cxf provider by add a cxf configuration file,
> let's
> say, namely nochunk.xml which looks like
>
> <beans xmlns="http://www.springframework.org/schema/beans";
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration
> "
>       xsi:schemaLocation="
> http://cxf.apache.org/transports/http/configuration
>           http://cxf.apache.org/schemas/configuration/http-conf.xsd
>            http://www.springframework.org/schema/beans
>            http://www.springframework.org/schema/beans/spring-beans.xsd";>
>
>  <http-conf:conduit
>           name="{urn:ZSI:examples}EchoServer.http-conduit">
>      <http-conf:client AllowChunking="false"/>
>  </http-conf:conduit>
> </beans>
> and add busCfg="nochunk.xml" attribute for your cxf bc provider
> configuration.
>
> For more about what the chunked mode means for http transport,please take a
> look at [1] for more info
> For more about how to configure the http transport used for cxf, please
> take
> a look at [2]
> [1]
>
> http://www.nabble.com/Just-what-is-%27AllowChunking%27--td19001650.html#a19046421
> [2]
>
> http://cwiki.apache.org/CXF20DOC/client-http-transport-including-ssl-support.html
>
> Regards
> Freeman
>
> On Thu, Oct 2, 2008 at 4:10 AM, Russ Chan <[EMAIL PROTECTED]> wrote:
>
> > Greetings all,
> >
> > We're doing a proof of concept with Servicemix/Fuse (3.3.1.7), but are
> > running into a couple of problems.  I'm hoping someone can help.
> >
> > What we're trying to do is actually quite simple:
> >
> > file-poller --> camelroute --> cxf-bc:provider soap --> log
> >
> >
> > Everything is working up to the cxf-bc:provider calling out to the soap
> > service.
> > The payload of the call to the soap service looks correct, but for one
> > thing:
> >
> > The content-length header is missing, which the soap service is (rightly)
> > rejecting with a fault.
> >
> > I've searched through the lists and haven't managed to find anyone else
> > with
> > a similar problem.
> >
> > The Camel route looks like this:
> >  from ("jbi:service:urn:ZSI:examples:CamelRoute")
> >                .pipeline(
> >                        "log:BCSIn",
> >
> >
> >
> //"jbi:endpoint:urn:ZSI:examples:EchoServer:EchoServer?mep=in-out&operation=Echo",
> >
> > "jbi:endpoint:urn:ZSI:examples:EchoServer:EchoServer?mep=in-out",
> >                        "log:BCSOut"
> >                );
> >
> > (Note the commented out line - when I use that one instead, I get an NPE
> in
> > CxfBCProvider...)
> >
> > The cxfbc: provider endpoint is configured thusly:
> > <beans
> >       xmlns="http://www.springframework.org/schema/beans";
> >       xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance";
> >       xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
> >       xmlns:bs="urn:ZSI:examples"
> >       xsi:schemaLocation="http://servicemix.apache.org/cxfse/1.0
> > http://servicemix.apache.org/schema/servicemix-cxfse-3.3.1.7-fuse.xsd
> >       http://www.springframework.org/schema/beans
> > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>
> >
> >  <cxfbc:provider
> >        service="bs:EchoServer"
> >        endpoint="EchoServer"
> >        useJBIWrapper="true"
> >        wsdl="http://localhost:9999/EchoServer?WSDL";
> >        locationURI="http://localhost:9999/EchoServer"; >
> >        <cxfbc:inInterceptors>
> >            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"
> />
> >        </cxfbc:inInterceptors>
> >        <cxfbc:outInterceptors>
> >            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"
> > />
> >        </cxfbc:outInterceptors>
> >        <cxfbc:inFaultInterceptors>
> >            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"
> />
> >        </cxfbc:inFaultInterceptors>
> >        <cxfbc:outFaultInterceptors>
> >            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"
> > />
> >        </cxfbc:outFaultInterceptors>
> >    </cxfbc:provider>
> > </beans>
> >
> >
> >
> > The soap service is a simple "echo" service provided by a python ZSI
> > server.  We have python clients and Java (axis) clients connecting to it
> > just fine.
> >
> > Here's the WSDL:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <definitions
> >  xmlns="http://schemas.xmlsoap.org/wsdl/";
> >  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> >  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
> >  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
> >  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >  xmlns:tns="urn:ZSI:examples"
> >  targetNamespace="urn:ZSI:examples" >
> >  <types>
> >  <xsd:schema elementFormDefault="qualified"
> > targetNamespace="urn:ZSI:examples">
> >      <xsd:element name="Echo">
> >        <xsd:complexType>
> >          <xsd:sequence>
> >            <xsd:element minOccurs="0" maxOccurs="1" name="EchoIn"
> > type="xsd:string" />
> >          </xsd:sequence>
> >        </xsd:complexType>
> >      </xsd:element>
> >      <xsd:element name="EchoResponse">
> >        <xsd:complexType>
> >          <xsd:sequence>
> >            <xsd:element minOccurs="0" maxOccurs="1" name="EchoResult"
> > type="xsd:string" />
> >          </xsd:sequence>
> >        </xsd:complexType>
> >      </xsd:element>
> >  </xsd:schema>
> >  </types>
> >
> >  <message name="EchoRequest">
> >    <part name="parameters" element="tns:Echo" />
> >  </message>
> >  <message name="EchoResponse">
> >    <part name="parameters" element="tns:EchoResponse"/>
> >  </message>
> >
> >  <portType name="EchoServer">
> >    <operation name="Echo">
> >      <input message="tns:EchoRequest"/>
> >      <output message="tns:EchoResponse"/>
> >    </operation>
> >  </portType>
> >
> >  <binding name="EchoServer" type="tns:EchoServer">
> >    <soap:binding style="document"
> >                  transport="http://schemas.xmlsoap.org/soap/http"/>
> >    <operation name="Echo">
> >      <soap:operation soapAction="Echo"/>
> >        <input>
> >          <soap:body use="literal"/>
> >        </input>
> >        <output>
> >          <soap:body use="literal"/>
> >        </output>
> >    </operation>
> >  </binding>
> >  <service name="EchoServer">
> >    <port name="EchoServer" binding="tns:EchoServer">
> >      <soap:address location="http://localhost:7000"/>
> >    </port>
> >  </service>
> > </definitions>
> >
> >
> > Here's the "on the wire" soap going out of the cxf-bc endpoint (no idea
> > where the 107 below is coming from):
> >
> > POST /EchoServer HTTP/1.1
> > Content-Type: text/xml; charset=UTF-8
> > SOAPAction: "Echo"
> > Content-Type: text/xml
> > Accept: *
> > Cache-Control: no-cache
> > Pragma: no-cache
> > User-Agent: Java/1.6.0_10-rc
> > Host: localhost:9999
> > Connection: keep-alive
> > Transfer-Encoding: chunked
> >
> > 107
> > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/
> > "><soap:Body
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> >        <msg:Echo>
> >        <msg:EchoIn xsi:type="xsd:string">Test</msg:EchoIn>
> >        </msg:Echo>
> > </soap:Body></soap:Envelope>
> >
> >
> > And the "on the wire" soap fault:
> >
> > HTTP/1.0 500 Internal error
> > Server: ZSI/1.1 BaseHTTP/0.3 Python/2.4.4
> > Date: Wed, 01 Oct 2008 20:10:28 GMT
> > Content-type: text/xml; charset="utf-8"
> > Content-Length: 722
> >
> > <SOAP-ENV:Envelope xmlns:SOAP-ENC="
> > http://schemas.xmlsoap.org/soap/encoding/";
> > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:ZSI="
> > http://www.zolera.com/schemas/ZSI/"; xmlns:xsd="
> > http://www.w3.org/2001/XMLSchema"; xmlns:xsi="
> > http://www.w3.org/2001/XMLSchema-instance
> >
> >
> "><SOAP-ENV:Header><ZSI:detail><ZSI:FaultDetail><ZSI:string>exceptions:KeyError
> >
> >
> 'content-length'</ZSI:string><ZSI:trace>build/bdist.macosx-10.4-fat/egg/ZSI/ServiceContainer.py:334:do_POST
> >
> >
> rfc822.py:390:__getitem__</ZSI:trace></ZSI:FaultDetail></ZSI:detail></SOAP-ENV:Header><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Processing
> >
> Failure</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
> >
> >
> > And... finally - the source file originally picked up by the file-poller
> > service:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper";
> > xmlns:msg="urn:ZSI:examples"
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > name="Echo"
> > type="msg:Echo"
> > version="1.0">
> > <jbi:part>
> >        <msg:Echo>
> >        <msg:EchoIn xsi:type="xsd:string">Test</msg:EchoIn>
> >        </msg:Echo>
> > </jbi:part>
> > </jbi:message>
> >
> >
> >
> > Regards,
> > Russ Chan
> >
>

Reply via email to