Неверный путь к файлу XSD в WSDL - PullRequest
1 голос
/ 26 августа 2011

Я более или менее новичок в работе с веб-службами, но я попытался найти это без результатов.

У меня есть веб-служба, написанная на Java с использованием стека Metro, который прекрасно работает, когда я его запускаюна локальном экземпляре JBoss 5.1.0, но когда я перемещаю его на наш тестовый сервер, у меня возникают проблемы.

Служба развернута правильно, и я могу просматривать WSDL как обычно: https://myserver.myorg/path/service?wsdl

Тем не менее, wsimport не смог сгенерировать клиентские заглушки отсюда, и когда я более внимательно посмотрел на WSDL, я увидел это:

<xsd:schema>
  <xsd:import namespace="http://mynamespace/" schemaLocation="https://testserver.myorg:443/path/Service?null"/>
</xsd:schema>

Вместо того, что я увидел бы, когда я запускал его локально, у которого было установлено schemaLocationна http://localhost:8080/path/Service?xsd=1

Когда я пытаюсь вручную ввести значение xsd = 1 вместо нуля в веб-браузере, я получаю ошибку 404.

Кто-нибудь знает, что может вызвать это и как это исправить?это?

Спасибо, Радж.

Ответы [ 2 ]

0 голосов
/ 30 августа 2011

Тестовый сервер JBoss перезапускается еженедельно, и после перезапуска XSD-файл отображается правильно. Извините за шум - я должен научиться выключать и снова включать, прежде чем отправлять:).

0 голосов
/ 26 августа 2011

Я думаю, что проблема в том, что ваш XSD находится за SSL-соединением, поэтому ваш wsimport должен знать и доверять SSL-сертификату сервера.

Для этого вам нужно настроить новую JavaФайл хранилища ключей (.jks файл) или повторно используйте существующий, если он у вас уже есть, добавьте SSL-сертификат сервера (для этого вы можете использовать keytool, поставляемый с JDK) и объявить хранилище ключей Trustore с помощью следующей JVMпараметры вашего вызова wsimport:

-Djavax.net.ssl.trustStore=${truststore.location} -Djavax.net.ssl.trustStorePassword=${ssl.password}
...