2010-11-03 53 views
2

我想在Weblogic上使用JAX-WS 2.1部署Web服務,其中wsdl導入了一個模式,但我希望在另一個位置使用它而不是與wsdl一起,最好是從classpath加載。在wsdl中使用jax-ws-catalog.xml解析導入的xsd:s

我希望我可以使用jax-ws-catalog.xml來映射這個,但我似乎無法讓Weblogic在部署該應用程序時將其啓動,然後在無法找到xsd時失敗。

也許我想要做的事情是不可能的,目錄映射只用於Web服務客戶端,我還沒有找到任何關於此的明確文檔。

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

如果您通過sun-jaxws.xml(即通過com.sun.xml.ws.transport.http.servlet.WSServletContextListener等)發佈您的端點,我認爲支持JAX-WS jax-ws-catalog.xml。查看JAX-WS源代碼,我發現如果使用的是W3CEndpointReferenceBuilder/Provider.createW3CEndpointReference()(可能this article會給你更多信息)支持目錄。

我建議你要做的是在調試模式下啓動Weblogic AS,並在類com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser的兩個公共靜態parse()方法上放置斷點。