You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by nmt999 <nm...@yahoo.com> on 2008/07/03 16:22:31 UTC

Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

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.


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by Glen Mazza <gl...@verizon.net>.
Yes, you need to use the -exsh option, because that brings in the
implicit SOAP headers (i.e., those SOAP headers defined in the
wsdl:binding section of the WSDL but not the wsdl:portType) that the
Yahoo! web service provider needs.  Specifically, -exsh=true results in
the JAXB objects including those soap:header fields, which allows your
client stubs to be able to access and modify their values.

By comparing the *Service.java class created with and without that
setting, you should see the header values appear/not appear.

HTH,
Glen


2008-07-03 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.
> 


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by Igor Vlasov <vi...@mail.ru>.
Hello I try to make a test request too.

I generate a clien stub with wsdl2java -client  "my wsdl file"

Now i try to start using this stub


 OfranService service = new OfranService();
 OfranServiceSoap client=service.getOfranServiceSoap();
 String value=client.getTitle("ru");

with plain JDK6 run ok !!!

but with jdk5 and cfx jars and depens. i have en error

Can you pleas tell me How do you use and run you examples ?







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-tp18260156p18279934.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by nmt999 <nm...@yahoo.com>.
Please ignore my question below about namespace duplication. I resolved it


nmt999 wrote:
> 
> 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
>>>>>> dkulp@apache.org
>>>>>> 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
>>>> dkulp@apache.org
>>>> 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
>> dkulp@apache.org
>> 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-tp18260156p18313164.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by nmt999 <nm...@yahoo.com>.
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
>>>>> dkulp@apache.org
>>>>> 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
>>> dkulp@apache.org
>>> 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
> dkulp@apache.org
> 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.


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by Daniel Kulp <dk...@apache.org>.
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
>>>> dkulp@apache.org
>>>> 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
>> dkulp@apache.org
>> 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
dkulp@apache.org
http://www.dankulp.com/blog





Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by nmt999 <nm...@yahoo.com>.
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
>>> dkulp@apache.org
>>> 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
> dkulp@apache.org
> 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.


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by Daniel Kulp <dk...@apache.org>.
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
>> dkulp@apache.org
>> 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
dkulp@apache.org
http://www.dankulp.com/blog





Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by nmt999 <nm...@yahoo.com>.
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
> dkulp@apache.org
> 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.


Re: Does wsdl2java command when used with and without -exsh option make a difference for the client when making requests to a webservice

Posted by Daniel Kulp <dk...@apache.org>.
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
dkulp@apache.org
http://www.dankulp.com/blog