String address = "http://localhost:9001/bridgetest";
factory.setAddress(address);
Server server = factory.create();
Endpoint endpoint = server.getEndpoint();
endpoint.getInInterceptors().add(new LoggingInInterceptor());
endpoint.getOutInterceptors().add(new LoggingOutInterceptor());
ServiceInfo service = endpoint.getEndpointInfo().getService();
assertNotNull(service);
// start external client
}
@Override
protected AbstractXmlApplicationContext createBeanFactory() {
return new ClassPathXmlApplicationContext(
"my_cxf_provider_consumer_bridge.xml");
}
}
---------my_cxf_provider_consumer_bridge.xml-----
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:my="http://mycompany/My">
<sm:container id="jbi" embedded="true">
<sm:endpoints>
<cxfbc:consumer wsdl="/service.wsdl"
service="my:MyService"
endpoint="MyPort"
targetEndpoint="MyPortProxy"
targetService="my:MyService"
targetInterface="my:MyServiceInterface">
<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:consumer>
<cxfbc:provider wsdl="/service.wsdl"
locationURI="http://localhost:9001/bridgetest"
service="my:MyService"
endpoint="MyPortProxy"
interfaceName="my:MyServiceInterface"
>
<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>
</sm:endpoints>
</sm:container>
</beans>
---------------------MyServiceInterface.java(auto-generated)---------------
import javax.jws.WebParam.Mode;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding;
import javax.jws.WebMethod;
import javax.jws.WebResult;
/**
* This class was generated by the CXF 2.0.2-incubator
* Tue Apr 29 09:10:49 EEST 2008
* Generated source version: 2.0.2-incubator
*
*/
@WebService(targetNamespace = "http://mycompany/My", name =
"MyServiceInterface")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface MyServiceInterface {
....
}
Truly yours, Ivan Pryvalov.
Freeman
ivan wrote:
Hi!
I use as example CxfBcProviderConsumerTest.java for testing my
service. But I faced some issues:
org.apache.cxf.service.factory.ServiceConstructionException: Could
not find definition for service
{http://mycompany.com/services/myservice}MyServiceInterfaceService.
at
org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:114)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:208)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:270)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:146)
at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:89)
at
org.apache.cxf.frontend.AbstractEndpointFactory.createEndpoint(AbstractEndpointFactory.java:83)
at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:107)
at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:147)
It seems it is added "Service" in "MyServiceInterface".
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(MyServiceInterface.class);
...
How did we get "MyServiceInterfaceService"? How to configure it
properly?
I have WSDL file, and there are no one matches of
"MyServiceInterfaceService". MyServiceInterface class - it is
generated using CXF maven plug-in (servicemix version 3.2.1).
Thanks,
Truly yours,
Ivan Pryvalov.