Override WSDL service endpoint address with Glassfish

I have a web service created by wsgen via maven. When I deploy the service to Glassfish, it puts the server URL in the WSDL. Our Glassfish server runs the Apache proxy server.

What does all this mean when someone calls our WSDL and looks at the endpoint of the service, and the location of the soap address that they see is

http://app server url/service...

instead

http://proxy server url/service...

I think I need to clarify a few points ...

  • Is this endpoint address important? Will the clients still function if the endpoint address does not match the proxy server URL to which they will call to call the service. This basically asks the questions: "WSDL for the web service because the interface is intended for the object."

    The UPDATE: . In response to this first question, it turns out that "WSDL for a web service as an interface is an object." The endpoint address specified in the WSDL is not important. In fact, it is relatively trivial to invoke a web service operation on a different endpoint than the one specified in the WSDL as described here .

    // Create service and proxy from the generated Service class.
    HelloService service = new HelloService ();
    HelloPort proxy = service.getHelloPort ();
    
    <preliminary> // Override the endpoint address ((BindingProvider) proxy) .getRequestContext (). Put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, " http: // new / endpointaddress "); proxy.sayHello ("Hello World!");
  • WSDL Glassfish. Glassfish . , URL- - WSDL.

1 , - 2, , . " ", , , , - ( ) .

+5
2

, Server Name HTTP Listener, . Glassfish, Glassfish , URL- .

, (http https), - ( ).

, .

+4

, : mod_substitute Apache. , , Apache, , .

, , conf apache :

<Location />
   AddOutputFilterByType SUBSTITUTE text/xml
   Substitute "s|http://internal:8080/xxx|https://external/xxx|ni"
</Location>
+3

All Articles