I try to add the namespace to match the ones in soap:Body. However it adds a
duplicate namespace in addition to the one i tried to add. Could not figure
how to correctly add the namespace in the interceptors.

<ns2:masterAccountID xmlns:ns="http://marketing.ews.yahooapis.com/V4";
xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";
xmlns:ns2="http://marketing.ews.yahooapis.com/V4";>11111111</ns2:masterAccountID>
 

<soap:Body>
    <ns2:getAccountStatus xmlns:ns2="http://marketing.ews.yahooapis.com/V4";
xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";>
        <ns2:accountID>222222222</ns2:accountID>
    </ns2:getAccountStatus>
</soap:Body> 


dkulp wrote:
> 
> 
> It would be something like:
> 
> Element el = document.createElementNS(_theYahooURL,  
> "onBehalfOfPassword");
> 
> Dan
> 
> 
> 
> 
> On Jul 3, 2008, at 1:40 PM, nmt999 wrote:
> 
>>
>> Dan
>>
>> I'm not sure how to do that. Can you show me how to do that for one  
>> of the
>> elments
>>
>> nmt
>>
>>
>> dkulp wrote:
>>>
>>>
>>> That's the problem:
>>>
>>>        Element passwordElement =
>>> document.createElement("onBehalfOfPassword");
>>>
>>> You aren't namespace qualifying those elements.    You need to create
>>> the elements using the namespace versions and specify the proper
>>> namespaces and such.
>>>
>>> Dan
>>>
>>>
>>>
>>> On Jul 3, 2008, at 1:28 PM, nmt999 wrote:
>>>
>>>>
>>>> Dan
>>>>
>>>> Security headers are added in WSS4JOutInterceptor which is in the
>>>> createAccountService method. Headers are added in handleMessage() of
>>>> my
>>>> outboundinterceptor that extends AbstracSoapInterceptor which is
>>>> given below
>>>>
>>>>   private static AccountService createAccountService(String
>>>> aServiceURL)
>>>>   {
>>>>       AccountService ret = null;
>>>>
>>>>       JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>>>>       factory.getInInterceptors().add(new LoggingInInterceptor());
>>>>       factory.getOutInterceptors().add(new LoggingOutInterceptor());
>>>>       factory.setServiceClass(AccountService.class);
>>>>       factory.setAddress(aServiceURL);
>>>>       factory.setBus(BusFactory.getDefaultBus());
>>>>
>>>>       ret = (AccountService) factory.create();
>>>>       Client client = factory.getClientFactoryBean().getClient();
>>>>       Endpoint endpoint = client.getEndpoint();
>>>>
>>>>       // Add any inbound interceptors that are needed
>>>>       InboundInterceptor inboundInterceptor = new
>>>> InboundInterceptor();
>>>>       endpoint.getInInterceptors().add(inboundInterceptor);
>>>>
>>>>       // Add any outbound interceptors that are needed
>>>>       // Need to add the corresponding SAAJ interceptor if you are
>>>> using
>>>> WSS
>>>>       // interceptor
>>>>       Map<String,Object> props = new HashMap<String,Object>();
>>>>       props.put(WSHandlerConstants.PW_CALLBACK_CLASS,
>>>> ClientPasswordHandler.class.getName());
>>>>
>>>>       WSS4JOutInterceptor wss4jOutInterceptor = new
>>>> WSS4JOutInterceptor(props);
>>>>       wss4jOutInterceptor.setProperty(WSHandlerConstants.ACTION,
>>>> WSHandlerConstants.USERNAME_TOKEN);
>>>>       wss4jOutInterceptor.setProperty(WSHandlerConstants.USER,
>>>> _theUsername);
>>>>
>>>> wss4jOutInterceptor.setProperty(WSHandlerConstants.PASSWORD_TYPE,
>>>> WSConstants.PW_TEXT);
>>>>
>>>>       endpoint.getOutInterceptors().add(wss4jOutInterceptor);
>>>>       endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
>>>>
>>>>       OutboundInterceptor outboundInterceptor = new
>>>> OutboundInterceptor(_theLicense, _theMasterAccountID, null, null,
>>>> null,
>>>> SANDBOX_ACCOUNTSERVICE_NAME);
>>>>       endpoint.getOutInterceptors().add(outboundInterceptor);
>>>>
>>>>       return ret;
>>>>   }
>>>>
>>>>
>>>> Adding headers
>>>> =========
>>>>
>>>> constructor
>>>>
>>>>       super(Phase.WRITE);
>>>>
>>>> addBefore 
>>>> ("org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor")
>>>>
>>>> in handle message
>>>>
>>>>        // Add SOAP headers to be sent
>>>>       Document document = DOMUtils.createDocument();
>>>>       List<Header> headers = aSoapMessage.getHeaders();
>>>>
>>>>       SoapHeader masterAccountIdHeader = null;
>>>>       Element masterAccountIDElement =
>>>> document.createElement("masterAccountID");
>>>>       masterAccountIDElement.setTextContent(_theMasterAccountId);
>>>>       masterAccountIdHeader = new SoapHeader(new QName(_theYahooURL,
>>>> _theServiceName), masterAccountIDElement);
>>>>       headers.add(masterAccountIdHeader);
>>>>
>>>>       SoapHeader licenseHeader = null;
>>>>       Element licenseElement = document.createElement("license");
>>>>       licenseElement.setTextContent(_theLicense);
>>>>       licenseHeader = new SoapHeader(new QName(_theYahooURL,
>>>> _theServiceName), licenseElement);
>>>>       headers.add(licenseHeader);
>>>>
>>>>       SoapHeader accountIDHeader = null;
>>>>       Element accountIDElement =  
>>>> document.createElement("accountID");
>>>>       accountIDElement.setTextContent(_theAccountId);
>>>>       accountIDHeader = new SoapHeader(new QName(_theYahooURL,
>>>> _theServiceName), accountIDElement);
>>>>       headers.add(accountIDHeader);
>>>>
>>>>       SoapHeader usernameHeader = null;
>>>>       Element usernameElement =
>>>> document.createElement("onBehalfOfUsername");
>>>>       usernameElement.setTextContent(_theUsername);
>>>>       usernameHeader = new SoapHeader(new QName(_theYahooURL,
>>>> _theServiceName), usernameElement);
>>>>       headers.add(usernameHeader);
>>>>
>>>>       SoapHeader passwordHeader = null;
>>>>       Element passwordElement =
>>>> document.createElement("onBehalfOfPassword");
>>>>       passwordElement.setTextContent(_thePassword);
>>>>       passwordHeader = new SoapHeader(new QName(_theYahooURL,
>>>> _theServiceName), passwordElement);
>>>>       headers.add(passwordHeader);
>>>>
>>>>
>>>>
>>>>
>>>> dkulp wrote:
>>>>>
>>>>>
>>>>> In "Case 2", how are you setting the headers:
>>>>>>  <masterAccountID>11111111</masterAccountID>
>>>>>>  <license>999999999</license>
>>>>>>  <onBehalfOfUsername />
>>>>>>  <onBehalfOfPassword />
>>>>>
>>>>> Without the -exsh true, they wouldn't be method parameters so you  
>>>>> are
>>>>> setting them some other way.  SAAJ handler?   Through the request
>>>>> context? etc...   I would need to see that code.
>>>>>
>>>>> Dan
>>>>>
>>>>>
>>>>>
>>>>> On Jul 3, 2008, at 10:22 AM, nmt999 wrote:
>>>>>
>>>>>>
>>>>>> In my client developement using cxf to talk to yahoo  
>>>>>> searchmarketing
>>>>>> services
>>>>>> (http://searchmarketing.yahoo.com/developer/docs/V4/wsdl/V4/AccountService.wsdl
>>>>>> ),
>>>>>> I have two different implementations. I have them below. Case 1
>>>>>> works but
>>>>>> not Case 2. How can I make the Case 2 work.
>>>>>>
>>>>>> Does wsdl2java command when used with and without -exsh option
>>>>>> make a
>>>>>> difference for the client when making requests to a webservice.  
>>>>>> Does
>>>>>> the two
>>>>>> soap requests sent any different?
>>>>>>
>>>>>> Case 1:
>>>>>> =====
>>>>>> wsdl2java used witn -exsh true option
>>>>>> wsdl2java command used: wsdl2java -client -exsh true -p
>>>>>> com.test.accountservice AccountService.wsdl
>>>>>>
>>>>>> Following request was generated and  sent successfully:
>>>>>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
>>>>>> envelope/">
>>>>>> <soap:Header>
>>>>>>  <ns2:onBehalfOfUsername
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>> xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4";  
>>>>>> xsi:nil="true" />
>>>>>>  <ns2:onBehalfOfPassword
>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>> xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4";  
>>>>>> xsi:nil="true" />
>>>>>>  <ns2:masterAccountID
>>>>>> xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4";>11111111</
>>>>>> ns2:masterAccountID>
>>>>>>  <ns2:license xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext
>>>>>> "
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4";>9999999</
>>>>>> ns2:license>
>>>>>>  <ns3:Security xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/
>>>>>> secext"
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4";>
>>>>>>          <UsernameToken>
>>>>>>                  <Username>username</Username>
>>>>>>                  <Password>password</Password>
>>>>>>          </UsernameToken>
>>>>>>  </ns3:Security>
>>>>>> </soap:Header>
>>>>>> <soap:Body>
>>>>>>  <ns2:getAccountStatus
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4
>>>>>> "
>>>>>> xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";>
>>>>>>      <ns2:accountID>222222222</ns2:accountID>
>>>>>>  </ns2:getAccountStatus>
>>>>>> </soap:Body>
>>>>>> </soap:Envelope>
>>>>>>
>>>>>> Response received successfully
>>>>>>
>>>>>> Case 2:
>>>>>> =====
>>>>>> wsdl2java used without the exsh option
>>>>>> wsdl2java command used: wsdl2java -client -p  
>>>>>> com.test.accountservice
>>>>>> AccountService.wsdl
>>>>>>
>>>>>> Following request was generated and sent successfully:
>>>>>> <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
>>>>>> "
>>>>>> soap:mustUnderstand="1">
>>>>>>  <wsse:UsernameToken
>>>>>> 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
>>>>>> "
>>>>>> wsu:Id="UsernameToken-24164377">
>>>>>>      <wsse:Username
>>>>>> xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>>>>>> ">username</wsse:Username>
>>>>>>      <wsse:Password
>>>>>> xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>>>>>> "
>>>>>> Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText
>>>>>> ">password</wsse:Password>
>>>>>>  </wsse:UsernameToken></wsse:Security>
>>>>>>  <masterAccountID>11111111</masterAccountID>
>>>>>>  <license>999999999</license>
>>>>>>  <onBehalfOfUsername />
>>>>>>  <onBehalfOfPassword />
>>>>>>  </soap:Header>
>>>>>> <soap:Body>
>>>>>>  <ns2:getAccountStatus
>>>>>> xmlns:ns2="http://marketing.ews.yahooapis.com/V4
>>>>>> "
>>>>>> xmlns:ns3="http://schemas.xmlsoap.org/ws/2002/07/secext";>
>>>>>>      <ns2:accountID>222222222</ns2:accountID>
>>>>>>  </ns2:getAccountStatus>
>>>>>> </soap:Body>
>>>>>> </soap:Envelope>
>>>>>>
>>>>>> Response received has soap fault as below:
>>>>>>  <soap:Fault><faultcode>soap:Server</faultcode>
>>>>>>  <faultstring>An internal error has occurred.</faultstring>
>>>>>>          <detail>
>>>>>>                  <yns:ApiFault 
>>>>>> xmlns:yns="http://marketing.ews.yahooapis.com/ 
>>>>>> V4">
>>>>>>                          <yns:code
>>>>>> xmlns:yns="http://marketing.ews.yahooapis.com/V4";>E1002</yns:code>
>>>>>>                          <yns:message 
>>>>>> xmlns:yns="http://marketing.ews.yahooapis.com/
>>>>>> V4">An
>>>>>> internal error has occurred.</yns:message>
>>>>>>                  </yns:ApiFault>
>>>>>>  </detail>
>>>>>>  </soap:Fault>
>>>>>>
>>>>>>
>>>>>> Regards
>>>>>> nmt
>>>>>> -- 
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18260156.html
>>>>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>>>>
>>>>>
>>>>> ---
>>>>> Daniel Kulp
>>>>> [EMAIL PROTECTED]
>>>>> http://www.dankulp.com/blog
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> -- 
>>>> View this message in context:
>>>> http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18264430.html
>>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>>
>>>
>>> ---
>>> Daniel Kulp
>>> [EMAIL PROTECTED]
>>> http://www.dankulp.com/blog
>>>
>>>
>>>
>>>
>>>
>>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18264746.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>>
> 
> ---
> Daniel Kulp
> [EMAIL PROTECTED]
> http://www.dankulp.com/blog
> 
> 
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18304697.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to