2013-01-16 44 views
15

Vui lòng đưa ra lời khuyên về cách thực hiện kiến ​​trúc "plugin" cho ứng dụng web Java.Kiến trúc "plugin" ứng dụng Web Java

Hiện tại chúng tôi đang sử dụng Spring + Hibernate + Struts 2 khá đơn giản và tiêu chuẩn trong thùng chứa servlet Tomcat. (Được xây dựng với maven)

Tôi cần một cái gì đó như Redmine. Trong trường hợp bất kỳ mô-đun nào có thể được bật/tắt, cập nhật Redmine UI

Vui lòng loại trừ các tùy chọn nặng như OSGi, Portlet.

  • OSGi quá nặng, không có sự chấp nhận tốt về công nghệ dành cho web. Tôi đã xem Eclipse Germini;
  • Portlet nó chỉ cũ và không bao giờ phổ biến.
+0

Tôi đã nhận được tiền thưởng, nhưng câu hỏi vẫn là ghi chú đã đóng. –

Trả lời

13

Tôi sẽ cố gắng cung cấp một số giải pháp khả thi. Tôi đã dành thời gian chuẩn bị các PoC nhỏ cho dự án mà tôi đang làm việc, vì vậy hãy hy vọng các tùy chọn bên dưới có liên quan.

Lưu ý quan trọng: thật dễ dàng để xác định một số điểm mở rộng, hãy giải quyết và tìm các triển khai có sẵn. Có rất nhiều giải pháp có sẵn, ví dụ tốt và đơn giản một - JSPF

Tài nguyên là vấn đề chính cho các ứng dụng WEB

OSGi

OSGi, không phải là xấu và có thể có ích. Nó có vẻ là nặng (và một số triển khai là nặng) nhưng đây là giá của nền tảng tiêu chuẩn hóa. Tôi sẽ đề nghị kiểm tra Apache Felix. Nó có thể được sử dụng trong một chế độ "nhẹ". Bằng cách này, nó bao gồm Web Console đó là xây dựng ứng dụng plugin dựa như lỏng lẻo, có thể hữu ích:

enter image description here

Một số ví dụ Extending the Apache Felix Web Console

Console Web có thể được mở rộng bằng cách đăng ký một Dịch vụ OSGi cho giao diện javax.servlet.Servlet với thuộc tính dịch vụ felix.webconsole.label được đặt thành nhãn (đoạn cuối cùng trong URL) là trang. Dịch vụ tương ứng được gọi là Plugin Web Console hoặc ngắn gọn là một plugin .

Bạn cũng có thể kiểm tra eie-manager sạch và đơn giản và sử dụng OSGi để quản lý plugin. Có thể là một ví dụ tốt cho bạn.

khuôn khổ Tuỳ chỉnh Plugin

tôi sẽ đề nghị xem xét giải pháp sau Jenkins/Hudson. Tôi sẽ nói rằng hệ thống plug-in Jenkins khá trưởng thành và đáng tin cậy. Có thể được sử dụng như một ví dụ tốt.

enter image description here

Hãy cũng kiểm tra Hudson Plugin Architecture

giải pháp đơn giản

Đối với dự án của tôi, tôi đã xây dựng lớp trừu tượng Plugin dựa trên JSPF với sự phụ thuộc tùy chỉnh phân giải.

PROS:

  • đơn giản và nhỏ
  • khái niệm sạch
  • làm việc tốt

Nhược điểm:

  • mà không quản lý Plugin thích hợp có thể được làm chậm (tìm kiếm đầy đủ classpath)
  • cung cấp chức năng rất cơ bản
  • có thể yêu cầu thêm sự chú ý

tôi sẽ đề nghị sử dụng JSPF chỉ khi bạn thực sự cần một số sự đơn giản và muốn kiểm soát tất cả mọi thứ. JPF cung cấp rất nhiều tính năng thú vị ra khỏi hộp, ví dụ:

Plug-ins có thể "hot-đăng ký" và thậm chí de-đăng ký trong thực hiện ứng dụng. Hơn nữa, các trình cắm thêm đã đăng ký có thể được kích hoạt và ngừng hoạt động "khi đang di chuyển", giảm thiểu tài nguyên thời gian chạy cách sử dụng.

Vấn đề là JPF đã chết.

Đề xuất

Đừng dành thời gian với Apache Felix. Nó đủ trưởng thành, vì vậy các khoản đầu tư thời gian của bạn có thể trả lại rất nhiều.

6

Kiểm tra câu trả lời cho câu hỏi này: Best way to build a Plugin system with Java

Nếu bạn không tin tưởng các mã plugin, bạn có thể thực hiện sandboxing, như mô tả ở đây: Sandbox against malicious code in a Java application

Các mã nguồn mở Java Plug-in Framework hỗ trợ dự án hủy kích hoạt plugin, bạn có thể lấy cảm hứng từ nó ngay cả khi nó quá nặng cho mục đích của bạn.

+0

Làm cách nào để áp dụng điều này cho các phần web? Bạn sẽ làm tất cả các plugin như .war? –

+0

Vâng, nếu các plugin này có thể là các ứng dụng web độc lập, thì bạn không phải làm bất kỳ điều gì, ví dụ: webapp quản lý Tomcat cho phép bạn bắt đầu/dừng/tải lại các ứng dụng web mà không phải tắt và khởi động lại máy chủ: http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html – lbalazscs

+0

plugin không nên là ứng dụng web độc lập.Bằng cách này, sẽ có rất nhiều công việc làm thế nào để tích hợp chúng (liên kết chéo, bảo mật, đăng nhập simgle vv) –

2

Atlassian mở có nguồn gốc hệ thống plugin của họ here. Tôi thấy nó đang được đội Atlassian làm việc rất nhiều. Giá trị để khám phá documentation

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