Paul, the problem is for non-trivial web services, one cannot set the namespaces for the complextypes (unless you use ADB generated code).
-- dims On 6/15/06, Paul Fremantle <[EMAIL PROTECTED]> wrote:
Tony The ADB classes (for example) have a util class that does ADB binding for JavaBeans without codegen. I don't know if XMLBeans / JIBX have similar stuff but I expect they do. Take a look at org.apache.axis2.databinding.utils.BeanUtil I've used it before... it works ok, but hasn't been widely tested so you may need to raise some JIRAs. Paul On 6/15/06, Tony Dean <[EMAIL PROTECTED]> wrote: > Sanjiva, > > Can you speak to what Dims eluded to... how to use complexTypes w/o generating helper classes to perform serialization/deserialization. I want to do what WSIF and JROM started out to do. > > Also, with the current ServiceClient API, I don't see a way distinquish between the style of service that you want to invoke. Basically, you just pass in an OMElement as the payload. I used WSDL2Java to see what kind of code would be generated from a simple RPC stockquote wsdl. The wsdl is as follows: > > <?xml version='1.0' encoding='UTF-8'?> > <definitions name='net.xmethods.services.stockquote.StockQuote' > targetNamespace='http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/' > xmlns:tns='http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/' > xmlns:electric='http://www.themindelectric.com/' > xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' > xmlns:xsd='http://www.w3.org/2001/XMLSchema' > xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' > xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' > xmlns='http://schemas.xmlsoap.org/wsdl/'> > > <message name='getQuoteResponse1'> > <part name='Result' type='xsd:float'/> > </message> > > <message name='getQuoteRequest1'> > <part name='symbol' type='xsd:string'/> > </message> > > <portType name='net.xmethods.services.stockquote.StockQuotePortType'> > <operation name='getQuote' parameterOrder='symbol'> > <input message='tns:getQuoteRequest1'/> > <output message='tns:getQuoteResponse1'/> > </operation> > </portType> > > <binding name='net.xmethods.services.stockquote.StockQuoteBinding' > type='tns:net.xmethods.services.stockquote.StockQuotePortType'> > <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> > <operation name='getQuote'> > <soap:operation soapAction='urn:xmethods-delayed-quotes#getQuote'/> > <input> > <soap:body use='encoded' > namespace='urn:xmethods-delayed-quotes' > encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> > </input> > <output> > <soap:body use='encoded' > namespace='urn:xmethods-delayed-quotes' > encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> > </output> > </operation> > </binding> > > <service name='net.xmethods.services.stockquote.StockQuoteService'> > <documentation>net.xmethods.services.stockquote.StockQuote web service</documentation> > <port name='net.xmethods.services.stockquote.StockQuotePort' > binding='tns:net.xmethods.services.stockquote.StockQuoteBinding'> > <soap:address location='http://64.124.140.30:9090/soap'/> > <!-- <soap:address location='http://localhost:9999/soap'/> --> > </port> > </service> > </definitions> > > Axis2 ADB generated coded that produces the following client invocation stream: > > <?xml version='1.0' encoding='UTF-8'?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Header /> > <soapenv:Body> > <ns1:getQuote xmlns:ns1="http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/"> > <symbol>IBM</symbol> > </ns1:getQuote> > </soapenv:Body> > </soapenv:Envelope> > > This is wrong. First, for rpc style services, the namespace of the wrapper element (operation) must be specified with the binding soap:body extension namespace attribute. In the wsdl above, this namespace is > "urn:xmethods-delayed-quotes". Second, since use is encoded, don't you have to encode the data that you send? A correct stream would look something like this: > > > <?xml version="1.0" encoding="UTF-8"?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > <soapenv:Body> > <ns1:getQuote soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:xmethods-delayed-quotes"> > <ns1:symbol xsi:type="xsd:string">IBM</ns1:symbol> > </ns1:getQuote> > </soapenv:Body> > </soapenv:Envelope> > > > > It seems that with Axis2 everything is treated as a document with literal encoding. That is, both input/output of ServiceClient invocation is OMElement. And is it the user's responsibility to encode the data if necessary (use="encoded") within the payload? Hopefully, not. In the old Axis 1.x codebase, you could pass in input data (along with type) and set the operation style that you wanted to use. How do you do this in Axis2? What is the new paradigm here for client invocation such that I can code a client with a given set of data and work with services that are designed as rpc/literal, rpc/encoded, doc/literal, or doc/literal/wrapped? > > And my initial question was... if I have custom complexTypes, can I get Axis2 to interact with them some way without generating the helper classes. I want to perform dynamic generation. > > Please, help to clear this up a bit for me. > > Much appreciated!!! > > -Tony > > -----Original Message----- > From: Sanjiva Weerawarana [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 14, 2006 11:44 PM > To: axis-dev@ws.apache.org > Cc: axis-user@ws.apache.org > Subject: Re: [axis2] dynamic client invocation w/o intermediate classgeneration > > Hi Tony, > > Have you looked at the ServiceClient API? That's precisely what that's for .. sorry for not noticing your question earlier. > > Sanjiva. > > On Wed, 2006-06-14 at 18:42 -0400, Tony Dean wrote: > > Hi, > > > > I had previously sent a request to determine the best way to perform > > dynamic client invocation with axis2 or with any client framework for > > that matter, but received no replies. So, I will send this request > > once again. :-) > > > > I know that invoking a web service on the fly without performing any > > intermediate step (wsdl2java) is needed by more than just me. Can > > anyone speak to this subject? > > > > I have briefly looked at WSIF and JROM. They do not seem to be > > actively updated at this time so they may be woefully out of date. > > Although, it seems as though I could add an axis2 provider to WSIF > > and use JROM to handle complexType serialization/deserialization, is > > this the way to go? Has anyone crossed this bridge recently? > > > > Thanks for any insight on this issue. It is greatly appreciated. > > > > -Tony Dean > > > > Tony Dean > > SAS Institute Inc. > > 919.531.6704 > > [EMAIL PROTECTED] > > > > SAS... The Power to Know > > http://www.sas.com > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Paul Fremantle VP/Technology, WSO2 and OASIS WS-RX TC Co-chair http://bloglines.com/blog/paulfremantle [EMAIL PROTECTED] "Oxygenating the Web Service Platform", www.wso2.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Davanum Srinivas : http://wso2.com/blogs/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]