2012-03-12 4 views
5

Bây giờ tôi có thể nạp các lọ nằm dưới EAR/lib. Nhưng tôi muốn đặt các lọ vào một con đường chung, cho các ứng dụng khác để sử dụng. Tôi thấy rằng thẻ của tệp jboss-deployment-structure.xml có thể thực hiện việc này. Nhưng nó không hoạt động. Tôi nhận được ngoại lệ ClassNotFound. Tôi không biết tại sao?Làm cách nào để sử dụng các jars bên ngoài trên JBoss 7?

<deployment> 
    <resources> 
     <resource-root path="/common/test.jar" /> 
    </resources> 
</deployment> 

Trả lời

11

Một cách để sử dụng thư viện toàn cầu trong các ứng dụng khác nhau có thể truy cập được bằng cách cung cấp chúng dưới dạng mô-đun. Do đó, mở rộng các mô-đun của thư viện mà bạn đang cung cấp với tư cách là nhà cung cấp máy chủ.

Ví dụ: Để làm cho bạn test.jar sẵn cho tất cả các ứng dụng, tạo một thư mục với tên module và một main thư mục con (ví dụ modules/commons/test/main).

Đặt thư viện của bạn ở đó và tệp mô tả mô-đun có tên module.xml. Nội dung mẫu:

<module xmlns="urn:jboss:module:1.0" name="commons.test"> 
    <resources> 
     <resource-root path="test.jar"/> 
    </resources> 
</module> 

Bây giờ thư viện có sẵn cho tất cả các ứng dụng. Để có quyền truy cập vào mô-đun, ứng dụng của bạn phải xác định sự phụ thuộc trong tệp kê khai.

Applications MANIFEST.MF:


Dependencies: commons.test 

này cũng có thể được thực hiện bằng cách maven trong thời gian xây dựng. Kiểm tra https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7 để biết chi tiết

Xin lưu ý rằng bạn đang sửa đổi chính máy chủ. Tất cả các ứng dụng sử dụng module của bạn đều phụ thuộc vào nó. Ứng dụng có phụ thuộc vào mô-đun commons.test sẽ không được triển khai trên máy chủ không có mô-đun này được cung cấp.

+0

Có thể thực hiện tương tự mà không cần chạm vào mô-đun máy chủ (toàn cầu) không? tức là tạo mô-đun bên trong EAR? – Sriram

+0

có khả năng xảy ra thẻ hoang dã thay vì chỉ định từng thư viện không? – Inv3r53