当前位置: 首页 > 知识库问答 >
问题:

太阳眼镜。xml-从jar加载wsdl和xsd

司徒光霁
2023-03-14

我使用契约优先的方法来构建JAX-WS Webservice。客户端使用wsdlLoction属性从SO答案https://stackoverflow.com/a/18323853/775467中指定的客户端jar中选择wsdl和xsd资源。

在服务器端也可以这样做吗。i、 e是否可以在sun-jaxws.xml中使用wsdl和jar中引用的xsd

<endpoint name='TestService'
        implementation='provider.server.AddNumbersImpl'
        wsdl='WEB-INF/wsdl/Test.wsdl'
        service='{http://example.org}TestService'
        port='{http://example.org}TestServicePort'
        url-pattern='/test'/>

我知道我可以像上面的代码片段一样引用WEB-INF目录中的wsdl,但是我不想将wsdl和xsd打包到WAR中,而是希望从部署到服务器的共享库jar中获取它们,就像客户端代码获取wsdl一样。

共有1个答案

吕俊才
2023-03-14

无法更改wsdl文件的位置。sun-jaxws.xml的wsdl属性必须具有前缀“WEB-INF/wsdl”。否则JAX-WS会生成并发布一个新的WSDL。如果您查看jaxws-ri的源代码,您可以在类com.sun.xml.ws.transport.http.中找到实现,方法是getPrimaryWSDL:

...
if (wsdlFile != null) {
        if (!wsdlFile.startsWith(JAXWS_WSDL_DD_DIR)) {
            logger.log(Level.WARNING, "Ignoring wrong wsdl={0}. It should start with {1}. Going to generate and publish a new WSDL.", new Object[]{wsdlFile, JAXWS_WSDL_DD_DIR});
            return null;
        }
...
}
 类似资料:
  • 我正试图将类从版本更新到更新的版本,以便与兼容,因为以下消息: JAVAlang.LinkageError:您正在尝试运行JAXB 2.0运行时(从jar:file:/opt/tomcat/appName/WEB-INF/lib/JAXB-runtime-2.3.1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class),但在类路径的前面有旧

  • 我有一个名为core project jar的maven spring项目,其中包含orm和持久性xml文件,以及在注释和xml中定义的实体。现在我有了另一个spring boot项目,它利用这个核心项目初始化持久性。在SpringBoot Main类中定义@EntityScan(packages)时,我能够扫描带注释的实体(即带有实体的实体),但没有扫描orm xml中定义的实体(即 获取错误,

  • 我正在使用Javase6手动部署webservice。我想使用@SchemaValidation来验证SOAP流量。在发布终结点期间,我收到错误: 原因:org.xml.sax.SAXParseException:s4s-att-invalid-value:元素“restriction”中“base”的属性值无效。记录原因:UndeclaredPrefix:无法将“xsd:string”解析为QN

  • 问题内容: 我可以使用ClassLoader实现从InputStream加载类吗? 我正在尝试将具有InputStream的JAR加载到新的ClassLoader中。 问题答案: 这不太可能,因为您会发现自己尝试这样做。您将无法根据需要随机访问和查找类,因此您必须将内容缓存在内存或文件系统中。 如果您在磁盘上缓存,则只需使用URLClassLoader即可。 如果缓存在内存中,则需要使用JarIn

  • 我正在尝试动态加载一个java类。基本思想是,jar包含在运行时动态加载的模块。我就是这样做的(我知道这很有技巧,但没有其他方法可以动态地将jar添加到已经存在的类加载器afaik中): 每个模块都带有@module注释。因此,为了获得关于模块的更多信息,我尝试获取注释。问题是foo上的注释是com类型的。太阳$代理27美元,而不是com。编码员。所以我得到了一个 我得说我有点困惑这里发生了什么。

  • 在使用Maven捆绑JAR文件中的资源时,我有一种感觉,我错过了一些关键的东西。我的目录结构是标准的Maven结构(即\src\main\java,\src\main\Resources)。 使用IDE时,我将资源文件引用为\main\resources\images\blah。。。它工作得很好,但当Maven捆绑JAR文件时,它会将路径放在相对于根的位置(“\ images\blah”),因此没