use of org.apache.cxf.service.invoker.PooledFactory in project cxf by apache.
the class AnnotationsFactoryBeanListener method setScope.
private void setScope(Server server, Class<?> cls) {
FactoryType scope = cls.getAnnotation(FactoryType.class);
if (scope != null) {
Invoker i = server.getEndpoint().getService().getInvoker();
if (i instanceof FactoryInvoker) {
Factory f;
if (scope.factoryClass() == FactoryType.DEFAULT.class) {
switch(scope.value()) {
case Session:
if (scope.args().length > 0) {
f = new SessionFactory(cls, Boolean.parseBoolean(scope.args()[0]));
} else {
f = new SessionFactory(cls);
}
break;
case PerRequest:
f = new PerRequestFactory(cls);
break;
case Pooled:
f = new PooledFactory(cls, Integer.parseInt(scope.args()[0]));
break;
default:
f = new SingletonFactory(cls);
break;
}
} else {
try {
f = scope.factoryClass().getConstructor(Class.class, String[].class).newInstance(cls, scope.args());
} catch (Throwable t) {
throw new ServiceConstructionException(t);
}
}
((FactoryInvoker) i).setFactory(f);
}
}
}
use of org.apache.cxf.service.invoker.PooledFactory 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