use of org.apache.cxf.jaxws.JAXWSMethodInvoker in project cxf by apache.
the class ProviderImpl method createEndpoint.
// new in 2.2
public Endpoint createEndpoint(String bindingId, Class<?> implementorClass, Invoker invoker, WebServiceFeature... features) {
if (EndpointUtils.isValidImplementor(implementorClass)) {
Bus bus = BusFactory.getThreadDefaultBus();
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
if (features != null) {
factory.getJaxWsServiceFactory().setWsFeatures(Arrays.asList(features));
}
if (invoker != null) {
factory.setInvoker(new JAXWSMethodInvoker(invoker));
try {
invoker.inject(new WebServiceContextImpl());
} catch (Exception e) {
throw new WebServiceException(new Message("ENDPOINT_CREATION_FAILED_MSG", LOG).toString(), e);
}
}
EndpointImpl ep = new EndpointImpl(bus, null, factory);
ep.setImplementorClass(implementorClass);
return ep;
}
throw new WebServiceException(new Message("INVALID_IMPLEMENTOR_EXC", LOG).toString());
}
use of org.apache.cxf.jaxws.JAXWSMethodInvoker in project cxf by apache.
the class ProviderServiceFactoryTest method testSOAPBindingFromCode.
@Test
public void testSOAPBindingFromCode() throws Exception {
JaxWsServiceFactoryBean bean = new JaxWsServiceFactoryBean();
bean.setServiceClass(SOAPSourcePayloadProvider.class);
bean.setBus(getBus());
bean.setInvoker(new JAXWSMethodInvoker(new SOAPSourcePayloadProvider()));
Service service = bean.create();
assertEquals("SOAPSourcePayloadProviderService", service.getName().getLocalPart());
InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
assertNotNull(intf);
assertEquals(1, intf.getOperations().size());
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setBus(getBus());
svrFactory.setServiceFactory(bean);
String address = "local://localhost:9000/test";
svrFactory.setAddress(address);
ServerImpl server = (ServerImpl) svrFactory.create();
// See if our endpoint was created correctly
assertEquals(1, service.getServiceInfos().get(0).getEndpoints().size());
Endpoint endpoint = server.getEndpoint();
Binding binding = endpoint.getBinding();
assertTrue(binding instanceof SoapBinding);
SoapBindingInfo sb = (SoapBindingInfo) endpoint.getEndpointInfo().getBinding();
assertEquals("document", sb.getStyle());
assertEquals(false, bean.isWrapped());
assertEquals(1, sb.getOperations().size());
Node res = invoke(address, LocalTransportFactory.TRANSPORT_ID, "/org/apache/cxf/jaxws/sayHi.xml");
addNamespace("j", "http://service.jaxws.cxf.apache.org/");
assertValid("/s:Envelope/s:Body/j:sayHi", res);
}
use of org.apache.cxf.jaxws.JAXWSMethodInvoker in project cxf by apache.
the class MEXInInterceptor method createEndpoint.
private synchronized Endpoint createEndpoint(Message message) {
if (mexEndpoint == null) {
MEXJaxWsServerFactoryBean factory = new MEXJaxWsServerFactoryBean(message.getExchange().getBus());
try {
Endpoint endpoint = factory.createEndpoint();
endpoint.getService().setInvoker(new JAXWSMethodInvoker(ep));
mexEndpoint = endpoint;
} catch (Exception ex) {
throw new Fault(ex);
}
}
return mexEndpoint;
}
use of org.apache.cxf.jaxws.JAXWSMethodInvoker in project cxf by apache.
the class ProviderServiceFactoryTest method testFromWSDL.
@Test
public void testFromWSDL() throws Exception {
URL resource = getClass().getResource("/wsdl/hello_world.wsdl");
assertNotNull(resource);
JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(HWSoapMessageProvider.class);
JaxWsServiceFactoryBean bean = new JaxWsServiceFactoryBean(implInfo);
bean.setWsdlURL(resource.toString());
Bus bus = getBus();
bean.setBus(bus);
bean.setServiceClass(HWSoapMessageProvider.class);
Service service = bean.create();
assertTrue(service.getInvoker() instanceof JAXWSMethodInvoker);
assertEquals("SOAPService", service.getName().getLocalPart());
assertEquals("http://apache.org/hello_world_soap_http", service.getName().getNamespaceURI());
InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
assertNotNull(intf);
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setBus(bus);
svrFactory.setServiceFactory(bean);
svrFactory.setStart(false);
ServerImpl server = (ServerImpl) svrFactory.create();
assertTrue(server.getEndpoint().getService().getInvoker() instanceof JAXWSMethodInvoker);
Endpoint endpoint = server.getEndpoint();
Binding binding = endpoint.getBinding();
assertTrue(binding instanceof SoapBinding);
}
use of org.apache.cxf.jaxws.JAXWSMethodInvoker in project cxf by apache.
the class ServerMisc method run.
protected void run() {
Factory factory = new PerRequestFactory(DocLitWrappedCodeFirstServiceImpl.class);
factory = new PooledFactory(factory, 4);
JAXWSMethodInvoker invoker = new JAXWSMethodInvoker(factory);
JaxWsServerFactoryBean factoryBean;
Map<String, Object> properties = new HashMap<>();
properties.put("bus.jmx.usePlatformMBeanServer", Boolean.TRUE);
properties.put("bus.jmx.enabled", Boolean.TRUE);
Bus b = new CXFBusFactory().createBus(null, properties);
setBus(b);
MetricRegistry registry = new MetricRegistry();
CodahaleMetricsProvider.setupJMXReporter(b, registry);
b.setExtension(registry, MetricRegistry.class);
factoryBean = new JaxWsServerFactoryBean();
factoryBean.setBus(b);
factoryBean.setAddress(DOCLIT_CODEFIRST_URL);
factoryBean.setServiceClass(DocLitWrappedCodeFirstServiceImpl.class);
factoryBean.setFeatures(Arrays.asList(new MetricsFeature()));
factoryBean.setInvoker(invoker);
servers.add(factoryBean.create());
factoryBean = new JaxWsServerFactoryBean();
factoryBean.setBus(b);
factoryBean.setAddress(DOCLIT_CODEFIRST_URL_XMLBINDING);
factoryBean.setServiceClass(DocLitWrappedCodeFirstServiceImpl.class);
factoryBean.setFeatures(Arrays.asList(new MetricsFeature()));
factoryBean.setInvoker(invoker);
factoryBean.setBindingId("http://cxf.apache.org/bindings/xformat");
factoryBean.setWsdlURL("cxf6866.wsdl");
servers.add(factoryBean.create());
factoryBean = new JaxWsServerFactoryBean();
factoryBean.setAddress(DOCLIT_CODEFIRST_SETTINGS_URL);
factoryBean.setServiceClass(DocLitWrappedCodeFirstServiceImpl.class);
factoryBean.setInvoker(invoker);
factoryBean.getServiceFactory().setAnonymousWrapperTypes(true);
factoryBean.getServiceFactory().getServiceConfigurations().add(0, new AbstractServiceConfiguration() {
public Boolean isWrapperPartNillable(MessagePartInfo mpi) {
return Boolean.TRUE;
}
public Long getWrapperPartMinOccurs(MessagePartInfo mpi) {
return Long.valueOf(1L);
}
});
servers.add(factoryBean.create());
// Object implementor4 = new DocLitWrappedCodeFirstServiceImpl();
// endpoints.add(Endpoint.publish(DOCLIT_CODEFIRST_URL, implementor4));
Object implementor7 = new DocLitBareCodeFirstServiceImpl();
EndpointImpl ep = (EndpointImpl) Endpoint.publish(DOCLITBARE_CODEFIRST_URL, implementor7);
ep.getServer().getEndpoint().getInInterceptors().add(new SAAJInInterceptor());
endpoints.add(ep);
Object implementor6 = new InterfaceInheritTestImpl();
endpoints.add(Endpoint.publish(DOCLIT_CODEFIRST_BASE_URL, implementor6));
Object implementor1 = new AnonymousComplexTypeImpl();
String address = "http://localhost:" + PORT + "/anonymous_complex_typeSOAP";
endpoints.add(Endpoint.publish(address, implementor1));
Object implementor2 = new JaxbElementTestImpl();
address = "http://localhost:" + PORT + "/jaxb_element_test";
endpoints.add(Endpoint.publish(address, implementor2));
Object implementor3 = new OrderedParamHolderImpl();
address = "http://localhost:" + PORT + "/ordered_param_holder/";
endpoints.add(Endpoint.publish(address, implementor3));
// Object implementor4 = new DocLitWrappedCodeFirstServiceImpl();
// endpoints.add(Endpoint.publish(DOCLIT_CODEFIRST_URL, implementor4));
Object implementor5 = new RpcLitCodeFirstServiceImpl();
endpoints.add(Endpoint.publish(RPCLIT_CODEFIRST_URL, implementor5));
endpoints.add(Endpoint.publish("http://localhost:" + PORT + "/InheritContext/InheritPort", new InheritImpl()));
endpoints.add(Endpoint.publish(CXF_5064_URL, new SOAPHeaderServiceImpl()));
}
Aggregations