2011-12-08 24 views
6

Tôi gặp sự cố khi truy cập Oracle DB khi triển khai lên JBoss. Triển khai cho Tomcat hoạt động tốt - Không có vấn đề gì. Tôi nghi ngờ vấn đề có liên quan đến một thư viện xung đột mà tàu với JBoss. Khi tôi cố truy vấn cơ sở dữ liệu (sử dụng Hibernate), tôi nhận được thông tin sau:Xung đột Thư viện 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: [email protected]{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) 

Một lần nữa, không có vấn đề gì khi chạy trong Tomcat. Tôi đã thiết lập một tệp tải lớp jboss trong webroot của tôi chứa tệp này:

<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" /> 

Nhưng dường như điều này không có tác dụng. Kỳ lạ thay, tôi đang kết nối với hai cơ sở dữ liệu khác nhau với hai cấu hình ngủ đông khác nhau, một Oracle 11i và một Oracle 8i. Kết nối Oracle 11 không bao giờ ném một vấn đề ... Chỉ có kết nối 8i của nó gây ra vấn đề này. Kết nối 11 hoạt động tốt.

Tôi không biết tại sao điều này lại xảy ra, nhưng có thể JBoss chứa một phương ngữ lib 8 Hibernate và không phải là phương ngữ lib 11 của Oracle? Trong mọi trường hợp, làm thế nào để tôi nói với JBoss sử dụng các thư viện đóng gói của tôi và không phải là những cái được tìm thấy trên classpath của nó (giả sử đây là vấn đề của tôi)?

+0

Tôi cần JBoss-web.xml (trong WEB-INF): com.talecris: archive = flint.war java2ParentDelegation = false MTR

+0

Đây là những gì chúng tôi đã làm trên triển khai JBoss của chúng tôi, chúng tôi loại bỏ tất cả các lọ hibernate từ JBOSS ser ver đã làm điều đó. Trong trường hợp của chúng tôi, phiên bản ngủ đông trên ứng dụng của chúng tôi không khớp với phiên bản jboss. –

+0

Cách đơn giản nhất là loại bỏ hibernate jars khỏi máy chủ jboss và đặt các lọ lên đường dẫn lớp ur. Khác bạn sẽ cần phải cấu hình một jboss-web –

Trả lời

0

Tôi nghĩ nguyên nhân gốc rễ của bạn là trình duyệt tính hợp lệ ngủ đông và tôi nghĩ bạn nên thêm thừa kế hợp lệ-ngủ đông nếu bạn đang sử dụng maven, bạn có thể sử dụng phụ thuộc sau đây.

<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> 
Các vấn đề liên quan