web-services - 使用 jax-ws-catalog.xml 解析导入的 xsd :s in wsdl

标签 web-services xsd weblogic jax-ws catalog

我想在 Weblogic 上使用 JAX-WS 2.1 部署 Web 服务,其中 wsdl 导入模式,但我更愿意将它放在另一个位置而不是与 wsdl 一起使用,最好应该从类路径加载它。

我希望我可以使用 jax-ws-catalog.xml 来映射它,但我似乎无法让 Weblogic 在部署应用程序时选择它,然后在找不到 xsd 时失败。

也许我想要做的事情是不可能的,并且目录映射仅用于 Web 服务客户端,我还没有找到任何关于此的明确文档。

wsdl 中的导入如下所示:

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

放在 WEB-INF 文件夹中的 jax-ws-catalog.xml 如下所示:
<?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>

正如我所说,这种用法甚至可能不受支持。我将不胜感激任何指点。

谢谢。

最佳答案

我认为 JAX-WS jax-ws-catalog.xml如果您通过 sun-jaxws.xml 发布端点,则支持(这意味着通过 com.sun.xml.ws.transport.http.servlet.WSServletContextListener 等)。查看 JAX-WS 源代码,我看到如果使用 W3CEndpointReferenceBuilder 则支持目录/Provider.createW3CEndpointReference() (也许 this article 会给你更多信息)。

我建议你做的是在 Debug模式下启动 Weblogic AS 并在类 com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser 的两个公共(public)静态 parse() 方法上设置断点。 .

关于web-services - 使用 jax-ws-catalog.xml 解析导入的 xsd :s in wsdl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4087481/

相关文章:

Java 应用程序服务器替代品

java - 当我运行我的应用程序时,Weblogic 中出现异常?

c# - GetListItems() 导致 401 错误,但 Checkout() 有效

java - 无法使用 SOAP UI 访问通过受 Siteminder 保护的 Web 服务器发送的请求的 Web 服务

java - 如何在 Java 中指定(给出实际名称)XML 字段 (Apache CXF)

java - XSD - 如何定义两个元素之间的关系

Java weblogic 错误,由 : java. lang.IllegalArgumentException 引起

web-services - 如何在 Spring 中配置 jax-ws 处理程序?

c - 是否有用于根据 XML 模式验证 XML 的 C 库?

xml - 对许多同名元素进行 XSD 属性验证 - 不可能吗?