Search in sources :

Example 11 with AddressingFeature

use of javax.xml.ws.soap.AddressingFeature in project cxf by apache.

the class JMSClientServerSoap12Test method testWSAddressingWithJms.

@Test
public void testWSAddressingWithJms() throws Exception {
    QName serviceName = new QName("http://apache.org/hello_world_doc_lit", "SOAPService8");
    QName portName = new QName("http://apache.org/hello_world_doc_lit", "SoapPort8");
    URL wsdl = getWSDLURL("/wsdl/hello_world_doc_lit.wsdl");
    SOAPService2 service = new SOAPService2(wsdl, serviceName);
    Greeter greeter = markForClose(service.getPort(portName, Greeter.class, cff, new AddressingFeature()));
    for (int idx = 0; idx < 5; idx++) {
        greeter.greetMeOneWay("test String");
        String greeting = greeter.greetMe("Milestone-" + idx);
        Assert.assertEquals(new String("Hello Milestone-") + idx, greeting);
        String reply = greeter.sayHi();
        Assert.assertEquals("Bonjour", reply);
        try {
            greeter.pingMe();
            Assert.fail("Should have thrown FaultException");
        } catch (PingMeFault ex) {
            Assert.assertNotNull(ex.getFaultInfo());
        }
    }
}
Also used : PingMeFault(org.apache.hello_world_doc_lit.PingMeFault) AddressingFeature(javax.xml.ws.soap.AddressingFeature) QName(javax.xml.namespace.QName) Greeter(org.apache.hello_world_doc_lit.Greeter) SOAPService2(org.apache.hello_world_doc_lit.SOAPService2) URL(java.net.URL) Test(org.junit.Test)

Example 12 with AddressingFeature

use of javax.xml.ws.soap.AddressingFeature in project cxf by apache.

the class WSRM12ServerCycleTest method runTest.

public void runTest(String cfg, boolean faultOnRestart) throws Exception {
    SpringBusFactory bf = new SpringBusFactory();
    bus = bf.createBus();
    BusFactory.setDefaultBus(bus);
    ControlService cs = new ControlService();
    Control control = cs.getControlPort();
    ConnectionHelper.setKeepAliveConnection(control, false, true);
    updateAddressPort(control, PORT);
    Assert.assertTrue("Failed to start greeter", control.startGreeter(cfg));
    System.setProperty("db.name", getPrefix() + "-recovery");
    Bus greeterBus = new SpringBusFactory().createBus();
    System.clearProperty("db.name");
    BusFactory.setDefaultBus(greeterBus);
    // avoid early client resends
    greeterBus.getExtension(RMManager.class).getConfiguration().setBaseRetransmissionInterval(new Long(60000));
    GreeterService gs = new GreeterService();
    Greeter greeter = gs.getGreeterPort(new LoggingFeature(), new AddressingFeature(), wsrm());
    updateAddressPort(greeter, PORT);
    greeter.greetMe("one");
    greeter.greetMe("two");
    greeter.greetMe("three");
    control.stopGreeter(cfg);
    // make sure greeter is down
    Thread.sleep(1000);
    control.startGreeter(cfg);
    // CXF-7392
    if (faultOnRestart) {
        try {
            greeter.greetMe("four");
        } catch (SOAPFaultException ex) {
            assertTrue(ex.getMessage().contains("wsrm:Identifier"));
        // expected, sequence identifier doesn't exist on other side
        }
    } else {
        // this should work as the sequence should be recovered on the server side
        greeter.greetMe("four");
    }
    ((Closeable) greeter).close();
    greeterBus.shutdown(true);
    control.stopGreeter(cfg);
    bus.shutdown(true);
}
Also used : Bus(org.apache.cxf.Bus) Control(org.apache.cxf.greeter_control.Control) SpringBusFactory(org.apache.cxf.bus.spring.SpringBusFactory) AddressingFeature(javax.xml.ws.soap.AddressingFeature) ControlService(org.apache.cxf.greeter_control.ControlService) Greeter(org.apache.cxf.greeter_control.Greeter) LoggingFeature(org.apache.cxf.ext.logging.LoggingFeature) Closeable(java.io.Closeable) GreeterService(org.apache.cxf.greeter_control.GreeterService) SOAPFaultException(javax.xml.ws.soap.SOAPFaultException)

Example 13 with AddressingFeature

use of javax.xml.ws.soap.AddressingFeature in project Payara by payara.

the class WSServletContextListener method registerEndpoint.

private void registerEndpoint(WebServiceEndpoint endpoint, ServletContext servletContext) throws Exception {
    ClassLoader classLoader = servletContext.getClassLoader();
    WsUtil wsu = new WsUtil();
    // Complete all the injections that are required
    Class serviceEndpointClass = Class.forName(endpoint.getServletImplClass(), true, classLoader);
    // Get the proper binding using BindingID
    String givenBinding = endpoint.getProtocolBinding();
    // TODO Rama
    // if(endpoint.getWsdlExposed() != null) {
    // wsdlExposed = Boolean.parseBoolean(endpoint.getWsdlExposed());
    // }
    // Get list of all wsdls and schema
    SDDocumentSource primaryWsdl = null;
    Collection docs = null;
    if (endpoint.getWebService().hasWsdlFile()) {
        URL pkgedWsdl = null;
        try {
            pkgedWsdl = servletContext.getResource('/' + endpoint.getWebService().getWsdlFileUri());
        } catch (MalformedURLException e) {
            logger.log(Level.SEVERE, LogUtils.CANNOT_LOAD_WSDL_FROM_APPLICATION, e.getMessage());
        }
        if (pkgedWsdl == null) {
            pkgedWsdl = endpoint.getWebService().getWsdlFileUrl();
        }
        if (pkgedWsdl != null) {
            primaryWsdl = SDDocumentSource.create(pkgedWsdl);
            docs = wsu.getWsdlsAndSchemas(pkgedWsdl);
            if (logger.isLoggable(Level.FINE)) {
                logger.log(Level.FINE, LogUtils.CREATING_ENDPOINT_FROM_PACKAGED_WSDL, primaryWsdl.getSystemId().toString());
                logger.log(Level.FINE, LogUtils.METADATA_DOCS);
                for (Object source : docs) {
                    logger.log(Level.FINE, ((SDDocumentSource) source).getSystemId().toString());
                }
            }
        }
    }
    // Create a Container to pass ServletContext and also inserting the pipe
    JAXWSContainer container = new JAXWSContainer(servletContext, endpoint);
    // Get catalog info
    java.net.URL catalogURL = servletContext.getResource('/' + endpoint.getBundleDescriptor().getDeploymentDescriptorDir() + File.separator + "jax-ws-catalog.xml");
    // Create Binding and set service side handlers on this binding
    boolean mtomEnabled = wsu.getMtom(endpoint);
    WSBinding binding = null;
    // Only if MTOm is enabled create the Binding with the MTOMFeature
    ArrayList<WebServiceFeature> wsFeatures = new ArrayList<WebServiceFeature>();
    // Only if MTOm is enabled create the Binding with the MTOMFeature
    if (mtomEnabled) {
        int mtomThreshold = endpoint.getMtomThreshold() != null ? Integer.parseInt(endpoint.getMtomThreshold()) : 0;
        MTOMFeature mtom = new MTOMFeature(true, mtomThreshold);
        wsFeatures.add(mtom);
    }
    Addressing addressing = endpoint.getAddressing();
    if (addressing != null) {
        AddressingFeature addressingFeature = new AddressingFeature(addressing.isEnabled(), addressing.isRequired(), getResponse(addressing.getResponses()));
        wsFeatures.add(addressingFeature);
    }
    RespectBinding rb = endpoint.getRespectBinding();
    if (rb != null) {
        RespectBindingFeature rbFeature = new RespectBindingFeature(rb.isEnabled());
        wsFeatures.add(rbFeature);
    }
    if (endpoint.getValidateRequest() != null && Boolean.parseBoolean(endpoint.getValidateRequest())) {
        // enable SchemaValidationFeature
        wsFeatures.add(new SchemaValidationFeature());
    }
    if (endpoint.getStreamAttachments() != null && Boolean.parseBoolean(endpoint.getStreamAttachments())) {
        // enable StreamingAttachmentsFeature
        wsFeatures.add(new StreamingAttachmentFeature());
    }
    if (endpoint.getReliabilityConfig() != null) {
        // TODO Revisit later after Metro provides generic method to pass partial configuration to Metro runtime.
        // Only partial configuration is specified in webservices DD, but the information for creating complete RM feature should be gathered
        // from wsdl policy, annotation or metro configuration file. For ex: RmProtocolVersion would be decided by  policy assertion.
        // For now, the feature would be constructed from default values, overriding any configuration specified in wsdl or metro configuration file..
        ReliabilityConfig rxConfig = endpoint.getReliabilityConfig();
        ReliableMessagingFeatureBuilder rmbuilder = new ReliableMessagingFeatureBuilder(RmProtocolVersion.getDefault());
        if (rxConfig.getInactivityTimeout() != null) {
            rmbuilder.sequenceInactivityTimeout(Long.parseLong(rxConfig.getInactivityTimeout().trim()));
        }
        if (endpoint.getHttpResponseBufferSize() != null) {
            rmbuilder.destinationBufferQuota(Long.parseLong(endpoint.getHttpResponseBufferSize().trim()));
        }
        if (rxConfig.getBaseRetransmissionInterval() != null) {
            rmbuilder.messageRetransmissionInterval(Long.parseLong(rxConfig.getBaseRetransmissionInterval().trim()));
        }
        if (rxConfig.getRetransmissionExponentialBackoff() != null) {
            rmbuilder.retransmissionBackoffAlgorithm(Boolean.parseBoolean(rxConfig.getRetransmissionExponentialBackoff()) ? ReliableMessagingFeature.BackoffAlgorithm.EXPONENTIAL : ReliableMessagingFeature.BackoffAlgorithm.getDefault());
        }
        if (rxConfig.getAcknowledgementInterval() != null) {
            rmbuilder.acknowledgementTransmissionInterval(Long.parseLong(rxConfig.getAcknowledgementInterval().trim()));
        }
        if (rxConfig.getSequenceExpiration() != null) {
            logger.log(Level.INFO, LogUtils.CONFIGURATION_IGNORE_IN_WLSWS, new Object[] { endpoint.getEndpointName(), "<sequence-expiration>" });
        }
        if (rxConfig.getBufferRetryCount() != null) {
            rmbuilder.maxMessageRetransmissionCount(Long.parseLong(rxConfig.getBufferRetryCount().trim()));
        }
        if (rxConfig.getBufferRetryDelay() != null) {
            logger.log(Level.INFO, LogUtils.CONFIGURATION_IGNORE_IN_WLSWS, new Object[] { endpoint.getEndpointName(), "<buffer-retry-delay>" });
        }
        wsFeatures.add(rmbuilder.build());
    } else {
        if (endpoint.getHttpResponseBufferSize() != null) {
            logger.log(Level.WARNING, LogUtils.CONFIGURATION_UNSUPPORTED_IN_WLSWS, new Object[] { endpoint.getEndpointName(), "<http-response-buffersize>" });
        }
    }
    if (wsFeatures.size() > 0) {
        binding = BindingID.parse(givenBinding).createBinding(wsFeatures.toArray(new WebServiceFeature[wsFeatures.size()]));
    } else {
        binding = BindingID.parse(givenBinding).createBinding();
    }
    wsu.configureJAXWSServiceHandlers(endpoint, givenBinding, binding);
    // See if it is configured with JAX-WS extension InstanceResolver annotation like
    // @com.sun.xml.ws.developer.servlet.HttpSessionScope or @com.sun.xml.ws.developer.Stateful
    InstanceResolver ir = InstanceResolver.createFromInstanceResolverAnnotation(serviceEndpointClass);
    // TODO - Implement 109 StatefulInstanceResolver ??
    if (ir == null) {
        // use our own InstanceResolver that does not call @PostConstuct method before
        // @Resource injections have happened.
        ir = new InstanceResolverImpl(serviceEndpointClass);
    }
    Invoker inv = ir.createInvoker();
    WSEndpoint wsep = WSEndpoint.create(// The endpoint class
    serviceEndpointClass, // we do not want JAXWS to process @HandlerChain
    false, inv, // the service QName
    endpoint.getServiceName(), // the port
    endpoint.getWsdlPort(), // Our container with info on security/monitoring pipe
    container, // Derive binding
    binding, // primary WSDL
    primaryWsdl, // Collection of imported WSDLs and schema
    docs, catalogURL);
    // Fix for 6852 Add the ServletAdapter which implements the BoundEndpoint
    // container.addEndpoint(wsep);
    // For web components, this will be relative to the web app
    // context root.  Make sure there is a leading slash.
    String uri = endpoint.getEndpointAddressUri();
    String urlPattern = uri.startsWith("/") ? uri : "/" + uri;
    // The whole web app should have a single adapter list
    // This is to enable JAXWS publish WSDLs with proper addresses
    ServletAdapter adapter;
    synchronized (this) {
        ServletAdapterList list = (ServletAdapterList) servletContext.getAttribute("ADAPTER_LIST");
        if (list == null) {
            list = new ServletAdapterList();
            servletContext.setAttribute("ADAPTER_LIST", list);
        }
        adapter = ServletAdapter.class.cast(list.createAdapter(endpoint.getName(), urlPattern, wsep));
        container.addEndpoint(adapter);
    }
    registerEndpointUrlPattern(urlPattern, adapter);
}
Also used : WSBinding(com.sun.xml.ws.api.WSBinding) MalformedURLException(java.net.MalformedURLException) ReliabilityConfig(com.sun.enterprise.deployment.runtime.ws.ReliabilityConfig) AddressingFeature(javax.xml.ws.soap.AddressingFeature) URL(java.net.URL) ArrayList(java.util.ArrayList) URL(java.net.URL) RespectBindingFeature(javax.xml.ws.RespectBindingFeature) ServletAdapterList(com.sun.xml.ws.transport.http.servlet.ServletAdapterList) ServletAdapter(com.sun.xml.ws.transport.http.servlet.ServletAdapter) MTOMFeature(javax.xml.ws.soap.MTOMFeature) StreamingAttachmentFeature(com.sun.xml.ws.developer.StreamingAttachmentFeature) WebServiceFeature(javax.xml.ws.WebServiceFeature) Collection(java.util.Collection) ReliableMessagingFeatureBuilder(com.sun.xml.ws.rx.rm.api.ReliableMessagingFeatureBuilder) SchemaValidationFeature(com.sun.xml.ws.developer.SchemaValidationFeature)

Example 14 with AddressingFeature

use of javax.xml.ws.soap.AddressingFeature in project Payara by payara.

the class WebServiceReferenceManagerImpl method getWebServiceFeatures.

private ArrayList<WebServiceFeature> getWebServiceFeatures(ServiceReferenceDescriptor desc) {
    /**
     * JAXWS 2.2 enables @MTOM, @Addressing @RespectBinding
     * on WebServiceRef
     * If these are present use the
     * Service(url,wsdl,features) constructor
     */
    ArrayList<WebServiceFeature> wsFeatures = new ArrayList<WebServiceFeature>();
    if (desc.isMtomEnabled()) {
        wsFeatures.add(new MTOMFeature(true, desc.getMtomThreshold()));
    }
    com.sun.enterprise.deployment.Addressing add = desc.getAddressing();
    if (add != null) {
        wsFeatures.add(new AddressingFeature(add.isEnabled(), add.isRequired(), getResponse(add.getResponses())));
    }
    com.sun.enterprise.deployment.RespectBinding rb = desc.getRespectBinding();
    if (rb != null) {
        wsFeatures.add(new RespectBindingFeature(rb.isEnabled()));
    }
    Map<Class<? extends Annotation>, Annotation> otherAnnotations = desc.getOtherAnnotations();
    Iterator it = otherAnnotations.values().iterator();
    while (it.hasNext()) {
        wsFeatures.add(getWebServiceFeatureBean((Annotation) it.next()));
    }
    return wsFeatures;
}
Also used : AddressingFeature(javax.xml.ws.soap.AddressingFeature) MTOMFeature(javax.xml.ws.soap.MTOMFeature) ArrayList(java.util.ArrayList) WebServiceFeatureAnnotation(javax.xml.ws.spi.WebServiceFeatureAnnotation) Annotation(java.lang.annotation.Annotation) RespectBindingFeature(javax.xml.ws.RespectBindingFeature) WebServiceFeature(javax.xml.ws.WebServiceFeature) Iterator(java.util.Iterator) com.sun.enterprise.deployment(com.sun.enterprise.deployment)

Example 15 with AddressingFeature

use of javax.xml.ws.soap.AddressingFeature in project quickstart by wildfly.

the class AddressingClient method main.

public static void main(String[] args) throws Exception {
    // construct proxy
    QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wsaddressing", "AddressingService");
    URL wsdlURL = new URL(serviceURL + "?wsdl");
    Service service = Service.create(wsdlURL, serviceName);
    ServiceIface proxy = service.getPort(ServiceIface.class, new AddressingFeature());
    // invoke method
    System.out.println(proxy.sayHello());
}
Also used : AddressingFeature(javax.xml.ws.soap.AddressingFeature) QName(javax.xml.namespace.QName) Service(javax.xml.ws.Service) URL(java.net.URL)

Aggregations

AddressingFeature (javax.xml.ws.soap.AddressingFeature)67 BindingProvider (javax.xml.ws.BindingProvider)35 URL (java.net.URL)18 QName (javax.xml.namespace.QName)13 Test (org.junit.Test)13 Service (javax.xml.ws.Service)8 ArrayList (java.util.ArrayList)7 WebServiceFeature (javax.xml.ws.WebServiceFeature)7 MTOMFeature (javax.xml.ws.soap.MTOMFeature)7 MAP (org.jboss.ws.api.addressing.MAP)5 RespectBindingFeature (javax.xml.ws.RespectBindingFeature)4 DispatchImpl (org.apache.cxf.jaxws.DispatchImpl)3 WSAddressingFeature (org.apache.cxf.ws.addressing.WSAddressingFeature)3 SoapFaultPortType (org.jboss.jbossts.xts.soapfault.SoapFaultPortType)3 CoordinationContextHandler (com.jboss.transaction.txinterop.webservices.handlers.CoordinationContextHandler)2 Sc007Service (com.jboss.transaction.wstf.webservices.sc007.generated.Sc007Service)2 WSBinding (com.sun.xml.ws.api.WSBinding)2 ServletAdapterList (com.sun.xml.ws.transport.http.servlet.ServletAdapterList)2 Closeable (java.io.Closeable)2 InputStream (java.io.InputStream)2