Hi Glen,
The service name and port name should be a QName which includes the name
space.
eg.
serviceName={http://www.example.org/DoubleIt}DoubleItService
Willem
Glen Mazza wrote:
Hello,
I'm trying to use Camel's CXF component and I cannot get it the wsdl:service
"DoubleItService" from my WSDL. Here is the error stack I am getting:
[INFO] [exec:java]
[mpany.camel.CamelSample.main()] BusApplicationContext INFO
Refreshing [EMAIL PROTECTED]: display
name [EMAIL PROTECTED]; startup date
[Sun May 18 01:19:47 EDT 2008]; root of context hierarchy
[mpany.camel.CamelSample.main()] BusApplicationContext INFO Bean
factory for application context
[EMAIL PROTECTED]:
[EMAIL PROTECTED]
2008/05/18 1:19:50
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromWSDL
INFO: Creating Service DoubleItService from WSDL:
http://localhost:8080/doubleit/services/doubleit?wsdl
org.apache.cxf.service.factory.ServiceConstructionException: Could not find
definition for service DoubleItService.
at
org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:114)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:270)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:360)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:156)
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:74)
at
org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:51)
at
org.apache.camel.component.cxf.CxfProducer.createClientFormClientFactoryBean(CxfProducer.java:165)
at
org.apache.camel.component.cxf.CxfProducer.<init>(CxfProducer.java:66)
.....
Here is my construction of CXF_URI:
public class CamelSample {
private static final String JAXWS_SERVER_ADDRESS =
"http://localhost:8080/doubleit/services/doubleit";
private static final String CXF_URI = "cxf://" + JAXWS_SERVER_ADDRESS
+ "?wsdlURL=http://localhost:8080/doubleit/services/doubleit?wsdl"
+ "&portName=DoubleItPort&serviceName=DoubleItService";
The URI: http://localhost:8080/doubleit/services/doubleit?wsdl is indeed
accessible from my machine and it looks identical to here:
http://www.jroller.com/gmazza/date/20080417#WFstep5
My route is as follows:
context.addRoutes(new RouteBuilder() {
public void configure() {
from("test-jms:queue:test.queue").process(new Processor() {
public void process(Exchange e) {
System.out.println("This was called - Body: " +
e.getIn().getBody(String.class));
e.getIn().setHeader(CxfConstants.OPERATION_NAME,"DoubleIt");
final List<String> params = new ArrayList<String>();
params.add(e.getIn().getBody(String.class));
e.getOut().setBody(params);
}
}).to(CXF_URI).to("file://testfile").process(new Processor() {
public void process(Exchange e) {
System.out.println("In process"); // +
e.getIn().getBody(String.class));
List<String> abc = e.getIn().getBody(ArrayList.class);
System.out.println("This was called - in File list: " +
abc.get(0));
}
});
}
Can anyone see why Camel can't detect the wsdl:service DoubleItService?
Thanks,
Glen