gpt4 book ai didi

java - WSDL 文件 : "Error resolving component ' s:schema'"上的 JAX-WS 错误

转载 作者:IT老高 更新时间:2023-10-28 20:35:03 32 4
gpt4 key购买 nike

错误

我在一个 Java 项目中使用 wsimport 来为三个 SOAP Web 服务生成源代码。前两个工作正常:我使用 JAX-WS Maven 插件来抓取 WSDL 文件并生成相应的 Java 源文件。

这对于一项 Web 服务失败;我收到以下错误:

[jaxws:wsimport]
Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl]
parsing WSDL...


src-resolve.4.2: Error resolving component 's:schema'. It was detected that 's:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'. If this is the incorrect namespace, perhaps the prefix of 's:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'.
line 80 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1

undefined element declaration 's:schema'
line 80 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

undefined element declaration 's:schema'
line 127 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

undefined element declaration 's:schema'
line 142 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl


罪魁祸首

此 WSDL 文件与有效文件之间的区别在于错误消息中指出的行,第 80、127 和 142 行:

<s:element ref="s:schema" />

注意:wsdl 文件的根元素定义了“s”命名空间:

xmlns:s="http://www.w3.org/2001/XMLSchema" 


我的尝试

我已经完成了我的研究。看起来其他人也遇到过类似的问题,从“只是不要使用 <s:element ref="s:schema" />”到“使用导入标签”,再到一些显然在旧 java.net 论坛上的不可知解决方案(之前它是取缔,对现代亚历山大 Java 知识图书馆的纵火)。

  • 我尝试将以下导入语句放在包含问题标签的元素中:<s:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="http://www.w3.org/2001/XMLSchema.xsd" /> . wsimport 给了我一个新错误:

    [jaxws:wsimport]
    Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl]
    parsing WSDL...


    Element "{http://www.w3.org/2001/XMLSchema}annotation" shows up in more than one properties.
    line 248 of http://www.w3.org/2001/XMLSchema.xsd

    The following location is relevant to the above error
    line 242 of http://www.w3.org/2001/XMLSchema.xsd

    Property "Any" is already defined. Use &lt;jaxb:property> to resolve this conflict.
    line 108 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

    The following location is relevant to the above error
    line 109 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

    Property "Any" is already defined. Use &lt;jaxb:property> to resolve this conflict.
    line 184 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

    The following location is relevant to the above error
    line 185 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

    Property "Any" is already defined. Use &lt;jaxb:property> to resolve this conflict.
    line 199 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

    The following location is relevant to the above error
    line 200 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

    此错误中引用的第 108 行和第 109 行是:(第 184-5、199-200 行类似)

    <s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax" />
    <s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax" />
  • 我尝试将 jaxws-maven-plugin 从 1.10 升级到 2.2。同样的问题。

  • Here's a possible solution -- 我试图弄清楚如何使用 JAX-WS Maven 插件来实现它。有什么提示吗?


结论

有什么想法吗?您需要任何进一步的信息吗?为简洁起见,我省略了 pom.xml 和 Service.asmx.wsdl 文件,但如果其中有更重要的信息,可以包含它们。

谢谢!


附录

Here's another person having the same problem ,如果这对任何潜在的回答者有帮助。 Here's yet another similar problem.我不太明白this article ,但这似乎暗示我必须手动解析 SOAP XML!恐怖!

最佳答案

我通过改编 Vivek Pandey's method 解决了这个问题到 Maven,同时更新到 jaxws-maven-plugin 2.2。我会在这里重申它的后代:

总结

this XJB customization file (见下文)在您的默认绑定(bind)文件目录中,并将 wsimport 设置为绑定(bind)它和 http://www.w3.org/2001/XMLSchema.xsd .

XJB 定制

上述 XML 文件 xsd.xjb 的内容应该放在您的默认绑定(bind)文件目录中,如下所示(归功于 Kohsuke):

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
version="2.0">

<globalBindings>
<xjc:simple />
</globalBindings>

<bindings scd="~xsd:complexType">
<class name="ComplexTypeType"/>
</bindings>

<bindings scd="~xsd:simpleType">
<class name="SimpleTypeType"/>
</bindings>

<bindings scd="~xsd:group">
<class name="GroupType"/>
</bindings>

<bindings scd="~xsd:attributeGroup">
<class name="AttributeGroupType"/>
</bindings>

<bindings scd="~xsd:element">
<class name="ElementType"/>
</bindings>

<bindings scd="~xsd:attribute">
<class name="attributeType"/>
</bindings>
</bindings>

POM

这是我的 POM 文件的相关部分,并注明了更改:

<plugin>
<!-- CHANGE: updated groupId and version -->
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<!-- CHANGE: added args tag to bind http://www.w3.org/2001/XMLSchema.xsd -->
<args>
<arg>-b</arg><arg>http://www.w3.org/2001/XMLSchema.xsd</arg>
</args>
<wsdlFiles>
<wsdlFile>erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl</wsdlLocation>
<staleFile>${project.build.directory}/jaxws/stale/Service.asmx.stale</staleFile>
<!-- CHANGE: added bindingFiles tag to bind XJB customization, located at the default binding files directory, MyProject/src/jaxws/xsd.xjb . -->
<bindingFiles>
<bindingFile>xsd.xjb</bindingFile>
</bindingFiles>
</configuration>
<id>wsimport-generate-egtestreportengine</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<configuration>
<sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
<xnocompile>true</xnocompile>
<verbose>true</verbose>
<extension>true</extension>
<catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
<target>2.0</target>
</configuration>
</plugin>

关于java - WSDL 文件 : "Error resolving component ' s:schema'"上的 JAX-WS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499860/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com