Weblogic 10.3.5中的jax-ws:IllegalAnnotationsException:IllegalAnnotationExceptions的2个计数

时间:2012-09-01 16:38:30

标签: web-services jaxb weblogic jax-ws jaxb2

我们在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加载它们。

但仍然无效。

1 个答案:

答案 0 :(得分:0)

问题可能来自于你想在Weblogic中使用Metro JaxW,它有自己的实现,叫做Oracle JaxWS(基于Metro)。

这是一个链接,其中解释了如何使用Metro与Weblogic: http://metro.java.net/guide/ch02.html#weblogic-10

如果您不使用Metro并依赖Oracle JaxWS,则不必使用首选库或任何特殊包装。