2009-06-30 27 views
6

Tôi đang có bốn dự án khác nhau và tôi đang sử dụng WebLogic để triển khai các dự án của mình. Có một số thư viện (tệp jar) phổ biến cho tất cả các dự án. Hiện tại, mỗi dự án của tôi đều có thư mục lib và có cùng một bộ thư viện. Bây giờ, có thể có thư mục lib này bên ngoài các tệp WAR và truy cập chúng hay không.Cách sử dụng các thư viện chung cho nhiều dự án web Java

Trả lời

8

Chống lại sự cám dỗ khi đặt các tệp jar vào thư mục "được chia sẻ" của vùng chứa của bạn. Nó là tốt hơn để giữ các tập tin jar, nơi họ đang có. Có thể bạn nên sử dụng một thư mục được chia sẻ ngay bây giờ, nhưng trong tương lai, bạn có thể cần phải triển khai một ứng dụng yêu cầu một thư viện được chia sẻ, nhưng là một phiên bản khác.

Điều đó đang được nói, tôi không có kinh nghiệm với WebLogic. Trong Tomcat có một thư mục chia sẻ với các thư viện chung cho tất cả các ứng dụng được triển khai. Nó không phải là một ý tưởng tốt để sử dụng này. Nếu WebLogic có thể được cấu hình để sử dụng một thư mục chia sẻ cho một tập hợp các ứng dụng (và không phải cho tất cả các ứng dụng được triển khai), bạn có thể sử dụng nó.

+1

Lời khuyên tốt! Có rất ít chi phí trong việc có thêm một bản sao của tệp jar, trong khi, phải giả mạo hai phiên bản của một thư viện chung từ cùng một vị trí hoặc buộc tất cả các ứng dụng của bạn nâng cấp lên phiên bản mới. . –

+0

Trên thực tế sau khi biên dịch kích thước dự án là khoảng 1,5 mb (không có libs) và 20 mb (với libs) –

+0

Bạn có thể sử dụng thư mục dùng chung trong máy phát triển của mình để triển khai nhanh hơn. Trong một môi trường sản xuất, điều này không quan trọng lắm, vì vậy bạn thích một tệp WAR lớn hơn với tất cả các lọ bên trong. Nếu bạn làm như vậy, bạn cần thực hiện kiểm tra hai lần (cho cả WAR nhỏ và lớn). – kgiannakakis

0

Trước tiên, bạn có thể đặt tất cả thư viện của mình trên cùng một địa điểm và yêu cầu quá trình xây dựng của bạn nhập những thứ cần thiết.

Có để triển khai Weblogic 10 mới có thư mục lib trong mỗi miền nơi bạn có thể đặt libs được chia sẻ. tôi không nghĩ rằng điều đó là có thể trước khi Weblogic 10

+1

Có hỗ trợ thư viện được chia sẻ trong phiên bản 9: http://e-docs.bea.com/wls/docs92/programming/libraries.html – McDowell

-1

Tôi hiện đang sử dụng một cách tiếp cận khác.

  1. Tạo thư mục lưu trữ trung tâm và đặt tất cả thư viện chung vào đó.
  2. Trong mỗi dự án, bạn có thể tạo tham chiếu đến tất cả các thư viện cần thiết. Trong Subversion, nó hoạt động với externals

Mọi lúc, bản sao làm việc cục bộ được cập nhật, bên ngoài được cập nhật, vì vậy bạn chỉ cần chuyển đến thư mục trung tâm và nó tự động được phân phối cho tất cả các dự án.

3

Bạn có muốn thực hiện việc này không? Trừ khi bạn đang mắc kẹt cho không gian triển khai, tôi sẽ (có lẽ) tư vấn chống lại nó.

Tại sao? Tại thời điểm này bạn có 4 giải pháp chạy ra khỏi các libs này. Nếu bạn phải nâng cấp một trong các lib (nói, nếu bạn phát hiện ra một lỗi, hoặc nếu bạn yêu cầu một tính năng mới), thì bạn sẽ phải kiểm tra khả năng tương thích và chức năng cho tất cả 4 giải pháp. Nếu mỗi giải pháp có bộ lib riêng, thì chúng được sandbox và bạn không phải di chuyển tất cả 4 bước.

Lưu ý rằng tất cả các bản lề này về cách dễ dàng để hồi quy - kiểm tra các giải pháp của bạn. Bạn có thể thấy dễ dàng, trong trường hợp sử dụng cùng một bộ libs là khả thi.

2

Đừng làm vậy.

Toàn bộ ý tưởng của tệp WAR là chúng là các đơn vị khép kín. Điều này giúp việc triển khai dễ dàng hơn nhiều.

Ngoài các xung đột phiên bản có thể xảy ra mà những người khác đã chỉ ra, việc đưa các tệp jar vào/chia sẻ có thể có các hậu quả rất lồng nhau cho khả năng hiển thị lớp học. Chúng sẽ nằm trên một trình nạp lớp riêng biệt và không thể nhìn thấy các lớp trong tệp tin WAR. Nếu bạn sử dụng thư viện dựa trên Class.forName() để làm việc (và có rất nhiều), điều này có thể rất đau đớn.

Nếu bạn thực sự, thực sự không thể đủ khả năng cho không gian đĩa bổ sung và bộ nhớ nhìn vào OSGi hoặc Spring DM.Họ đã giải quyết vấn đề này, nhưng ở mức độ phức tạp gia tăng.

1

Đặt tất cả các tệp jar được chia sẻ trong thư mục \ lib phổ biến của weblogic. phổ biến \ lib có thể truy cập bởi tất cả các ứng dụng được triển khai.

0

Bạn có thể đặt các lọ vào tệp tai của riêng mình và triển khai nó dưới dạng thư viện được chia sẻ.

Bạn cũng có thể đặt các cuộc chiến tranh vào tai và thêm các lọ được chia sẻ vào APP-INF/lib. Đây là một phần mở rộng WebLogic của J2EE, vì vậy nó sẽ không hoạt động trên các máy chủ khác.

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