Hello,

I'm facing a problem using CXF 2.7.4 to build a client for a Metro Secured WebService.
Client library is generated using the wsdl2java tool.

Calling a simple helloworld service, I get null result while SOAP response message seems correct.
    System.out.println(fuzzimpl.sayHello());

SayHello method Signature:
    public String sayHello();

The SOAP response message:
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; xmlns:xs="http://www.w3.org/2001/XMLSchema";><S:Header><wsse:Security S:mustUnderstand="1"><wsu:Timestamp xmlns:ns14="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"; xmlns:ns13="http://www.w3.org/2003/05/soap-envelope"; wsu:Id="_1"><wsu:Created>2013-04-05T10:39:49Z</wsu:Created><wsu:Expires>2013-04-05T10:44:49Z</wsu:Expires></wsu:Timestamp></wsse:Security></S:Header><S:Body><ns2:sayHelloResponse xmlns:ns2="http://impl.services.fuzzws.alicante.fr/";><ns2:hello>Hello</ns2:hello></ns2:sayHelloResponse></S:Body></S:Envelope>

Do you have an idea of what append and how to solve it?

Thanks and Regards,
Julien

Global Trace:

INFO: Outbound Message
---------------------------
ID: 1
Address: https://localhost:8443/FuzzWSService
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=[""]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; soap:mustUnderstand="1"><wsse:UsernameToken wsu:Id="UsernameToken-1"><wsse:Username>test</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText";>test</wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary";>d3dmAYHNdMTpnVcDraYofw==</wsse:Nonce><wsu:Created>2013-04-05T10:39:49.701Z</wsu:Created></wsse:UsernameToken></wsse:Security><Action xmlns="http://www.w3.org/2005/08/addressing";>http://impl.services.fuzzws.alicante.fr/FuzzWSImplPortType/sayHello</Action><MessageID xmlns="http://www.w3.org/2005/08/addressing";>urn:uuid:c351d89f-0c92-4483-998f-c553a228000a</MessageID><To xmlns="http://www.w3.org/2005/08/addressing";>https://localhost:8443/FuzzWSService</To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing";><Address>http://www.w3.org/2005/08/addressing/anonymous</Address></ReplyTo></soap:Header><soap:Body><ns1:sayHello xmlns:ns1="http://impl.services.fuzzws.alicante.fr/"/></soap:Body></soap:Envelope>
--------------------------------------
5 avr. 2013 12:39:49 org.apache.cxf.services.FuzzWSImpl.FuzzWSImplPort.FuzzWSImplPortType
INFO: Inbound Message
----------------------------
ID: 1
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml;charset=UTF-8
Headers: {content-type=[text/xml;charset=UTF-8], Server=[Jetty(8.0.1.v20110908)], transfer-encoding=[chunked]} Payload: <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; xmlns:xs="http://www.w3.org/2001/XMLSchema";><S:Header><wsse:Security S:mustUnderstand="1"><wsu:Timestamp xmlns:ns14="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"; xmlns:ns13="http://www.w3.org/2003/05/soap-envelope"; wsu:Id="_1"><wsu:Created>2013-04-05T10:39:49Z</wsu:Created><wsu:Expires>2013-04-05T10:44:49Z</wsu:Expires></wsu:Timestamp></wsse:Security></S:Header><S:Body><ns2:sayHelloResponse xmlns:ns2="http://impl.services.fuzzws.alicante.fr/";><ns2:hello>Hello</ns2:hello></ns2:sayHelloResponse></S:Body></S:Envelope>
--------------------------------------
null

Sample code for the client:

            ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
            factory.setServiceClass(FuzzWSImpl.class);
            factory.setAddress("https://localhost:8443/FuzzWSService";);

            FuzzWSImpl fuzzimpl = (FuzzWSImpl) factory.create();

            Client cxfClient = ClientProxy.getClient(fuzzimpl);
            //Log SOAP message
            cxfClient.getInInterceptors().add(new LoggingInInterceptor());
cxfClient.getOutInterceptors().add(new LoggingOutInterceptor());
            //Set Http conduit
            HTTPConduit http = (HTTPConduit) cxfClient.getConduit();
            TLSClientParameters param = new TLSClientParameters();
            param.setDisableCNCheck(true);
            http.setTlsClientParameters(param);

            //Set properties
            Map<String, Object> outProps = new HashMap<String, Object>();
            //Set userName token action
outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
            // Set username
            outProps.put(WSHandlerConstants.USER, "test");
            // Password type : plain text
outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
            // for hashed password use:
//properties.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
            // Callback used to retrieve password for given user.
            outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
            ClientPasswordCallback.class.getName());
            //Add nonce and created timestamp
outProps.put(WSHandlerConstants.ADD_UT_ELEMENTS, WSConstants.NONCE_LN + " " + WSConstants.CREATED_LN);

            //Enable web securiry
            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
            cxfClient.getEndpoint().getOutInterceptors().add(wssOut);
            //For addressing
cxfClient.getEndpoint().getOutInterceptors().add(new org.apache.cxf.ws.addressing.MAPAggregator()); cxfClient.getEndpoint().getOutInterceptors().add(new org.apache.cxf.ws.addressing.soap.MAPCodec());

            //sayHello
            System.out.println(fuzzimpl.sayHello());

Reply via email to