How does rewriting of the soap address in wsdl work?
Have a look at jbossws.sar/jbossws.beans/META-INF/jboss-beans.xml
<bean name="ServiceEndpointManager" class="org.jboss.ws.server.ServiceEndpointManager"> <!-- The WSDL, that is a required deployment artifact for an endpoint, has a <soap:address> element which points to the location of the endpoint. JBoss supports rewriting of that SOAP address. If the content of <soap:address> is a valid URL, JBossWS will not rewrite it unless AlwaysModifySOAPAddress is true. If the content of <soap:address> is not a valid URL, JBossWS will rewrite it using the attribute values given below. --> <property name="webServiceHost">${jboss.bind.address}</property> <property name="webServiceSecurePort">8443</property> <property name="webServicePort">8080</property> <property name="alwaysModifySOAPAddress">true</property> ... </bean>
If instead of a folder 'jbossws.sar/META-INF/jbossws.beans' you have a file you will need to extract the 'jbossws.beans' (It is just a normal archive) and convert it into an exploded deployment.
Instead of hardcoding the correct <soap:address> in the WSDL on the client side, you can use jboss-client.xml to point to the server side generated WSDL
<jboss-client> <jndi-name>jbossws-client</jndi-name> <service-ref> <service-ref-name>service/TestServiceJSE</service-ref-name> <wsdl-override>http://somehost:8080/jbossws-samples-jsr109pojo-rpc?wsdl</wsdl-override> </service-ref> </jboss-client>
This of course has the disadvantage that the client has to do an HTTP GET when the Service is constructed.
-
Referenced by:
Comments