我有Ejb项目和其他web项目,我通过EAR部署在Wildfli10.x服务器上,war项目和Ejb项目需要oracle.sql.OPAQUE来通过xdb jars创建xml数据,对于oracle.sql.OPAQUE,我在项目构建路径中添加了ojdbc6并将其添加到部署描述符中,我还为jdbc连接在通配符模块中添加了ojdbc6驱动程序。在部署项目时,没有出现错误,在运行页面时,我得到的是oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE: java.lang.ClassCastException: oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE
类加载器似乎已经加载了两次oracle.sql.OPAQUE,因此这是一个问题。
非常感谢,请提供任何可能的链接,我将非常感谢您。
10:24:39,460 INFO [icrCommon] (default task-8) ++++ QueryRequest queryXMLAccess() - ContextKey:256574422:190508:210142844 TypeId: 0 Channel: CAP
10:24:40,521 SEVERE [com.sun.xml.ws.server.sei.EndpointMethodHandler] (default task-8) oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE: java.lang.ClassCastException: oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE
at com.att.icr.dataAccess.ICRDatabaseAccess.IcrActiveHistoryXMLQuery(ICRDatabaseAccess.java:2093)
at com.att.icr.icrservices.datamapping.ICRDataAccess.queryXMLAccess(ICRDataAccess.java:1161)
at com.att.icr.icrservices.ICRSoapHttpBindingImpl.queryICR(ICRSoapHttpBindingImpl.java:307)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)发布于 2019-07-29 07:00:56
这个问题与野生苍蝇中的类加载问题有关。如您所知,Wildfly有一个模块化的类加载结构。每个模块都有自己的Classloader。仅仅是类类型相同是不够的。在Classloaders中肯定是一样的。在JBoss文档中
WildFly的类加载基于必须定义对其他模块的显式依赖的模块。WildFly中的部署也是模块,除非定义了对这些类的显式依赖,否则无法访问应用程序服务器中jars中定义的类。
您可以创建自定义模块,并在此模块中提供.ears加载jar。在$JBOSS//com/ module.xml //中创建module.xml文件,将要加载的jar名称写入module.xml。
<module xmlns="urn:jboss:module:1.5" name="com.example">
<resources>
<resource-root path="sample.jar"/>
</resources>
将jar复制到module.xml所在的路径。
+-----com
+-----example
+-----main
module.xml
sample.jar在.ears中创建部署描述符(JBoss-Deployment-structure.xml),并将模块添加到这个文件中。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<deployment>
<dependencies>
<module name="com.example" export="true" />
</dependencies>
</deployment>
</jboss-deployment-structure>所以,Jar的类装载机是一样的。您可以查看这个例子和红帽医生。
https://stackoverflow.com/questions/57247767
复制相似问题