Clemens Utschig - Utschig wrote: > would it help to have a interface.wsdl? that contains the whole thing - > rather than generating it from the annonated java interface? > > -- if so, any example for that? > Yes, it would help. It might not solve all the problems, but it should get you further.
I couldn't find a sample that uses interface.wsdl on a reference (seems like an omission), though there are a few that use it on a service definition. You would need to replace the <interface.java> element with something like <interface.wsdl interface="http://model/common/serviceinterface#wsdl.interface(EmpFlexFieldService)" /> The generated wsdl file needs to be somewhere on your classpath. In our samples and tests that use generated wsdl, we put the wsdl files in the src/main/resources/wsdl directory. Simon > cherrs clemens > > -----Original Message----- > From: Simon Nash [mailto:[EMAIL PROTECTED] > Sent: Sunday, February 10, 2008 12:42 PM > To: tuscany-dev@ws.apache.org > Subject: Re: Tuscany: Axis2 codegen bug? - java interface exposed as service, > annoted with javax.xml.ws.RequestWrapper(...) is not honoring the namespace > > > Jean-Sebastien Delfino wrote: >> Clemens Utschig - Utschig wrote: >>> Folks, >>> >>> I have a simple composite as below - which makes use of SDO through SOAP in >>> the reference >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" >>> targetNamespace="/model/common/" >>> >>> xmlns:dbsdo="http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0" >>> name="FlexEmployeeComposite" xmlns:tns="/model/common/types/" >>> xmlns:types="/model/common/types/" >>> xmlns:errors="http://xmlns.oracle.com/adf/svc/errors/" >>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> >>> <component name="FlexEmployeeServiceComponent"> >>> <implementation.java >>> class="com.oracle.soa.test.tuscany.impl.EmployeeServiceComponent"/> >>> <reference name="empFlexFieldService"/> >>> </component> >>> <reference name="empFlexFieldService" >>> promote="FlexEmployeeServiceComponent/empFlexFieldService"> >>> <interface.java >>> interface="model.common.serviceinterface.EmpFlexFieldService"/> >>> <binding.ws >>> uri="http://localhost:1234/Application4710-Model-context-root/EmpFlexFieldService"/> >>> </reference> >>> </composite> >>> >>> that promotes the java interface from the reference as service .. the >>> interface is annotated as webservice - as below .. >>> >>> @javax.jws.WebMethod(action="/model/common/createEmployees1", >>> operationName="createEmployees1") >>> @javax.xml.ws.RequestWrapper(targetNamespace="/model/common/types/", >>> localName="createEmployees1") >>> @javax.xml.ws.ResponseWrapper(targetNamespace="/model/common/types/", >>> localName="createEmployees1Response") >>> @javax.jws.WebResult(name="result") >>> DataObject >>> createEmployees1(@javax.jws.WebParam(mode=javax.jws.WebParam.Mode.IN, >>> name="employees1") >>> DataObject employees1) throws ServiceException; >>> >>> which implies that the namespace for this element is "/model/common/types/" >>> >>> however - Axis2, takes the targetNamespace - and hence tries to send out >>> >>> <?xml version='1.0' encoding='UTF-8'?> >>> <soapenv:Envelope >>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> >>> <soapenv:Body> >>> <_ns_:getEmployees1 xmlns:_ns_="/model/common/"> >>> <empno xmlns="/model/common/">1</empno> >>> </_ns_:getEmployees1> >>> </soapenv:Body> >>> </soapenv:Envelope> >>> >>> >>> instead of >>> >>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> >>> <soap:Body xmlns:ns1="/model/common/types/"> >>> <ns1:getEmployees1> >>> <ns1:empno></ns1:empno> >>> </ns1:getEmployees1> >>> </soap:Body> >>> </soap:Envelope> >>> >>> anybody seen this? - this sounds like a real bug to me.. >>> >>> thx clemens >> I'm not sure that the support for jaxws annotations is ready and >> integrated in the build yet, although it may be pretty close. >> >> Raymond, it looks like you've been working on the interface-java-jaxws >> module recently, can you give us its status? >> >> Thanks. >> > I don't think the code in the interface-java-jaxws module is enough to > solve this problem. We also need the ability to generate a WSDL interface > at runtime from a Java interface containing JAX-WS annotations. (Our > current code for this uses Axis2, which doesn't understand JAX-WS > annotations.) The code we need would do the same as the JAX-WS tool > wsgen -wsdl, or the CXF tool java2wsdl, except that the processing would > be done at runtime and would generate WSDL to a stream instead of a file. > >>From a quick look at both these options, it looks like it would be > possible for the Tuscany runtime to call into code from either CXF or > the JAX-WS tools to do the generation. However, this wouldn't be using > any official APIs but would require a bit of copying and adapting the code > that is currently there. Of the two options, the CXF code seems rather > easier to work with. Also, since CXF is an Apache project, Tuscany could > contribute back to CXF any modifications we make to enable this. > > Before I launch into actually trying to get this working, does anyone > else have comments or suggestions on the general approach? > > Simon > > > --------------------------------------------------------------------- > 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]