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
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ó.
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
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
Tôi hiện đang sử dụng một cách tiếp cận khác.
- Tạo thư mục lưu trữ trung tâm và đặt tất cả thư viện chung vào đó.
- 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.
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.
Đừ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.
Đặ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.
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.
- 1. Sử dụng thư viện hỗ trợ trong các dự án và thư viện android (Android Studio)
- 2. Sử dụng giao diện Clojure trong dự án thư viện Java
- 3. Android Studio - cách sử dụng thư viện (từ các dự án nhật thực)
- 4. Sử dụng Thư viện Android trên một Dự án Java Thông thường
- 5. Maven cho các dự án web tĩnh
- 6. CMake: nhiều tiểu dự án sử dụng cùng một thư viện tĩnh
- 7. Android Lint: bỏ qua các dự án thư viện
- 8. Cách sử dụng tệp * .jar trong một dự án Java?
- 9. Làm cách nào để sử dụng Server.MapPath bên trong dự án thư viện lớp học
- 10. Một dự án ndk đơn giản bằng cách sử dụng thư viện Eigen và jni
- 11. dự án thư viện android obfuscation
- 12. Nhiều dự án sử dụng nhiều tập lệnh setup.py?
- 13. Cách đưa dự án Java vào một dự án Android?
- 14. Dự án thử nghiệm độc lập cho dự án thư viện trên Android
- 15. thêm các dự án khác làm thư viện trong netbeans
- 16. Sử dụng thuộc tính dự án Visual Studio hiệu quả cho nhiều dự án và cấu hình
- 17. Cách tạo thư viện tĩnh từ dự án Xcode?
- 18. Trường hợp sử dụng cho Clojure trong các dự án
- 19. Dự án thư viện Android - cách tải ngữ cảnh?
- 20. Chuyển đổi loại dự án Eclipse nói chung thành Java
- 21. tạo một thư viện lớp cho một dự án sharepoint
- 22. Sử dụng thư viện được kiểm soát nguồn trong các dự án được kiểm soát nguồn
- 23. Thiết lập sonar-runner cho nhiều dự án java
- 24. Android Studio: cách nhập dự án thư viện Android
- 25. Sử dụng Maven cho dự án R
- 26. Bạn có thể sử dụng thư viện C++ trong dự án Cocoa (Obj-C) không?
- 27. dự án có nguồn gốc Android tham khảo chia sẻ thư viện từ C++ Dự án thư viện
- 28. Sử dụng thư viện tĩnh và các sản phẩm bó từ Xcode 4 tiểu dự án
- 29. Làm cách nào để sử dụng thư viện Tăng cường trong một dự án qmake?
- 30. Phát triển dự án Ứng dụng Web Java cho hai khách hàng
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. . –
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) –
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