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 >>>>>> [EMAIL PROTECTED] >>>>>> http://www.dankulp.com/blog >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18264430.html >>>>> Sent from the cxf-user mailing list archive at Nabble.com. >>>>> >>>> >>>> --- >>>> Daniel Kulp >>>> [EMAIL PROTECTED] >>>> http://www.dankulp.com/blog >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18264746.html >>> Sent from the cxf-user mailing list archive at Nabble.com. >>> >> >> --- >> Daniel Kulp >> [EMAIL PROTECTED] >> http://www.dankulp.com/blog >> >> >> >> >> >> > > -- View this message in context: http://www.nabble.com/Does-wsdl2java-command-when-used-with-and-without--exsh-option-make-a-difference-for-the-client-when-making-requests-to-a-webservice-tp18260156p18313164.html Sent from the cxf-user mailing list archive at Nabble.com.
