Yup...filling in the PortInfo map with some of the WebService annotation info (minimally the wsdl location) should get us past this issue.
If Lin doesn't do it I may give it a SWAG this morning. Jeff Jarek Gawor wrote: > If Axis2 has a tool to generate WSDL from Java code (with annotations) > then we should definitely used that. Hopefully, it also has good > programmatic API so that we can call it at runtime (or at deployment > time) and generate the WSDL dynamically to a file or a byte array or > whatever. In G we would just check if the @WebService annotation has > wsdlLocation attribute set (there is a bit of logic to that) and call > that tool only if it is not. I don't think we should do anything more > then that in G. That is, I don't think we should write any code in G > to generate WSDL from Java code. > > Jarek > > On 3/15/07, Lasantha Ranaweera <[EMAIL PROTECTED]> wrote: >> Hi Lin, >> >> I checked your email in the Axis2 dev list and I am also not sure >> whether this is a bug or a missing feature in the Axis2 (since I didn't >> go through the problem deep). If this is a bug we might able to help >> Axis2 source code too (as I did couple of times with my patches) ;-) . >> Make sure to cross link issues in JIRA in such situation. Otherwise as >> Jeff mentioned we might need to implement in the G side if the Axis2 >> doesn't have any plans of support the feature soon. >> >> Regarding your last part of reading annotations have a look at >> JAXWSUtils.java file comes in a org.apache.geronimo.jaxws package, I >> think it has a way of reading such annotations (line 86). >> >> Thanks, >> Lasantha >> >> Lin Sun wrote: >> > Hi Jeff, >> > >> > Yes I totally agree that the tool needs to be for axis2 only and >> > handled during deployment time! Basically, during deployment of the >> > module, we'll invoke the tool on the fly and generate the .wsdl file >> > for the user, and set the PortInfo's wsdlLocation property. Then the >> > code will be executed as if the .wsdl is provided by the user, which >> > we know works right now. I was just trying to run the tool >> > stand-alone first to make sure it is good for our need.:-) I'll >> > investigate if there is any license issue. >> > >> > Also, this doesn't cover the second scenario, when .wsdl file is >> > provided but the location of the .wsdl file is specified in >> > annotation but not in webservices.xml. In this case, we 'll need to >> > figure out the location of the .wsdl file from annotation (not sure >> > how to do that yet) and set the PortInfo's wsdlLocation property. >> > >> > Thanks, >> > >> > Lin >> > >> > Jeff Genender wrote: >> >> I think this is supposed to happen on deployment, not from a tool. If >> >> Axis is not going to handle this, then this code will need to be >> written >> >> in the Axis2 deployer for Geronimo. Currently CXF does handle >> >> Webservice annotations, so this type of deployment code would be an >> >> Axis2 only necessity. I think the PortInfo objects will need to be >> >> filled out before handing off to Axis2. >> >> >> >> Jeff >> >> >> >> >> >> Lin Sun wrote: >> >>> Hi Jeff/Lasantha, >> >>> >> >>> I just posted this prob on axis2-dev list [1]. Currently the >> >>> Java2WSDL >> >>> tool which is what is being used to generate the targetnamespace >> >>> doesn't >> >>> seem to handle any of the annotation stuff... not sure if it will >> ever >> >>> handle.:-( >> >>> >> >>> An alternative is to use the sun's wsgen tool provided by >> >>> jaxws-tools.jar to generate the wsdl file from Java in the geronimo >> >>> integration code. I tried to use the tool and it did generate the >> >>> targetnamespace correctly. >> >>> >> >>> [1]: http://marc.theaimsgroup.com/?l=axis-dev&m=117397929613538&w=2 >> >>> >> >>> Lin >> >>> >> >>> Jeff Genender wrote: >> >>>> Lasantha Ranaweera wrote: >> >>>>> Not exactly sure whether I am getting your problem exactly or not >> >>>>> :-( . >> >>>>> >> >>>>> Line 99 decides whether application archive contains WSDL file >> or not >> >>>>> (according to Axis2 builder). If it is there we are going to fill >> >>>>> WSDL >> >>>>> information from G side. Otherwise it will be handed over to Axis2 >> >>>>> side >> >>>>> (services with annotations). So looking at your problem regarding >> >>>>> annotations what I say is it should be handled by Axis2 (all the >> >>>>> validation & execution stuff). The annotation processing will be >> >>>>> handled >> >>>>> as a web service receives SOAP requests. Starting point for JAXWS >> >>>>> based >> >>>>> SOAP messages is receive() method of JAXWSMessageReciever. >> >>>>> >> >>>> The problem is, Axis2 is generating a wsdl upon the client request >> >>>> for a >> >>>> wsdl, and not looking at the WebService annotation to get the wsdl's >> >>>> location. The code step through below shows the problem clearly. >> >>>> >> >>>> >> >>>>> HTH. >> >>>>> >> >>>>> Lasantha >> >>>>> >> >>>>> Jeff Genender wrote: >> >>>>>> o.a.g.Axis2WebserviceContainer, line 99. A not-filled in >> PortInfo is >> >>>>>> passed in since G is not processing a WebService annotation, and >> >>>>>> thus an >> >>>>>> AxisService.create is called on line 104. >> >>>>>> >> >>>>>> When Axis2WebserviceContainer.getWsdl() is ultimately called, >> >>>>>> doService2() is called (line 212), then to processGetRequest (line >> >>>>>> 398), >> >>>>>> leading us to line 435 where the PortInfo is checked as to >> whether a >> >>>>>> wsdl file has been passed in or not. If it has, it spits out the >> >>>>>> wsdl. >> >>>>>> If it has not, then the AxisService.printWsdl() is called and >> that >> >>>>>> call >> >>>>>> spits out a generated wsdl. >> >>>>>> >> >>>>>> The crux here is that the PortInfo object does not have all of >> >>>>>> the info >> >>>>>> filled in such as seiClass, wsdl file, etc. That stuff would >> >>>>>> have been >> >>>>>> gotten from examining the WebService annotation. >> >>>>>> >> >>>>>> The question is, where does that examination or, should that >> >>>>>> examination, take place? Geronimo or Axis2? >> >>>>>> >> >>>>>> Jeff >> >>>>>> >> >>>>>> Lasantha Ranaweera wrote: >> >>>>>> >> >>>>>>> Jeff, >> >>>>>>> >> >>>>>>> Sorry for a late reply due to my time stamp difference and don't >> >>>>>>> know >> >>>>>>> exactly you have solved this problem right now or not. Anyway >> here >> >>>>>>> is my >> >>>>>>> comment. >> >>>>>>> >> >>>>>>> Since you haven't given me exact source code I won't be able to >> >>>>>>> point >> >>>>>>> you in to the exact source code in the Axis2. May be remote >> >>>>>>> debugging >> >>>>>>> ... ;-) . >> >>>>>>> >> >>>>>>> Thanks, >> >>>>>>> Lasantha >> >>>>>>> >> >>>>>>> Jeff Genender wrote: >> >>>>>>> >> >>>>>>>> Ok... >> >>>>>>>> >> >>>>>>>> I am pretty certain at this stage that the WebService annotation >> >>>>>>>> is not >> >>>>>>>> getting processed. Can you point me to the code that handles >> >>>>>>>> this in >> >>>>>>>> Axis2? >> >>>>>>>> >> >>>>>>>> Thanks, >> >>>>>>>> >> >>>>>>>> Jeff >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> Jeff Genender wrote: >> >>>>>>>> >> >>>>>>>> >> >>>>>>>>> Thanks...this is very helpful. >> >>>>>>>>> >> >>>>>>>>> Then by this, looking at the PortInfo, it appears as though >> it is >> >>>>>>>>> not >> >>>>>>>>> stuffing in the WSDL file, which tells me it's a G thang ;-) >> >>>>>>>>> >> >>>>>>>>> Jeff >> >>>>>>>>> >> >>>>>>>>> Lasantha Ranaweera wrote: >> >>>>>>>>> >> >>>>>>>>>> Hi Jeff, >> >>>>>>>>>> >> >>>>>>>>>> To my understanding if we have given a WSDL in an archive it >> >>>>>>>>>> should get >> >>>>>>>>>> the priority than the information in the annotations. >> >>>>>>>>>> >> >>>>>>>>>> In Axis2 integration there are two parts of implementation >> with >> >>>>>>>>>> one for >> >>>>>>>>>> with WSDL which is mainly handling by G side while with >> >>>>>>>>>> annotations >> >>>>>>>>>> from >> >>>>>>>>>> Axis2. For me it is something missing in G side. >> >>>>>>>>>> >> >>>>>>>>>> Somebody in the list please correct me if I am wrong here . >> >>>>>>>>>> >> >>>>>>>>>> Thanks, >> >>>>>>>>>> Lasantha >> >>>>>>>>>> Jeff Genender wrote: >> >>>>>>>>>> >> >>>>>>>>>>> Hi, >> >>>>>>>>>>> >> >>>>>>>>>>> I have noticed when I deploy a war file (with a WSDL), I >> have a >> >>>>>>>>>>> certain >> >>>>>>>>>>> target name specified both in the WSDL and in the code that >> >>>>>>>>>>> uses a >> >>>>>>>>>>> WebService annotation. >> >>>>>>>>>>> >> >>>>>>>>>>> However, when I go retrieve the WSDL, I notice the target >> name >> >>>>>>>>>>> seems to >> >>>>>>>>>>> be munged according to the package name (backwards) of the >> code >> >>>>>>>>>>> that >> >>>>>>>>>>> contains the WebService annotation. >> >>>>>>>>>>> >> >>>>>>>>>>> Example... >> >>>>>>>>>>> >> >>>>>>>>>>> I have include a WSDL called Hello.wsdl that is in the war >> file >> >>>>>>>>>>> in the >> >>>>>>>>>>> web-inf/wsdl directory and starts with: >> >>>>>>>>>>> >> >>>>>>>>>>> <wsdl:definitions >> >>>>>>>>>>> targetNamespace="http://example.com/hello/xsd"> >> >>>>>>>>>>> ... >> >>>>>>>>>>> >> >>>>>>>>>>> I have a HelloWorld.java that has this: >> >>>>>>>>>>> >> >>>>>>>>>>> package test.mypackage; >> >>>>>>>>>>> >> >>>>>>>>>>> import javax.jws.WebMethod; >> >>>>>>>>>>> import javax.jws.WebService; >> >>>>>>>>>>> >> >>>>>>>>>>> @WebService(name="HelloWorld", targetNamespace = >> >>>>>>>>>>> "http://example.org/hello/xsd") >> >>>>>>>>>>> public class HelloWorld { >> >>>>>>>>>>> >> >>>>>>>>>>> @WebMethod >> >>>>>>>>>>> public String sayHello(String me){ >> >>>>>>>>>>> return "Hello "+me; >> >>>>>>>>>>> } >> >>>>>>>>>>> } >> >>>>>>>>>>> >> >>>>>>>>>>> However, when I request the wsdl...I get something like this: >> >>>>>>>>>>> >> >>>>>>>>>>> <wsdl:definitions >> targetNamespace="http://mypackage.test/xsd"> >> >>>>>>>>>>> ... >> >>>>>>>>>>> >> >>>>>>>>>>> Notice the targetnamespace was munged and changed from it's >> >>>>>>>>>>> originally >> >>>>>>>>>>> declared namespace of "http://example.com/hello/xsd". I >> >>>>>>>>>>> want the >> >>>>>>>>>>> one >> >>>>>>>>>>> that is both declared in the included wsdl (or the one >> declared >> >>>>>>>>>>> in the >> >>>>>>>>>>> annotation). >> >>>>>>>>>>> >> >>>>>>>>>>> Is this a facet of Axis2 or is Geronimo not passing a proper >> >>>>>>>>>>> PortInfo >> >>>>>>>>>>> object with the necessary stuff filled in? >> >>>>>>>>>>> >> >>>>>>>>>>> Any light on this subject would be greatly appreciated ;-) >> >>>>>>>>>>> >> >>>>>>>>>>> Thanks, >> >>>>>>>>>>> >> >>>>>>>>>>> Jeff >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>> >> >>>>>> >> >> >> > >> > >> > >> >>
