我们在 Weblogic 10.3.5 中部署了一个测试 Web 应用程序。Web 应用程序包含一个 servlet,它使用 jax-ws 调用部署在同一 weblogic 中的 Web 服务。访问 servlet 会引发以下异常:
Two classes have the same XML type name "address". Use @XmlType.name and @XmlType.namespace to assign different names to them.
this problem is related to the following location:
at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address
at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address com.sun.xml.ws.developer.MemberSubmissionEndpointReference.addr
at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
this problem is related to the following location:
at javax.xml.ws.wsaddressing.W3CEndpointReference$Address
at private javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address
at javax.xml.ws.wsaddressing.W3CEndpointReference
我将 servlet 的逻辑复制到一个通用的 java 类中,然后运行它。测试成功。所以问题应该出在Web应用程序上。
我尝试了很多方法,修改 weblogic-application.xml 以添加如下所示的 prefer-application-packages 部分,但仍然不起作用。
<prefer-application-packages>
<package-name>javax.xml.ws.*</package-name>
<package-name>javax.xml.bind.*</package-name>
<package-name>javax.jws.*</package-name>
<package-name>javax.namespace.xml.*</package-name>
<package-name>javax.xml.soap.*</package-name>
<package-name>org.apache.xerces.*</package-name>
<package-name>org.apache.commons.*</package-name>
<package-name>com.sun.xml.*</package-name>
</prefer-application-packages>
任何人都可以帮助我,在这个错误上花了几天时间,一点进展都没有。感谢您提前回复一百万。
更新 1
在web应用中,我们不想用metro,直接用从java.net下载的jax-ws,把jaxws-rt.jar、jaxws-api.jar、jaxb等相关jar放到ear/APP -INF/库。
WebLogic Classloader Analysis Tool (wls-cat) 告诉有一些类冲突,并建议在weblogic-application.xml 中添加prefer-application-packages。所以我们添加了 prefer-application-packages 来告诉 weblogic 从我们的应用程序加载它们,而不是从 weblogic jax-ws/metro 实现。
但还是不行。