我在部署到JBoss时遇到了访问Oracle DB的问题。部署到Tomcat可以很好地工作--没有问题。我怀疑这个问题与JBoss附带的一个冲突的库有关。当我尝试查询数据库时(使用Hibernate),我得到以下信息:
2011-12-08 08:02:53,640 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/xxxx].[xxxx]] (http-0.0.0.0-8080-9) Servlet.service() for servlet xxxx threw exception
java.lang.IllegalStateException: BaseClassLoader@50d81341{vfszip:/opt/jboss/jboss-eap-5.1/jboss-as/server/web/deploy/xxxxx.war/} classLoader is not connected to a domain (probably undeployed?) for class oracle.sql.DATE
at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:857)
at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447)同样,在Tomcat中运行时没有这样的问题。我已经在我的webroot中设置了一个jboss-classloading文件,其中包含以下内容:
<classloading xmlns="urn:jboss:classloading:1.0"
parent-first="false" domain="DefaultDomain" top-level-classloader="true"
parent-domain="Ignored" export-all="NON_EMPTY" import-all="true" />但这似乎没有帮助。奇怪的是,我使用两种不同的hibernate配置连接到两个不同的数据库,一个是Oracle11i,另一个是Oracle8i。Oracle11连接从来不会抛出问题...这是唯一导致这个问题的8i连接。11连接工作正常。
我不知道为什么会发生这种情况,但也许JBoss包含Oracle8 Hibernate方言库而不是Oracle11方言库?在任何情况下,我如何告诉JBoss使用我的打包的库,而不是在它的类路径上找到的库(假设这是我的问题)?
发布于 2013-01-02 16:26:44
我认为您的问题的根本原因是hibernate-validator,我认为您应该添加hibernate-validator-legacy如果您使用的是maven,您可以使用以下依赖项。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-legacy</artifactId>
<version>4.0.2.GA</version>
<exclusions>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
</exclusions>
</dependency>https://stackoverflow.com/questions/8431500
复制相似问题