0

我正在尝试使用 Metro Web 服务来代替 weblogic.jar 中包含的默认 Weblogic webservices 堆栈。

当试图让 WebLogic 先使用 Metro 堆栈时,问题就出现了。

到目前为止我采取的步骤是在项目中引用 webservices-rt.jar。到目前为止,我在部署 ear 文件时遇到此错误....

原因:java.lang.LinkageError:加载器约束违规:解析字段“DATETIME”时,引用类、javax/xml/datatype/DatatypeConstants 和类加载器的类加载器(weblogic/utils/classloaders/ChangeAwareClassLoader 的实例) (实例)对于该字段的解析类型 javax/xml/namespace/QName,该类型具有不同的 Class 对象

更新:

最近的错误是:“类 javax.xml.namespace.QName 既没有 @WebSerivce 也没有 @WebServiceProvider”奇怪的是它正在 QName 对象上寻找 @Webservice:

  1. Application-Weblogic.xml 的内容

<wls:prefer-application-packages>
<wls:package-name>com.ctc.</wls:package-name>
<wls:package-name>com.sun.xml.
</wls:package-name>
<wls:package-name>com.sun.istack.</wls:package-name>
<wls:package-name>com.sun.msv.datatype.
</wls:package-name>
<wls:package-name>com.sun.msv.driver.</wls:package-name>
<wls:package-name>com.sun.msv.grammar.
</wls:package-name>
<wls:package-name>com.sun.msv.reader.</wls:package-name>
<wls:package-name>com.sun.msv.relaxns.
</wls:package-name>
<wls:package-name>com.sun.msv.scanner.</wls:package-name>
<wls:package-name>com.sun.msv.util.
</wls:package-name>
<wls:package-name>com.sun.msv.verifier.</wls:package-name>
<wls:package-name>com.sun.msv.writer.
</wls:package-name>
<wls:package-name>com.sun.org.apache.xml.internal.</wls:package-name>
<wls:package-name>com.sun.wsit.
</wls:package-name>
<wls:package-name>javax.jws.</wls:package-name>
<wls:package-name>javax.xml.bind.
</wls:package-name>
<wls:package-name>javax.xml.soap.</wls:package-name>
<wls:package-name>javax.xml.stream.
</wls:package-name>
<wls:package-name>javax.xml.ws.</wls:package-name>
<wls:package-name>javax.xml.activation.
</wls:package-name>
<wls:package-name>javax.xml.annotation.</wls:package-name>
<wls:package-name>javax.xml.mail.
</wls:package-name>
<wls:package-name>javax.xml.security.</wls:package-name>
<wls:package-name>javax.xml.registry.
</wls:package-name>
<wls:package-name>javax.xml.rpc.</wls:package-name>
<wls:package-name>javax.xml.crypto.
</wls:package-name>
<wls:package-name>javanet.staxutils.</wls:package-name>
<wls:package-name>jp.gr.xml.
</wls:package-name>
<wls:package-name>org.codehaus.stax2.</wls:package-name>
<wls:package-name>org.glassfish.gmbal.
</wls:package-name>
<wls:package-name>org.iso_relax.</wls:package-name>
<wls:package-name>org.jcp.xml.dsig.
</wls:package-name>
<wls:package-name>org.jvnet.</wls:package-name>
<wls:package-name>org.relaxng.
</wls:package-name>
<wls:package-name>antlr.</wls:package-name>
<wls:package-name>org.apache.commons.lang.
</wls:package-name>
</wls:prefer-application-packages>

4

1 回答 1

0

看看使用在 weblogic-application.xml 部署描述符中配置的 FilteringClassLoader。您可以指示 WebLogic 从应用程序加载类,以支持 WebLogic 包含的库。描述符元素是,您指定要从应用程序加载的 Java 包。

如果您使用的是 WebLogic 10.3.4,则可以使用 ClassLoader Analysis 来分析发生冲突的包。

在这里查看我的演示文稿:SlideShare.net和我的 CAT 演示:YouTube

于 2011-04-28T14:43:22.867 回答