我们在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>
任何人都可以帮助我,花了几天时间来处理这个bug,没有任何进展。 万分感谢您的回复。
更新1
在Web应用程序中,我们不想使用metro,只需使用从java.net下载的jax-ws,并将put jaxws-rt.jar,jaxws-api.jar,jaxb和其他相关的jar放入耳/ APP-INF / lib中。
WebLogic类加载器分析工具(wls-cat)告诉我们有一些类冲突,并建议在weblogic-application.xml中添加prefer-application-packages。 所以我们添加prefer-application-packages来告诉weblogic从我们的应用程序加载它们,而不是从weblogic jax-ws / metro implmentation加载它们。
但仍然无效。
答案 0 :(得分:0)
问题可能来自于你想在Weblogic中使用Metro JaxW,它有自己的实现,叫做Oracle JaxWS(基于Metro)。
这是一个链接,其中解释了如何使用Metro与Weblogic: http://metro.java.net/guide/ch02.html#weblogic-10
如果您不使用Metro并依赖Oracle JaxWS,则不必使用首选库或任何特殊包装。