Tôi có một ứng dụng sử dụng JPA/Hibernate và Google Guice. Guice được bootstrapped trong một ServletContextListener
và nó thiết lập các EntityManagerFactory
chính nó.JBoss AS7 Tự động tải JPA
Ứng dụng hoạt động tốt trên Tomcat 7, nhưng khi tôi triển khai để JBoss AS7 nó không thành công vì JBoss quyết định tự động thiết lập JPA trước khi gọi ServletContextListener
của tôi.
Làm cách nào để JBoss không tự động khởi chạy JPA và thay vào đó hãy đợi ServletContextListener
để làm điều đó?
Cập nhật
Theo liên kết mà James cung cấp dưới đây:
Trong triển khai ứng dụng, JPA sử dụng được phát hiện (ví dụ persistence.xml hoặc @ PersistenceContext/chú thích Unit) và tiêm nhiễm Hibernate phụ thuộc vào triển khai ứng dụng.
https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Introduction
tôi cần phải tìm ra cách để vô hiệu hóa tính năng này "tự động phát hiện".
Update # 2
quản lý container của JPA có thể bị vô hiệu hóa bằng cách thêm thuộc tính sau vào persistence.xml:
<property name="jboss.as.jpa.managed" value="false" />
Theo this topic, tính đến tháng 2 năm 2012 chức năng này chỉ là có sẵn trong bản dựng hàng đêm.
này khá cũ, nhưng tôi gặp phải vấn đề tương tự. Vấn đề thêm của tôi là tôi không sử dụng persistence.xml mà đúng hơn là tuyên bố nhà máy quản lý thực thể với mã java và dường như việc thêm thuộc tính bị bỏ qua và không tạo ra sự khác biệt nào. Bất kỳ ý tưởng nếu nó có thể được giải quyết với cách tiếp cận này? – andreadi
@andreadi Không có ý tưởng. Tôi đã chỉ thử nghiệm một ứng dụng trên AS7 nhưng không bao giờ tiến lên phía trước với việc sử dụng nó cho dự án đó. Bạn có thể đặt cược tốt nhất để hỏi một câu hỏi mới với chi tiết cụ thể của bạn. –