I use WSDL-first development in conjuction with this feature. I write my WSDL with a single static endpoint address - it does mcuh matter what it is.
Then I configure it at deployment-time, by having Spring load a server-local properties file into a PropertyPlaceholderConfigurer bean. This properties file will have a "host" variable, and I use that variable to set my published endpoint url to something like this: publishedEndpointUrl="http://${host}/app/services/ImportantService" For the wsdl location, I just to the one I package in the .war file, like this: wsdlLocation="classpath:ImportantService.wsdl" This method works out quite nicely for me, and I haven't experienced a time where the publishedEndpointUrl. An issue could be that the code only overrides one of the endpoints, and it can be pretty hard to tell which, but that is why I only put a single endpoint in my WSDL. Granted, it defeats the purpose of having multiple endpoints, but for me, that's a loss I can live with. On 3/25/08, coatsey <[EMAIL PROTECTED]> wrote: > > Willem, > I just found this thread while looking for a way to change the soap:address > location published at runtime, and wanted to contribute my thoughts. > Unfortunately when using a static wsdl (specified using the wsdlLocation > attribute), limiting the location to that contained in the wsdl is a serious > limitation in development as it means that you either have to: > a) create a different wsdl for each environment you're going to deploy into > b) have an incorrect wsdl for all but the final deployed destination. This > also assumes that the developer knows hostnames at build-time, and I expect > will limit the ability to test. > > Neither of these options makes me very comfortable. In my mind, the > publishedEndpointUrl should be honoured regardless of whether you're using a > static wsdl or not so that the definition can be externalised to a > deploytime decision. > > Does this seem reasonable to you? Unfortunately the current code seems to > be a showstopper for doing wsdl-first development (I'm more than happy for > you to tell me otherwise & provide a workaround though). > > As our wsdl's have already been defined for these interfaces, it looks like > I'll need to try a different WS framework in the mean-time (probably suns > jaxws-ri without the spring plugin). It's a real shame though b/c cxf looks > great otherwise. Hopefully I'll be back using it soon. > > Cheers, > Mike > > > > > > Willem2 wrote: > > > > Hi Christian, > > > > Please see my comments in the mail. > > Christian Vest Hansen wrote: > >> Hi Willem, > >> > >> Troublesome as it may be, I have to try it. I'm scheduled this month > >> to work on this as it is a feature that's pretty high on our wish > >> list, and we might schedule more time if one month is not enough. > >> > >> > > Great, any contribution are welcome here :) > >>> I think if we can delegate the WSDL query to a static WSDL resovler > >>> handler , you can define the WSDL service address as what you want. > >>> > >> > >> Can you tell me more about this idea? Where would the good extension > >> points be - what packages & modules to look at. > >> > >> > > Since CXF WSDLQueryHandler[1] will Generate the WSDL Dynamically, > > if your endpoint is generated from a static WSDL, I think you can define > > the publishing url as what you > > want in the static WSDL and let WSDLQueryHandler return the static WSDL > > instead. > > > > > [1]https://svn.apache.org/repos/asf/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java > > > > Willem. > >> 2007/12/4, Willem Jiang <[EMAIL PROTECTED]>: > >> > >>> Hi Chirstian, > >>> > >>> I don't think you can do that , since CXFServletControl will use the > >>> endpoint address which get from the endpoint information to find the > >>> right destination, and this endpoint information will be used as the > >>> service address when CXF generate the WSDL for you. > >>> > >>> I think if we can delegate the WSDL query to a static WSDL resovler > >>> handler , you can define the WSDL service address as what you want. > >>> > >>> Willem. > >>> > >>> Christian Vest Hansen wrote: > >>> > >>>> Hi, > >>>> > >>>> I'm trying to make it possible to configure the published soap:address > >>>> location in the jaxws generated WSDLs. > >>>> > >>>> >From a spring point of view, I'm trying to make this: > >>>> > >>>> (beans.xml....) > >>>> <jaxws:endpoint id="publishedEndpointUrl" > >>>> implementor="#greeter" > >>>> address="http://localhost:8080/publishedEndpointUrl" > >>>> publishedEndpointUrl="http://cxf.apache.org/GreeterEndpoint"/> > >>>> (....) > >>>> > >>>> Do this: > >>>> > >>>> (http://localhost:8080/publishedEndpointUrl?wsdl....) > >>>> <wsdl:service name="GreeterService"> > >>>> <wsdl:port binding="tns:GreeterServiceSoapBinding" > >>>> name="GreeterPort"> > >>>> <soap:address location="http://cxf.apache.org/GreeterEndpoint"/> > >>>> </wsdl:port> > >>>> </wsdl:service> > >>>> (....) > >>>> > >>>> Right now, I'm trying to wrap my head around how the WSDL is generated > >>>> and how that is connected to the values in the EndpointImpl objects > >>>> that the jaxws:endpoint xml generates. > >>>> > >>>> If you have any hints to that end, or other relevant information then > >>>> it would be greatly appreciated - I haven't worked with the CXF source > >>>> before and the docs on the wiki are still a bit sparse in this regard. > >>>> > >>>> Thanks! > >>>> > >>>> > >>>> > >> > >> > >> > > > > > > > -- > View this message in context: > http://www.nabble.com/configurability-of-published-soap%3Aaddress-location-on-jaxws-endpoints-tp14127128p16266846.html > Sent from the cxf-dev mailing list archive at Nabble.com. > > -- Venlig hilsen / Kind regards, Christian Vest Hansen.
