Here is the route configuration in camel :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cxf="http://activemq.apache.org/camel/schema/cxfEndpoint"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://activemq.apache.org/camel/schema/cxfEndpoint
http://activemq.apache.org/camel/schema/cxf/cxfEndpoint.xsd
http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import
resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />
<import resource="classpath:tracker-core-services.xml" />
<cxf:cxfEndpoint id="serviceTracker"
address="http://localhost:9000/tracker"
serviceClass="com.xpectis.service.tracker.impl.TrackerServiceImpl"
/>
<camelContext id="camel" trace="true"
xmlns="http://activemq.apache.org/camel/schema/spring">
<route>
<from uri="cxf:bean:serviceTracker" />
<to uri="bean:tracker" />
</route>
</camelContext>
<bean id="tracker" class="com.xpectis.tracker.bean.ExtractParcel">
<property name="saveService" ref="saveService" />
</bean>
</beans>
The WSDL file :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions
targetNamespace="http://tracker.service.xpectis.com"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://tracker.service.xpectis.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Type definitions for input- and output parameters for webservice -->
<wsdl:types>
<xsd:schema targetNamespace="http://tracker.service.xpectis.com">
<xsd:element name="inputTrackParcel">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" maxOccurs="1"
minOccurs="1"/>
<xsd:element name="destination" type="xsd:string" maxOccurs="1"
minOccurs="1"></xsd:element>
<xsd:element name="origin" type="xsd:string"></xsd:element>
<xsd:element name="deliveryDate" type="xsd:date" maxOccurs="1"
minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="outputTrackParcel">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="reference" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<!-- Message definitions for input and output -->
<wsdl:message name="inputTrackParcel">
<wsdl:part element="tns:inputTrackParcel" name="parameters"/>
</wsdl:message>
<wsdl:message name="outputTrackParcel">
<wsdl:part element="tns:outputTrackParcel" name="parameters"/>
</wsdl:message>
<!-- Port (interface) definitions -->
<wsdl:portType name="TrackParcelEndpoint">
<wsdl:operation name="PostParcel">
<wsdl:input message="tns:inputTrackParcel"/>
<wsdl:output message="tns:outputTrackParcel"/>
</wsdl:operation>
</wsdl:portType>
<!-- Port bindings to transports and encoding - HTTP, document literal
encoding is used -->
<wsdl:binding name="TrackParcelBinding" type="tns:TrackParcelEndpoint">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="PostParcel">
<soap:operation
soapAction="http://tracker.service.xpectis.com/PostParcel"/>
<wsdl:input>
<soap:body parts="parameters" use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body parts="parameters" use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!-- Service definition -->
<wsdl:service name="TrackParcelService">
<wsdl:port binding="tns:TrackParcelBinding" name="TrackParcelPort">
<soap:address location="http://tracker.service.xpectis.com"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
The interface :
package com.xpectis.service.tracker;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import com.xpectis.service.tracker.InputTrackParcel;
import com.xpectis.service.tracker.OutputTrackParcel;
import com.xpectis.service.tracker.ObjectFactory;
/**
* This class was generated by Apache CXF 2.1.2
* Wed Oct 08 11:05:48 CEST 2008
* Generated source version: 2.1.2
*
*/
@WebService(targetNamespace = "http://tracker.service.xpectis.com", name =
"TrackParcelEndpoint")
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface TrackParcelEndpoint {
@WebResult(name = "outputTrackParcel", targetNamespace =
"http://tracker.service.xpectis.com", partName = "parameters")
@WebMethod(operationName = "PostParcel", action =
"http://tracker.service.xpectis.com/PostParcel")
public OutputTrackParcel PostParcel(@WebParam(partName = "parameters",
name = "inputTrackParcel", targetNamespace =
"http://tracker.service.xpectis.com") InputTrackParcel parameters
);
}
And implementation
package com.xpectis.service.tracker.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.xpectis.service.tracker.InputTrackParcel;
import com.xpectis.service.tracker.OutputTrackParcel;
import com.xpectis.service.tracker.TrackParcelEndpoint;
import org.apache.cxf.interceptor.*;
/**
* The webservice we have implemented.
*/
@InInterceptors(interceptors =
"org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors =
"org.apache.cxf.interceptor.LoggingOutInterceptor")
public class TrackerServiceImpl implements TrackParcelEndpoint {
private static final Log LOG =
LogFactory.getLog(TrackerServiceImpl.class);
private static int result = 0;
public OutputTrackParcel PostParcel(InputTrackParcel parameters) {
OutputTrackParcel response = new OutputTrackParcel();
response.setReference(result++);
LOG.info("Result : " + result);
return response;
}
}
willem.jiang wrote:
>
> Can you show me the SEI file and route configuration ?
> It looks like a wrapped and unwrapped issue.
>
> Willem
> cmoulliard wrote:
>> Hi,
>>
>> I have discovered a small problem between a client created using the
>> Client
>> ProxyFactoryBean and my webservice running with Apache Camel - CXF
>> component.
>>
>> When the client calls the web service, the ClientProxyFactoryBean class
>> of
>> CXF generates the following SOAP message :
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>> <soap:Body>
>> <ns1:PostParcel xmlns:ns1="http://tracker.service.xpectis.com/">
>> <ns2:inputTrackParcel xmlns:ns2="http://tracker.service.xpectis.com">
>> <name>chm</name>
>> <destination>Brussels</destination>
>> <origin>Florennes</origin>
>> </ns2:inputTrackParcel>
>> </ns1:PostParcel>
>> </soap:Body>
>> </soap:Envelope>
>>
>> Unfortunately, the tag <ns1:PostParcel> is not supported by the web
>> service
>> called in camel. If I remove it and send the message using SOAPUI client,
>> everything works fine.
>>
>> How can I solve this problem in Camel CXF component ?
>>
>> Charles Moulliard
>>
>> -----
>> Enterprise Architect
>>
>> Xpectis
>> 12, route d'Esch
>> L-1470 Luxembourg
>>
>> Phone +352 25 10 70 470
>> Mobile +352 621 45 36 22
>>
>> e-mail : [EMAIL PROTECTED]
>> web site : www.xpectis.com www.xpectis.com
>> My Blog : http://cmoulliard.blogspot.com/
>> http://cmoulliard.blogspot.com/
>>
>
>
>
-----
Enterprise Architect
Xpectis
12, route d'Esch
L-1470 Luxembourg
Phone +352 25 10 70 470
Mobile +352 621 45 36 22
e-mail : [EMAIL PROTECTED]
web site : www.xpectis.com www.xpectis.com
My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/
--
View this message in context:
http://www.nabble.com/Camel-CXF-component-does-not-understand-the-SOAP-message-containing-a-tag-for-the-wsdl%3Aoperation-%21%21%21-tp19881309s22882p19881834.html
Sent from the Camel - Users mailing list archive at Nabble.com.