Встраивание WSDL для веб-службы в клиент JAX-WS .jar

У меня есть веб-служба, которая была создана несколько лет назад на C ++ и используется клиентом .NET с помощью C # "wsdl.exe" для создания клиентских заглушек. По ряду причин мне теперь также нужен клиент 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 будет работать без дополнительных усилий со стороны пользователя клиента и без предупреждений?

5
задан Community 23 May 2017 в 12:08
поделиться