2009-09-01 29 views
12

Tôi có một ứng dụng J2EE cũ (J2EE 1.3), mà gói thành một EAR, và trong EAR, có các WAR và EJB JAR. Bây giờ một trong những JAR EJB cần tham khảo một số thư viện JAR của bên thứ 3, vậy đâu là nơi tốt nhất để đóng gói các JAR đó và làm thế nào?Làm thế nào để đóng gói các JAR của bên thứ 3 vào một bình EJB?

+2

xuất sắc câu hỏi. Tại sao việc triển khai/cấu trúc của bao bì EJB/EAR khó khăn hơn nhiều so với WAR ??? Đây phải là trường hợp sử dụng tự động, khá điển hình. – Roboprog

Trả lời

18

Chúng nằm trong tệp tai, ở gốc hoặc bạn có thể tạo một thư mục lib để lưu trữ chúng. Bất kỳ dự án nào (EJB hoặc WAR) cần tham chiếu đến chúng phải bao gồm chúng trong Đường dẫn lớp học: của tệp kê khai.

nội dung Tai

- log4j.jar 
    - lib 
    - commons-lang.jar 
    - MyEJBProj.jar 
    - MyWAR.war 

nội dung MyEJBProj

- classes 
- META-INF 
    - MANIFEST.MF 

MANIFEST.MF

Manifest-Version: 1.0 
    Class-Path: log4j.jar lib/commons-lang.jar 
+1

Tên tệp chính thức là MANIFEST.MF và định dạng tệp đó có thể khá cầu kỳ. Bạn cần tất cả nội dung trên cùng một dòng (hoặc sử dụng một ký tự dấu cách đơn lẻ làm tiền tố trên các dòng sau để tiếp tục) và bạn cần phải phân định đường dẫn bằng ",". Nói cách khác: Đường dẫn lớp: log4j.jar, lib/commons-lang.jar –

+0

Đúng trên tên (được chỉnh sửa để phản ánh), phải là tất cả các chữ cái, nhưng đường dẫn lớp có thể được phân tách bằng dấu cách, ngay cả trên cùng một dòng. Chỉ cần đảm bảo không có khoảng trống sau mục nhập cuối cùng vì nó cho biết sự tiếp tục. Eclipse, ví dụ sẽ viết/hiển thị đường dẫn lớp với một bình mỗi dòng và một khoảng trống ở cuối mỗi dòng nếu một dòng khác theo sau. – Robin

+0

Đừng quên bao gồm hai ngắt dòng ở cuối MANIFEST.MF. Tôi nhớ một lỗi cũ, nơi điều này là cần thiết, bởi vì nếu không một số nội dung trên sẽ bị bỏ qua ... –

Các vấn đề liên quan