У меня есть веб-сервис, который был создан несколько лет назад на C ++ и используется клиентом .NET, использующим "#ssl.exe" в C # для создания клиентских заглушек. По разным причинам мне сейчас также нужен клиент Java, и я хочу ограничить использование Java 6 (JDK 1.6) с JAX-WS. Сгенерированные заглушки работают нормально, даже если они упакованы в .jar, но у меня возникла проблема с тем, как клиенты веб-службы JAX-WS хотят быть развернутыми. Похоже, проблема, с которой я сталкиваюсь, разрешима , но ни один из предложенных способов не работает.
JAX-WS ожидает, что WSDL будет доступен, предпочтительно из сети, поскольку он каждый раз анализирует WSDL при запуске для создания привязок. Как и jgrowl в Создание клиента веб-службы с известным, но недоступным wsdl , клиент может не иметь доступа к WSDL по URL-адресу, который использует JAX-WS (который, вероятно, будет файлом на компьютере сборки или указатель на localhost). Я хочу отправить WSDL внутри клиента .jar, но самое простое решение (-wsdllocation "/path/to/wsdl/in/jar.wsdl"
) выводит предупреждение, которое я не хочу показывать.
Я бы также предпочел , а не , чтобы клиент делал что-то вроде решения, найденного jgrowl, которое работает, но не работает. Статьи, найденные в Google, в основном относятся к адресам WSDL сервера, но предполагают, что клиенты должны иметь возможность работать с META-INF/jax-ws-catalog.xml
файлами, которые преобразуют URL-адрес, используемый в -wsdllocation
, в путь в файле .jar, но, похоже, они не работают в наше тестирование.
Существует ли "рецепт", чтобы я мог поместить WSDL в .jar где-нибудь и получить клиент JAX-WS просто работать без дополнительных усилий со стороны пользователя клиента и без предупреждения?