My idea is this: configure "publishedEndpointUrl" as a jaxws properties  :
     <jaxws:endpoint id="publishedEndpointUrl" implementor="#greeter"
                 address="http://localhost:8080/publishedEndpointUrl";>
           <jaxws:properties>
<entry key="publishedEndpointUrl" value="http://cxf.apache.org/GreeterEndpoint"/>
           </jaxws:properties>
      </jaxws:endpoint>

and store this property in endpointInfo before the EndpointImpl class invoks the server.start() [1]. Then you can rewrite this address in wsdl definition before it is written to http response[2] .
Look at these codes :[1] [2] and [3] for some details.

Regards
Jim

[1] http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java

[2] http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java

[3] http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java




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.

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.


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!




Reply via email to