@Override protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException { String addr = getAddr(url); HttpServer httpServer = serverMap.get(addr); if (httpServer == null) { httpServer = httpBinder.bind(url, new WebServiceHandler()); serverMap.put(addr, httpServer); } final ServerFactoryBean serverFactoryBean = new ServerFactoryBean(); serverFactoryBean.setAddress(url.getAbsolutePath()); serverFactoryBean.setServiceClass(type); serverFactoryBean.setServiceBean(impl); serverFactoryBean.setBus(bus); serverFactoryBean.setDestinationFactory(transportFactory); serverFactoryBean.create(); return new Runnable() { @Override public void run() { if(serverFactoryBean.getServer()!= null) { serverFactoryBean.getServer().destroy(); } if(serverFactoryBean.getBus()!=null) { serverFactoryBean.getBus().shutdown(true); } } }; }
svrFactory = new JaxWsServerFactoryBean(); } else { svrFactory = new ServerFactoryBean(); svrFactory.getServiceFactory().setDataBinding(new AegisDatabinding()); svrFactory.setBus(getCXFBus()); svrFactory.setServiceName(soapServiceDefinition.getServiceName()); svrFactory.setAddress(address); svrFactory.setPublishedEndpointUrl(soapServiceDefinition.getEndpointUrl().toExternalForm()); svrFactory.setServiceBean(serviceImpl); svrFactory.setServiceClass(Class.forName(soapServiceDefinition.getServiceInterface())); } catch (ClassNotFoundException e) { throw new RiceRuntimeException("Failed to publish service " + soapServiceDefinition.getServiceName() + " because service interface could not be loaded: " + soapServiceDefinition.getServiceInterface(), e); soapServiceDefinition.getServiceNameSpaceURI(), serviceDefinition.getServiceName()); properties.put(WSHandlerConstants.PW_CALLBACK_REF, authenticationHandler); svrFactory.getInInterceptors().add(new WSS4JInInterceptor(properties)); svrFactory.getInInterceptors().add(new SAAJInInterceptor()); } else { svrFactory.getInInterceptors().add(new CXFWSS4JInInterceptor(soapServiceDefinition.getBusSecurity())); svrFactory.getOutInterceptors().add(new CXFWSS4JOutInterceptor(soapServiceDefinition.getBusSecurity())); svrFactory.getInFaultInterceptors().add(new CXFWSS4JInInterceptor(soapServiceDefinition.getBusSecurity())); svrFactory.getOutFaultInterceptors().add(new CXFWSS4JOutInterceptor(soapServiceDefinition.getBusSecurity())); svrFactory.getInInterceptors().add(new LoggingInInterceptor()); svrFactory.getInInterceptors().add(new ImmutableCollectionsInInterceptor());
ClassLoader origClassLoader = svrFactory.getBus().getExtension(ClassLoader.class); try { String serviceAddress = getBaseAddress() + processURL(service.getUrl()); svrFactory.setAddress(serviceAddress); svrFactory.setServiceClass(serviceClass); svrFactory.setServiceBean(target); svrFactory.getBus().setExtension(service.getClassLoader(), ClassLoader.class); if (isLoggingStoreEnable()) { svrFactory.getFeatures().add(getStoreLoggingFeatureBean()); svrFactory.getInInterceptors().add(new CollectObjectSerializerInterceptor(getObjectSeializer(svrFactory))); svrFactory.getInInterceptors().add(new CollectOpenLServiceInterceptor(service)); svrFactory.getInInterceptors().add(new CollectPublisherTypeInterceptor(getPublisherType())); svrFactory.getInInterceptors().add(new CollectOperationResourceInfoInterceptor()); svrFactory.getInFaultInterceptors().add(new CollectObjectSerializerInterceptor(getObjectSeializer(svrFactory))); svrFactory.getInFaultInterceptors().add(new CollectOpenLServiceInterceptor(service)); svrFactory.getInFaultInterceptors().add(new CollectPublisherTypeInterceptor(getPublisherType())); svrFactory.getInFaultInterceptors().add(new CollectOperationResourceInfoInterceptor()); Server wsServer = svrFactory.create(); ServiceServer serviceServer = new ServiceServer(wsServer, svrFactory.getDataBinding()); runningServices.put(service, serviceServer); availableServices.add(createServiceInfo(service)); log.info("Service '{}' has been exposed with URL '{}'.", service.getName(), serviceAddress); } finally { svrFactory.getBus().setExtension(origClassLoader, ClassLoader.class);
factory = new JaxWsServerFactoryBean(); } else { factory = new ServerFactoryBean(); factory.setServiceClass(serviceClass); factory.setWsdlLocation(spec.getWsdlLocation()); factory.setAddress(spec.getAddress()); factory.setBus(bus); factory.setEndpointName(QName.valueOf(spec.getEndpointName())); factory.setSchemaLocations(getListOfString(spec.getSchemaLocations())); factory.setServiceName(QName.valueOf(spec.getServiceName())); factory.setInvoker(invoker); factory.setStart(false); retval = createServerFromJaxwsEndpoint((JaxWsServerFactoryBean)factory); } else { retval = factory.create();
sfb.setBindingId(bindingId); sfb.getFeatures().addAll(features); sfb.getInInterceptors().addAll(inInterceptors); sfb.getInFaultInterceptors().addAll(inFaultInterceptors); sfb.getOutInterceptors().addAll(outInterceptors); sfb.getOutFaultInterceptors().addAll(outFaultInterceptors); sfb.getInInterceptors().add(new MuleHeadersInInterceptor()); sfb.getInFaultInterceptors().add(new MuleHeadersInInterceptor()); sfb.getOutInterceptors().add(new MuleHeadersOutInterceptor()); sfb.getOutFaultInterceptors().add(new MuleHeadersOutInterceptor()); sfb.setAddress(address); // dummy URL for CXF sfb.setWsdlURL(wsdlLocation); sfb.setSchemaLocations(schemaLocations); ReflectionServiceFactoryBean svcFac = sfb.getServiceFactory(); initServiceFactory(svcFac); processor.setMuleContext(muleContext); configureMessageProcessor(sfb, processor); sfb.setStart(false);
sfb.setAddress(getAddress()); sfb.setServiceClass(cls); sfb.setInInterceptors(in); sfb.setOutInterceptors(out); sfb.setOutFaultInterceptors(outFault); sfb.setInFaultInterceptors(inFault); sfb.setFeatures(features); if (schemaLocations != null) { sfb.setSchemaLocations(schemaLocations); sfb.setBindingConfig(bindingConfig); sfb.setDataBinding(dataBinding); sfb.setTransportId(getTransportId()); sfb.setBindingId(getBindingId()); sfb.setWsdlURL(getWsdlURL()); sfb.setServiceName(getServiceName()); sfb.setEndpointName(getPortName()); sfb.getFeatures().add(new PayLoadDataFormatFeature(allowStreaming)); } else if (getDataFormat().dealias() == DataFormat.CXF_MESSAGE) { sfb.getFeatures().add(new CXFMessageDataFormatFeature());
public Server publish() throws Exception { jndiContext = new InitialContext(); Object obj = jndiContext.lookup(config.getJNDIName()); ejbHome = (EJBHome) PortableRemoteObject.narrow(obj, EJBHome.class); Class<?> interfaceClass = Class.forName(getServiceClassName()); boolean isJaxws = isJaxWsServiceInterface(interfaceClass); ServerFactoryBean factory = isJaxws ? new JaxWsServerFactoryBean() : new ServerFactoryBean(); factory.setServiceClass(interfaceClass); if (config.getWsdlURL() != null) { factory.getServiceFactory().setWsdlURL(config.getWsdlURL()); } factory.setInvoker(new EJBInvoker(ejbHome)); String baseAddress = isNotNull(getEjbServantBaseURL()) ? getEjbServantBaseURL() : getDefaultEJBServantBaseURL(); String address = baseAddress + "/" + config.getJNDIName(); factory.setAddress(address); if (address.length() >= 5 && HTTPS_PREFIX.equalsIgnoreCase(address.substring(0, 5))) { throw new UnsupportedOperationException("EJBEndpoint creation by https protocol is unsupported"); } if (getWorkManager() != null) { setWorkManagerThreadPoolToJetty(factory.getBus(), baseAddress); } Server server = factory.create(); LOG.info("Published EJB Endpoint of [" + config.getJNDIName() + "] at [" + address + "]"); return server; }
sf = new ServerFactoryBean(); sf.setServiceBean(getPojo()); sf.setAddress(address); if (getDataBinding() != null && getDataBinding() instanceof AegisDatabinding) { sf.getServiceFactory().setDataBinding(getDataBinding()); } else { sf.getServiceFactory().setDataBinding(new AegisDatabinding()); sf.getServiceFactory().setPopulateFromClass(true); sf.setStart(false); if (isUseJBIWrapper()) { sf.setBindingId(org.apache.servicemix.cxf.binding.jbi.JBIConstants.NS_JBI_BINDING); sf.setServiceName(getPojoService()); sf.setEndpointName(getPojoEndpoint()); server = sf.create(); server.getEndpoint().getInInterceptors().addAll(getInInterceptors()); server.getEndpoint().getInFaultInterceptors().addAll(getInFaultInterceptors()); if (sf.getServiceFactory().getServiceQName() != null) { if (getPojoService() == null) { setPojoService(sf.getServiceFactory().getServiceQName()); setService(sf.getServiceFactory().getServiceQName()); if (sf.getServiceFactory().getEndpointInfo().getName() != null) { if (getPojoEndpoint() == null) {
private void configureService(ServerFactoryBean svrFactory, Object service) { svrFactory.setServiceClass(wsTransactionConfiguration.getSei()); svrFactory.setServiceName(wsTransactionConfiguration.getServiceName()); svrFactory.setWsdlLocation(wsTransactionConfiguration.getWsdlLocation()); svrFactory.setAddress(serviceAddress); svrFactory.setServiceBean(service); svrFactory.getFeatures().add(new WSAddressingFeature()); if (wsTransactionConfiguration.isMtom()) { svrFactory.setProperties(Collections.singletonMap("mtom-enabled", "true")); } }
ServerFactoryBean sfForSoapBinding = null; if (isUseAegis()) { sfForSoapBinding = new ServerFactoryBean(); } else { sfForSoapBinding = new JaxWsServerFactoryBean(); sfForSoapBinding.setServiceBean(getPojo()); sfForSoapBinding.getServiceFactory().setPopulateFromClass(true); sfForSoapBinding.setStart(false); sfForSoapBinding.setAddress("/dummy"); soapBindingServer = sfForSoapBinding.create();
if (CxfConstants.SIMPLE_FRONTEND.equals(frontend)) sfb = new ServerFactoryBean(); sfb.setDataBinding(new AegisDatabinding()); sfb.setServiceClass(serviceClass); sfb.setDataBinding(databinding); sfb.setServiceBean(((JavaComponent) muleService.getComponent()).getObjectFactory().getInstance(muleContext)); sfb.setServiceName(new QName(getNamespace(), getService()));
if (getServiceFactory().getProperties() == null) { getServiceFactory().setProperties(getProperties()); } else if (getProperties() != null) { getServiceFactory().getProperties().putAll(getProperties()); if (serviceBean != null && getServiceClass() == null) { setServiceClass(ClassHelper.getRealClass(bus, serviceBean)); getServiceFactory().setInvoker(invoker); } else if (serviceBean != null) { invoker = createInvoker(); getServiceFactory().setInvoker(invoker); Endpoint ep = createEndpoint(); getServiceFactory().sendEvent(FactoryBeanListener.Event.PRE_SERVER_CREATE, server, serviceBean, serviceBean == null ? getServiceClass() == null ? getServiceFactory().getServiceClass() : getServiceClass() : getServiceClass() == null ? ClassHelper.getRealClass(getBus(), getServiceBean()) : getServiceClass()); server = new ServerImpl(getBus(), ep, getDestinationFactory(), getBindingFactory());
@Override public Consumer createConsumer(Processor processor) { AbstractWebService serviceInstance = getServiceInstance(); ServerFactoryBean serverFactory = getJaxWsServiceFactory().createServerFactory(serviceInstance); if (features != null) { serverFactory.getFeatures().addAll(features); } if (schemaLocations != null) { if (serverFactory.getSchemaLocations() == null) { serverFactory.setSchemaLocations(schemaLocations); } else { serverFactory.getSchemaLocations().addAll(schemaLocations); } } if (properties != null) { if (serverFactory.getProperties() == null) { serverFactory.setProperties(properties); } else { serverFactory.getProperties().putAll(properties); } } Server server = serverFactory.create(); AbstractWebService service = (AbstractWebService) serverFactory.getServiceBean(); return new DefaultWsConsumer<>(this, processor, service, server); }
@Override protected ServerFactoryBean createServerFactory() throws Exception { ServerFactoryBean sfb = new ServerFactoryBean(); sfb.setDataBinding(new StaxDataBinding()); sfb.getFeatures().add(new StaxDataBindingFeature()); ProxyServiceFactoryBean proxyServiceFactoryBean = new ProxyServiceFactoryBean(); proxyServiceFactoryBean.setSoapVersion(getSoapVersion()); sfb.setServiceFactory(proxyServiceFactoryBean); sfb.setServiceClass(ProxyService.class); addProxyInterceptors(sfb); return sfb; }
public Server create() { ClassLoaderHolder orig = null; try { if (bus != null) { ClassLoader loader = bus.getExtension(ClassLoader.class); if (loader != null) { orig = ClassLoaderUtils.setThreadContextClassloader(loader); } } Server server = super.create(); initializeResourcesAndHandlerChain(server); checkPrivateEndpoint(server.getEndpoint()); return server; } finally { if (orig != null) { orig.reset(); } } }
answer = new JaxWsServerFactoryBean(); } else { answer = new ServerFactoryBean(); if (answer.getServiceName() == null && getServiceLocalName() != null) { answer.setServiceName(new QName(getServiceNamespace(), getServiceLocalName())); if (answer.getEndpointName() == null && getEndpointLocalName() != null) { answer.setEndpointName(new QName(getEndpointNamespace(), getEndpointLocalName())); checkName(answer.getEndpointName(), "endpoint/port name"); checkName(answer.getServiceName(), "service name");
/* internal for test */ServerFactoryBean getServerFactoryBean() { if (serverFactory != null) { return (ServerFactoryBean) serverFactory.getObject(); } return new ServerFactoryBean(); }
@Override public Consumer createConsumer(Processor processor) { AbstractHl7v2WebService serviceInstance = (AbstractHl7v2WebService) getServiceInstance(); serviceInstance.setHl7v2Configuration(this); ServerFactoryBean serverFactory = getJaxWsServiceFactory().createServerFactory(serviceInstance); Server server = serverFactory.create(); AbstractWebService service = (AbstractWebService) serverFactory.getServiceBean(); return new DefaultWsConsumer<>(this, processor, service, server); }
protected Server createServer() throws Exception { ServerFactoryBean svrBean = cxfEndpoint.createServerFactoryBean(); svrBean.setInvoker(new CxfConsumerInvoker(cxfEndpoint)); Server server = svrBean.create(); // Apply the server configurer if it is possible if (cxfEndpoint.getCxfEndpointConfigurer() != null) { cxfEndpoint.getCxfEndpointConfigurer().configureServer(server); } server.getEndpoint().getEndpointInfo().setProperty("serviceClass", cxfEndpoint.getServiceClass()); if (ObjectHelper.isNotEmpty(cxfEndpoint.getPublishedEndpointUrl())) { server.getEndpoint().getEndpointInfo().setProperty("publishedEndpointUrl", cxfEndpoint.getPublishedEndpointUrl()); } final MessageObserver originalOutFaultObserver = server.getEndpoint().getOutFaultObserver(); server.getEndpoint().setOutFaultObserver(message -> { originalOutFaultObserver.onMessage(message); CxfUtils.closeCamelUnitOfWork(message); }); // setup the UnitOfWorkCloserInterceptor for OneWayMessageProcessor server.getEndpoint().getInInterceptors().add(new UnitOfWorkCloserInterceptor(Phase.POST_INVOKE, true)); // close the UnitOfWork normally server.getEndpoint().getOutInterceptors().add(new UnitOfWorkCloserInterceptor()); return server; }