Использование jax-ws-catalog.xml для разрешения импортированных xsd: s в wsdl - PullRequest
2 голосов
/ 03 ноября 2010

Я хотел бы развернуть веб-службу с использованием JAX-WS 2.1 в Weblogic, где wsdl импортирует схему, но я бы предпочел, чтобы она находилась в другом месте, чем вместе с wsdl, предпочтительно ее следует загружать из пути к классам.

Я надеялся, что смогу использовать jax-ws-catalog.xml, чтобы отобразить это, но я не могу заставить Weblogic поднять его при развертывании приложения, которое затем завершается ошибкой, когда xsd не может быть найден.

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

Импорт в wsdl выглядит следующим образом:

 <xs:import namespace="com.xyz.common/1.0"
schemaLocation="com.xyz.Common.1.0.xsd" />

Файл jax-ws-catalog.xml, помещенный в папку WEB-INF, выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
    prefer="system">
    <system systemId="com.xyz.Common.1.0.xsd" 
            uri="classpath:com.xyz.Common.1.0.xsd" />
</catalog>

Как я уже сказал, это использование может даже не поддерживаться.Буду благодарен за любые указатели.

Спасибо.

1 Ответ

1 голос
/ 27 января 2011

Я думаю, что JAX-WS jax-ws-catalog.xml поддерживается, если вы публикуете свою конечную точку через sun-jaxws.xml (что означает через com.sun.xml.ws.transport.http.servlet.WSServletContextListener и др.). Глядя на исходный код JAX-WS, я вижу, что каталог поддерживается, если использовать W3CEndpointReferenceBuilder / Provider.createW3CEndpointReference() (возможно , эта статья даст вам больше информации).

Я предлагаю вам запустить Weblogic AS в режиме отладки и установить точки останова для двух открытых статических методов parse () класса com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.

...