У меня есть одно последнее препятствие, чтобы покончить с приложением веб-служб, с которым я работаю;Мне нужно иметь возможность переопределить настройки по умолчанию, используемые для установки местоположения схемы и адреса мыла в сгенерированном файле WSDL.
При развертывании приложения (GlassFish v2.1 в Red Hat linux) оно использует имя локального сервера в URL-адресах, но вместо этого ему нужно использовать имя публичного домена.Я смог сохранить файл WSDL локально, изменить URL-адреса, сделать его общедоступным, сгенерировать тестовое приложение извне из файла и, наконец, смог успешно запустить тест.
Теперь я отправился в царствопользовательских привязок JAX-WS, но я надеюсь, что я либо упустил более простое решение, либо привязки не так сложны, как кажется на первый взгляд.Реализация веб-службы осуществляется через EJB без сохранения состояния (например, MyWS.java ниже).Сгенерированный файл WSDL будет выглядеть как MyWSDL.wsdl (см. Ниже).
В теге xsd: import мне нужно изменить schemaLocation на
http://test.mycompany.com/MyWSService/MyWS?xsd=1
вместо
http://local-server-name/MyWSService/MyWS?xsd=1
, а в теге soap: address мне нужно изменить местоположениебыть
http://test.mycompany.com/MyWSService/MyWS
вместо
http://local-server-name/MyWSService/MyWS.
MyWS.java
@WebService(name="MyWS",
portName="MyWSPort",
serviceName="MyWSService",
targetNamespace="http://test.mycompany.com/")
@Stateless()
public class MyWS {
@WebMethod(operationName="testLogin")
public String testLogin(@WebParam(name="username") String username,
@WebParam(name="password") String password) {
String retVal = "Test Failed.";
//do some stuff
return retVal;
}
...
}
MyWSDL.wsdl
<definitions targetNamespace="http://test.mycompany.com/" name="MyWSService">
<types>
<xsd:schema>
<xsd:import namespace="http://test.mycompany.com/" schemaLocation="http://local-server-name/MyWSService/MyWS?xsd=1"/>
</xsd:schema>
</types>
<service name="MyWSService">
<port name="MyWSPort" binding="tns:MyWSPortBinding">
<soap:address location="http://local-server-name/MyWSService/MyWS"/>
</port>
</service>
</definitions>