@Override public void customize(Object beanInstance) { if (beanInstance instanceof EndpointImpl) { configureEndpoint((EndpointImpl) beanInstance); } if (beanInstance instanceof ServerFactoryBean) { ServerFactoryBean factory = (ServerFactoryBean) beanInstance; if (factory.getInvoker() instanceof JBossWSInvoker) { ((JBossWSInvoker) factory.getInvoker()).setTargetBean(factory.getServiceBean()); } List<Endpoint> depEndpoints = dep.getService().getEndpoints(); if (depEndpoints != null) { final String targetBeanName = factory.getServiceBean().getClass().getName(); for (Endpoint depEndpoint : depEndpoints) { if (depEndpoint.getTargetBeanClass().getName().equals(targetBeanName)) { depEndpoint.addAttachment(Object.class, factory.getServiceBean()); } } } } if (beanInstance instanceof ServiceImpl) { ServiceImpl service = (ServiceImpl) beanInstance; List<Endpoint> depEndpoints = dep.getService().getEndpoints(); if (depEndpoints != null) { final Collection<org.apache.cxf.endpoint.Endpoint> eps = service.getEndpoints().values(); for (Endpoint depEp : depEndpoints) { for (org.apache.cxf.endpoint.Endpoint ep : eps) { if (ep.getService().getName().equals(depEp.getProperty(Message.WSDL_SERVICE)) && ep.getEndpointInfo().getName().equals(depEp.getProperty(Message.WSDL_PORT))) { depEp.addAttachment(org.apache.cxf.endpoint.Endpoint.class, ep); } } } } } if (beanInstance instanceof HTTPTransportFactory) { HTTPTransportFactory factory = (HTTPTransportFactory) beanInstance; DestinationRegistry oldRegistry = factory.getRegistry(); if (!(oldRegistry instanceof JBossWSDestinationRegistryImpl)) { factory.setRegistry(new JBossWSDestinationRegistryImpl()); } } super.customize(beanInstance); }
private void propagateAttachments(final DeploymentUnit unit, final ArchiveDeployment dep) { dep.addAttachment(DeploymentUnit.class, unit); unit.putAttachment(DEPLOYMENT_KEY, dep); final JBossWebMetaData webMD = getJBossWebMetaData(unit); dep.addAttachment(JBossWebMetaData.class, webMD); final WebservicesMetaData webservicesMD = getOptionalAttachment(unit, WEBSERVICES_METADATA_KEY); dep.addAttachment(WebservicesMetaData.class, webservicesMD); final JBossWebservicesMetaData jbossWebservicesMD = getOptionalAttachment(unit, JBOSS_WEBSERVICES_METADATA_KEY); dep.addAttachment(JBossWebservicesMetaData.class, jbossWebservicesMD); final JAXWSDeployment jaxwsDeployment = getOptionalAttachment(unit, JAXWS_ENDPOINTS_KEY); dep.addAttachment(JAXWSDeployment.class, jaxwsDeployment); final EjbJarMetaData ejbJarMD = getOptionalAttachment(unit, EjbDeploymentAttachmentKeys.EJB_JAR_METADATA); dep.addAttachment(EjbJarMetaData.class, ejbJarMD); }
/** * Creates new Web Service deployment. * * @param unit deployment unit * @return archive deployment */ private ArchiveDeployment newDeployment(final DeploymentUnit unit) { ROOT_LOGGER.creatingUnifiedWebservicesDeploymentModel(unit); final ResourceRoot deploymentRoot = unit.getAttachment(Attachments.DEPLOYMENT_ROOT); final VirtualFile root = deploymentRoot != null ? deploymentRoot.getRoot() : null; final ClassLoader classLoader; final Module module = unit.getAttachment(Attachments.MODULE); if (module == null) { classLoader = unit.getAttachment(CLASSLOADER_KEY); if (classLoader == null) { throw MESSAGES.classLoaderResolutionFailed(unit); } } else { classLoader = module.getClassLoader(); } final ArchiveDeployment dep = this.newDeployment(unit.getName(), classLoader); if (unit.getParent() != null) { final String parentDeploymentName = unit.getParent().getName(); final Module parentModule = unit.getParent().getAttachment(Attachments.MODULE); if (parentModule == null) { throw MESSAGES.classLoaderResolutionFailed(deploymentRoot); } final ClassLoader parentClassLoader = parentModule.getClassLoader(); ROOT_LOGGER.creatingUnifiedWebservicesDeploymentModel(unit.getParent()); final ArchiveDeployment parentDep = this.newDeployment(parentDeploymentName, parentClassLoader); dep.setParent(parentDep); } if (root != null) { dep.setRootFile(new VirtualFileAdaptor(root)); } else { dep.setRootFile(new ResourceLoaderAdapter(classLoader)); } dep.setRuntimeClassLoader(classLoader); dep.setType(deploymentType); return dep; }
protected void configureEndpoint(EndpointImpl endpoint) { // Configure wsdl file publisher if (wsdlPublisher != null) { endpoint.setWsdlPublisher(wsdlPublisher); } // Configure according to the specified jaxws endpoint configuration if (!endpoint.isPublished()) // before publishing, we set the jaxws conf { final Object implementor = endpoint.getImplementor(); // setup our invoker for http endpoints if invoker is not configured in jbossws-cxf.xml DD boolean isHttpEndpoint = endpoint.getAddress() != null && endpoint .getAddress() .substring(0, 5) .toLowerCase(Locale.ENGLISH) .startsWith("http"); if ((endpoint.getInvoker() == null) && isHttpEndpoint) { final AnnotationsInfo ai = dep.getAttachment(AnnotationsInfo.class); endpoint.setInvoker( new JBossWSInvoker(ai.hasAnnotatedClasses(UseAsyncMethod.class.getName()))); } // ** Endpoint configuration setup ** final String endpointClassName = implementor.getClass().getName(); final List<Endpoint> depEndpoints = dep.getService().getEndpoints(); for (Endpoint depEndpoint : depEndpoints) { if (endpointClassName.equals(depEndpoint.getTargetBeanName())) { org.jboss.wsf.spi.metadata.config.EndpointConfig config = depEndpoint.getEndpointConfig(); if (config == null) { // the ASIL did not set the endpoint configuration, perhaps because we're processing an // Endpoint.publish() API started endpoint or because we're on WildFly 8.0.0.Final or // previous version. We compute the config here then (clearly no container injection // will be performed on optional handlers attached to the config) BasicConfigResolver bcr = new BasicConfigResolver(dep, implementor.getClass()); config = bcr.resolveEndpointConfig(); depEndpoint.setEndpointConfig(config); } if (config != null) { endpoint.setEndpointConfig(config); } // also save Service QName and Port QName in the endpoint for later matches depEndpoint.setProperty(Message.WSDL_PORT, endpoint.getEndpointName()); depEndpoint.setProperty(Message.WSDL_SERVICE, endpoint.getServiceName()); } } // JASPI final JASPIAuthenticationProvider jaspiProvider = (JASPIAuthenticationProvider) ServiceLoader.loadService( JASPIAuthenticationProvider.class.getName(), null, ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader()); if (jaspiProvider == null) { Loggers.DEPLOYMENT_LOGGER.cannotFindJaspiClasses(); } else { if (jaspiProvider.enableServerAuthentication(endpoint, depEndpoints.get(0))) { endpoint.getInInterceptors().add(new AuthenticationMgrSubjectCreatingInterceptor()); } } } }