Can you try the current version of CXF, 2.7.5?

Gary

On Jun 14, 2013, at 5:17, Thomas Manson <[email protected]> wrote:

> Hi,
>
>  I've generated my WSDL client with CXF 2.7.0 (from 2.7.1 I get a NPE at
> generation time, didn't find a workaround).
>
>  When I use the client I get a NPE on the server side, while with SOAPUI
> it's ok.
>
>  I used TCPMon to compare SOAPUI and CXF soap request and I can see that
> CXF client do not send the SOAPaction.
>
>
> Questions :
>
>   - What should I do to have CXF client send the SAOPAction ?
>   - SAOPUI uses UsernameToken-9, CXF uses UsernameToken-1. I didn't find a
>   way to use the-9 version. what's the difference ?
>   - SAOPUI add timestamp and nonce something... How can I do the same with
>   CXF ?  Is it necessary ?
>
>
>
>
> CXF Request :
>
> <!--
>
> POST /*amxbpm*/WorkListService HTTP/1.1
>
> Content-Type: text/*xml*; *charset*=UTF-8
>
> Accept: */*
>
> SOAPAction: ""
>
> User-Agent: *Apache* CXF 2.7.5
>
> Cache-Control: no-cache
>
> *Pragma*: no-cache
>
> Host: xivertbid05.ermont.infra.sncf.fr:8888
>
> Connection: keep-alive
>
> Content-Length: 1090
>
> -->
>
> <soap:Envelope xmlns:soap=*"http://schemas.xmlsoap.org/soap/envelope/"*>
>
>       <SOAP-ENV:Header xmlns:SOAP-ENV=*"
> http://schemas.xmlsoap.org/soap/envelope/"*>
>
>             <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>*tibco*-*admin*</wsse:Username>
>
>                           <wsse:Password
>
>                                  Type=*"
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText
> "*>secret</wsse:Password>
>
>                    </wsse:UsernameToken>
>
>             </wsse:Security>
>
>       </SOAP-ENV:Header>
>
>       <soap:Body>
>
>             <ns1:getWorkListItems xmlns:ns1=*"http://api.brm.n2.tibco.com"*
>
>                    <ns1:getWorkListItems xmlns=*""*
>
>                           xmlns:ns3=*"http://exception.api.brm.n2.tibco.com
> "* xmlns:ns4=*"http://exception.api.common.n2.tibco.com"*
>
>                           getTotalCount=*"true"* numberOfItems=*"10"*
> startPosition=*"0"*>
>
>                           <entityID entity-type=*"RESOURCE"* guid=*
> "tibco-admin"*
>
>                                  model-version=*"-1"* />
>
>                           <orderFilterCriteria />
>
>                    </ns1:getWorkListItems>
>
>             </ns1:getWorkListItems>
>
>       </soap:Body>
>
> </soap:Envelope>
>
>
> SOAPUI Request
>
> <!--
>
> POST /amxbpm/WorkListService HTTP/1.1
>
> Accept-Encoding: gzip,deflate
>
> Content-Type: text/xml;charset=UTF-8
>
> SOAPAction: "getWorkListItems"
>
> Content-Length: 1110
>
> Host: xivertbid05.ermont.infra.sncf.fr:8888
>
> Connection: Keep-Alive
>
> User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
>
> -->
>
>
>
> <soapenv:Envelope xmlns:api=*"http://api.brm.n2.tibco.com"*
>
>       xmlns:soapenv=*"http://schemas.xmlsoap.org/soap/envelope/"*>
>
>       <soapenv: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
> "*>
>
>                    <wsse:UsernameToken wsu:Id=*"UsernameToken-9"*>
>
>                           <wsse:Username>tibco-admin</wsse:Username>
>
>                           <wsse:Password
>
>                                  Type=*"
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText
> "*>secret</wsse:Password>
>
>                           <wsse:Nonce
>
>                                  EncodingType=*"
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary
> "*>wATZQZmZIUEMuYWA8YrN1g==</wsse:Nonce>
>
>                           <wsu:Created>2013-06-14T08:36:06.565Z</
> wsu:Created>
>
>                    </wsse:UsernameToken>
>
>             </wsse:Security>
>
>       </soapenv:Header>
>
>       <soapenv:Body>
>
>             <api:getWorkListItems getTotalCount=*"true"*
>
>                    numberOfItems=*"10"* startPosition=*"0"*>
>
>                    <entityID entity-type=*"RESOURCE"* guid=*"tibco-admin"*
>
>                           model-version=*"-1"*>
>
>
>
>                    </entityID>
>
>
>
>             </api:getWorkListItems>
>
>       </soapenv:Body>
>
> </soapenv:Envelope>
>
> Java Code :
>
> package com.test.webService;
>
>
> import java.util.List;
>
> import com.tibco.n2.brm.api.GetWorkListItems;
> import com.tibco.n2.brm.api.GetWorkListItemsResponse;
> import com.tibco.n2.brm.api.OrderFilterCriteria;
> import com.tibco.n2.brm.api.WorkItem;
> import com.tibco.n2.brm.services.WorkListService;
> import com.tibco.n2.common.organisation.api.OrganisationalEntityType;
> import com.tibco.n2.common.organisation.api.XmlModelEntityId;
> import java.io.IOException;
> import java.util.HashMap;
> import java.util.Map;
>
> import javax.security.auth.callback.Callback;
> import javax.security.auth.callback.CallbackHandler;
> import javax.security.auth.callback.UnsupportedCallbackException;
> import javax.xml.namespace.QName;
>
> import org.apache.cxf.endpoint.Client;
> import org.apache.cxf.frontend.ClientProxy;
> import org.apache.cxf.frontend.ClientProxyFactoryBean;
> import org.apache.cxf.transport.http.HTTPConduit;
> import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
> import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
> import org.apache.ws.security.WSConstants;
> import org.apache.ws.security.WSPasswordCallback;
> import org.apache.ws.security.handler.WSHandlerConstants;
> import org.springframework.beans.factory.InitializingBean;
>
>
> public class ArticWorkListService  implements InitializingBean
> {
>    private WorkListService workListService = null;
>
>    public ArticWorkListService()
>    {
>
>        this.workListService = ArticWorkListService.create();
>    }
>
>    public static WorkListService create()
>    {
>
>        String     endpoint = "http://localhost:8888/amxbpm/WorkListService
> ";
>        int     timeout     = 60;
>        String     username = "tibco-admin";
>        final String     password = "secret";
>
>
>        ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
>        factory.setServiceClass(WorkListService.class);
>        factory.setAddress(endpoint);
>        factory.setServiceName(new QName("http://api.brm.n2.tibco.com
> ","WorkListService_EP"));
>        WorkListService workListService = (WorkListService)
> factory.create();
>
>        Client client = ClientProxy.getClient(workListService);
>
>        Map<String,Object> properties = new HashMap<String, Object>();
>        properties.put(WSHandlerConstants.ACTION,
> WSHandlerConstants.USERNAME_TOKEN);
>        properties.put(WSHandlerConstants.USER,username);
>        properties.put(WSHandlerConstants.PASSWORD_TYPE,
> WSConstants.PW_TEXT );//"PasswordDigest"
>        properties.put(WSHandlerConstants.PW_CALLBACK_REF,new
> CallbackHandler()
>        {
>            public void handle(Callback[] callbacks) throws
> IOException,UnsupportedCallbackException
>            {
>                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
>                pc.setPassword(password);
>            }
>        });
>
>        client.getOutInterceptors().add(new
> WSS4JOutInterceptor(properties));
>
>        HTTPConduit conduit = (HTTPConduit) client.getConduit();
>
>        long timeoutMillis = timeout * 1000;
>
>        HTTPClientPolicy policy = new HTTPClientPolicy();
>        policy.setConnectionTimeout(timeoutMillis);
>        policy.setReceiveTimeout(timeoutMillis);
>
>        conduit.setClient(policy);
>
>        return workListService;
>    }
>
>
>
>
>
>
>
>    public String[] getWorklistItemsIds()
>    {
>        String[] ids = null;
>
>        XmlModelEntityId entityId = new XmlModelEntityId();
>        entityId.setGuid("tibco-admin");
>        entityId.setEntityType(OrganisationalEntityType.RESOURCE);
>        entityId.setModelVersion(-1);
>
>
>
>        GetWorkListItems getWorkListItems = new GetWorkListItems( );
>
>        getWorkListItems.setGetTotalCount(true);
>        getWorkListItems.setEntityID(entityId);
>        getWorkListItems.setStartPosition(0);
>        getWorkListItems.setNumberOfItems(10l);
>        getWorkListItems.setOrderFilterCriteria(new OrderFilterCriteria());
>
>
>
>        GetWorkListItemsResponse getWorkListItemsResponse = null;
>
>        try
>        {
>            getWorkListItemsResponse =
> this.workListService.getWorkListItems(getWorkListItems);
>        }
>        catch(Exception e)
>        {
>            e.printStackTrace();
>        }
>
>        if(getWorkListItemsResponse == null)
>        {
>            return new String[]{"null results"};
>        }
>
>        List<WorkItem> workitems = getWorkListItemsResponse.getWorkItems();
>
>        ids = new String[workitems.size()];
>        int i = 0;
>        for (WorkItem workItem : workitems)
>        {
>            ids[i++] =
> workItem.getHeader().getItemContext().getActivityID()+"-" +
>
> workItem.getHeader().getItemContext().getActivityName()+"-" +
>
> workItem.getHeader().getItemContext().getAppID()+"-" +
>
> workItem.getHeader().getItemContext().getAppInstance()+"-" +
>
> workItem.getHeader().getItemContext().getAppInstanceDescription()+"-" +
>
> workItem.getHeader().getItemContext().getAppName()+"-" +
>                        workItem.getId().getId();
>        }
>        return ids;
>    }
>
>    @Override
>    public void afterPropertiesSet() throws Exception
>    {
>        try
>        {
>            String [] ids = this.getWorklistItemsIds();
>
>            for (String string : ids) {
>                System.err.println(string);
>            }
>
>        }
>        catch(Exception e)
>        {
>            e.printStackTrace();
>        }
>
>    }
>
> }

Reply via email to