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.