Search in sources :

Example 1 with JBossWSInvoker

use of org.jboss.wsf.stack.cxf.JBossWSInvoker in project jbossws-cxf by jbossws.

the class ServerBeanCustomizer method customize.

@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)) && ep.getEndpointInfo().getAddress().equals(depEp.getAddress())) {
                        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);
}
Also used : DestinationRegistry(org.apache.cxf.transport.http.DestinationRegistry) ServiceImpl(org.apache.cxf.service.ServiceImpl) EndpointImpl(org.jboss.wsf.stack.cxf.deployment.EndpointImpl) JaxWsEndpointImpl(org.apache.cxf.jaxws.support.JaxWsEndpointImpl) HTTPTransportFactory(org.apache.cxf.transport.http.HTTPTransportFactory) ServerFactoryBean(org.apache.cxf.frontend.ServerFactoryBean) JBossWSInvoker(org.jboss.wsf.stack.cxf.JBossWSInvoker) Endpoint(org.jboss.wsf.spi.deployment.Endpoint) DefaultHttpEndpoint(org.jboss.ws.common.deployment.DefaultHttpEndpoint) JBossWSDestinationRegistryImpl(org.jboss.wsf.stack.cxf.transport.JBossWSDestinationRegistryImpl)

Example 2 with JBossWSInvoker

use of org.jboss.wsf.stack.cxf.JBossWSInvoker in project jbossws-cxf by jbossws.

the class ServerBeanCustomizer method configureEndpoint.

protected void configureEndpoint(EndpointImpl endpoint) {
    // Configure wsdl file publisher
    if (wsdlPublisher != null) {
        endpoint.setWsdlPublisher(wsdlPublisher);
    }
    // Configure according to the specified jaxws endpoint configuration
    if (// before publishing, we set the jaxws conf
    !endpoint.isPublished()) {
        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());
            }
        }
    }
}
Also used : UseAsyncMethod(org.apache.cxf.annotations.UseAsyncMethod) JBossWSInvoker(org.jboss.wsf.stack.cxf.JBossWSInvoker) Endpoint(org.jboss.wsf.spi.deployment.Endpoint) DefaultHttpEndpoint(org.jboss.ws.common.deployment.DefaultHttpEndpoint) JASPIAuthenticationProvider(org.jboss.wsf.spi.security.JASPIAuthenticationProvider) AnnotationsInfo(org.jboss.wsf.spi.deployment.AnnotationsInfo) BasicConfigResolver(org.jboss.ws.common.configuration.BasicConfigResolver) AuthenticationMgrSubjectCreatingInterceptor(org.jboss.wsf.stack.cxf.security.authentication.AuthenticationMgrSubjectCreatingInterceptor)

Aggregations

DefaultHttpEndpoint (org.jboss.ws.common.deployment.DefaultHttpEndpoint)2 Endpoint (org.jboss.wsf.spi.deployment.Endpoint)2 JBossWSInvoker (org.jboss.wsf.stack.cxf.JBossWSInvoker)2 UseAsyncMethod (org.apache.cxf.annotations.UseAsyncMethod)1 ServerFactoryBean (org.apache.cxf.frontend.ServerFactoryBean)1 JaxWsEndpointImpl (org.apache.cxf.jaxws.support.JaxWsEndpointImpl)1 ServiceImpl (org.apache.cxf.service.ServiceImpl)1 DestinationRegistry (org.apache.cxf.transport.http.DestinationRegistry)1 HTTPTransportFactory (org.apache.cxf.transport.http.HTTPTransportFactory)1 BasicConfigResolver (org.jboss.ws.common.configuration.BasicConfigResolver)1 AnnotationsInfo (org.jboss.wsf.spi.deployment.AnnotationsInfo)1 JASPIAuthenticationProvider (org.jboss.wsf.spi.security.JASPIAuthenticationProvider)1 EndpointImpl (org.jboss.wsf.stack.cxf.deployment.EndpointImpl)1 AuthenticationMgrSubjectCreatingInterceptor (org.jboss.wsf.stack.cxf.security.authentication.AuthenticationMgrSubjectCreatingInterceptor)1 JBossWSDestinationRegistryImpl (org.jboss.wsf.stack.cxf.transport.JBossWSDestinationRegistryImpl)1