Search in sources :

Example 1 with WSFException

use of org.jboss.wsf.spi.WSFException in project jbossws-cxf by jbossws.

the class RMStoreFeature method initializeProvider.

protected void initializeProvider(InterceptorProvider provider, Bus bus) {
    String dataSource = serverDataSource;
    RMTxStore rmStore = new RMDataSourceStore();
    if (provider instanceof Client) {
        try {
            Connection con = DriverManager.getConnection("jdbc:derby:./target/wsrmdb;create=true", rmStore.getUserName(), rmStore.getPassword());
            rmStore.setConnection(con);
        } catch (SQLException e) {
            Loggers.ROOT_LOGGER.log(Level.FATAL, "Can't create connection from " + rmStore.getUrl(), e);
            throw new WSFException(e);
        }
    } else {
        // server side
        if (ctx == null) {
            try {
                ctx = new InitialContext();
                DataSource rmDs = (DataSource) ctx.lookup(dataSource);
                rmStore.setDataSource(rmDs);
            } catch (NamingException e) {
                Loggers.DEPLOYMENT_LOGGER.log(Level.FATAL, "Can't create datasource with " + dataSource, e);
                throw new WSFException(e);
            }
        }
    }
    rmStore.init();
    this.setStore(rmStore);
    // force to use RM11 and it can only work with wsa200508 (http://www.w3.org/2005/08/addressing) which is enabled with @Addressing
    this.setRMNamespace(RM11Constants.NAMESPACE_URI);
    RMAssertion assertion = new RMAssertion();
    BaseRetransmissionInterval retransMissionInveral = new BaseRetransmissionInterval();
    retransMissionInveral.setMilliseconds(10000L);
    assertion.setBaseRetransmissionInterval(retransMissionInveral);
    this.setRMAssertion(assertion);
    super.initializeProvider(provider, bus);
}
Also used : SQLException(java.sql.SQLException) RMAssertion(org.apache.cxf.ws.rmp.v200502.RMAssertion) BaseRetransmissionInterval(org.apache.cxf.ws.rmp.v200502.RMAssertion.BaseRetransmissionInterval) Connection(java.sql.Connection) WSFException(org.jboss.wsf.spi.WSFException) NamingException(javax.naming.NamingException) Client(org.apache.cxf.endpoint.Client) RMTxStore(org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore) InitialContext(javax.naming.InitialContext) DataSource(javax.sql.DataSource)

Example 2 with WSFException

use of org.jboss.wsf.spi.WSFException in project jbossws-cxf by jbossws.

the class BusHolder method configure.

/**
 * Update the Bus held by the this instance using the provided parameters.
 * This basically prepares the bus for being used with JBossWS.
 *
 * @param resolver               The ResourceResolver to configure, if any
 * @param configurer             The JBossWSCXFConfigurer to install in the bus, if any
 * @param wsmd                   The current JBossWebservicesMetaData, if any
 * @param dep                    The current deployment
 */
public void configure(ResourceResolver resolver, Configurer configurer, JBossWebservicesMetaData wsmd, Deployment dep) {
    if (configured) {
        throw Messages.MESSAGES.busAlreadyConfigured(bus);
    }
    bus.setProperty(org.jboss.wsf.stack.cxf.client.Constants.DEPLOYMENT_BUS, true);
    busHolderListener = new BusHolderLifeCycleListener();
    bus.getExtension(BusLifeCycleManager.class).registerLifeCycleListener(busHolderListener);
    setWSDLManagerStreamWrapper(bus);
    if (configurer != null) {
        bus.setExtension(configurer, Configurer.class);
    }
    Map<String, String> props = getProperties(wsmd);
    setInterceptors(bus, dep, props);
    dep.addAttachment(Bus.class, bus);
    try {
        final JASPIAuthenticationProvider jaspiProvider = SPIProvider.getInstance().getSPI(JASPIAuthenticationProvider.class, ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader());
        if (jaspiProvider != null && jaspiProvider.enableServerAuthentication(dep, wsmd)) {
            bus.getInInterceptors().add(new AuthenticationMgrSubjectCreatingInterceptor());
        }
    } catch (WSFException e) {
        Loggers.DEPLOYMENT_LOGGER.cannotFindJaspiClasses();
    }
    setResourceResolver(bus, resolver);
    if (bus.getExtension(PolicyEngine.class) != null) {
        bus.getExtension(PolicyEngine.class).setAlternativeSelector(getAlternativeSelector(props));
    }
    // *first* enabled cxf management if required, *then* add anything else which could be manageable (e.g. work queues)
    setCXFManagement(bus, props);
    setAdditionalWorkQueues(bus, props);
    setWSDiscovery(bus, props);
    AnnotationsInfo ai = dep.getAttachment(AnnotationsInfo.class);
    if (ai == null || ai.hasAnnotatedClasses(PolicySets.class.getName())) {
        policySetsListener = new PolicySetsAnnotationListener(dep.getClassLoader());
        bus.getExtension(FactoryBeanListenerManager.class).addListener(policySetsListener);
    }
    // default to USE_ORIGINAL_THREAD = true; this can be overridden by simply setting the property in the endpoint or in the message using an interceptor
    // this forces one way operation to use original thread, which is required for ejb webserivce endpoints to avoid authorization failures from ejb container
    // and is a performance improvement in general when running in-container, as CXF needs to cache the message to free the thread, which is expensive
    // (moreover the user can tune the web container thread pool instead of expecting cxf to fork new threads)
    bus.setProperty(OneWayProcessorInterceptor.USE_ORIGINAL_THREAD, true);
    // [JBWS-3135] enable decoupled faultTo. This is an optional feature in cxf and we need this to be default to make it same behavior with native stack
    bus.setProperty("org.apache.cxf.ws.addressing.decoupled_fault_support", true);
    FeatureUtils.addFeatures(bus, bus, props);
    for (DDEndpoint dde : metadata.getEndpoints()) {
        EndpointImpl endpoint = new EndpointImpl(bus, newInstance(dde.getImplementor()));
        if (dde.getInvoker() != null)
            endpoint.setInvoker(newInvokerInstance(dde.getInvoker(), dep));
        endpoint.setAddress(dde.getAddress());
        endpoint.setEndpointName(dde.getPortName());
        endpoint.setServiceName(dde.getServiceName());
        endpoint.setWsdlLocation(dde.getWsdlLocation());
        setHandlers(endpoint, dde);
        if (dde.getProperties() != null) {
            Map<String, Object> p = new HashMap<String, Object>();
            p.putAll(dde.getProperties());
            endpoint.setProperties(p);
        }
        if (dde.isAddressingEnabled()) {
            WSAddressingFeature addressingFeature = new WSAddressingFeature();
            addressingFeature.setAddressingRequired(dde.isAddressingRequired());
            addressingFeature.setResponses(dde.getAddressingResponses());
            endpoint.getFeatures().add(addressingFeature);
        }
        endpoint.setPublishedEndpointUrl(dde.getPublishedEndpointUrl());
        endpoint.setSOAPAddressRewriteMetadata(dep.getAttachment(SOAPAddressRewriteMetadata.class));
        endpoint.publish();
        endpoints.add(endpoint);
        if (dde.isMtomEnabled()) {
            SOAPBinding binding = (SOAPBinding) endpoint.getBinding();
            binding.setMTOMEnabled(true);
        }
    }
    configured = true;
}
Also used : DDEndpoint(org.jboss.wsf.stack.cxf.metadata.services.DDEndpoint) HashMap(java.util.HashMap) EndpointImpl(org.jboss.wsf.stack.cxf.deployment.EndpointImpl) SOAPAddressRewriteMetadata(org.jboss.wsf.spi.metadata.config.SOAPAddressRewriteMetadata) PolicyEngine(org.apache.cxf.ws.policy.PolicyEngine) SOAPBinding(javax.xml.ws.soap.SOAPBinding) FactoryBeanListenerManager(org.apache.cxf.service.factory.FactoryBeanListenerManager) PolicySetsAnnotationListener(org.jboss.wsf.stack.cxf.extensions.policy.PolicySetsAnnotationListener) WSAddressingFeature(org.apache.cxf.ws.addressing.WSAddressingFeature) JASPIAuthenticationProvider(org.jboss.wsf.spi.security.JASPIAuthenticationProvider) WSFException(org.jboss.wsf.spi.WSFException) BusLifeCycleManager(org.apache.cxf.buslifecycle.BusLifeCycleManager) AnnotationsInfo(org.jboss.wsf.spi.deployment.AnnotationsInfo) AuthenticationMgrSubjectCreatingInterceptor(org.jboss.wsf.stack.cxf.security.authentication.AuthenticationMgrSubjectCreatingInterceptor)

Aggregations

WSFException (org.jboss.wsf.spi.WSFException)2 Connection (java.sql.Connection)1 SQLException (java.sql.SQLException)1 HashMap (java.util.HashMap)1 InitialContext (javax.naming.InitialContext)1 NamingException (javax.naming.NamingException)1 DataSource (javax.sql.DataSource)1 SOAPBinding (javax.xml.ws.soap.SOAPBinding)1 BusLifeCycleManager (org.apache.cxf.buslifecycle.BusLifeCycleManager)1 Client (org.apache.cxf.endpoint.Client)1 FactoryBeanListenerManager (org.apache.cxf.service.factory.FactoryBeanListenerManager)1 WSAddressingFeature (org.apache.cxf.ws.addressing.WSAddressingFeature)1 PolicyEngine (org.apache.cxf.ws.policy.PolicyEngine)1 RMTxStore (org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore)1 RMAssertion (org.apache.cxf.ws.rmp.v200502.RMAssertion)1 BaseRetransmissionInterval (org.apache.cxf.ws.rmp.v200502.RMAssertion.BaseRetransmissionInterval)1 AnnotationsInfo (org.jboss.wsf.spi.deployment.AnnotationsInfo)1 SOAPAddressRewriteMetadata (org.jboss.wsf.spi.metadata.config.SOAPAddressRewriteMetadata)1 JASPIAuthenticationProvider (org.jboss.wsf.spi.security.JASPIAuthenticationProvider)1 EndpointImpl (org.jboss.wsf.stack.cxf.deployment.EndpointImpl)1