2013-01-16 9 views
15

Podaj porady dotyczące wykonywania "wtyczek" dla aplikacji WWW Java.Architektura "wtyczki" aplikacji WWW w języku Java

Obecnie używamy dość prostego i standardowego Spring + Hibernate + Struts 2 w kontenerze serwletu Tomcat. (Zbudowany z mavenem)

Potrzebuję czegoś takiego jak Redmine. W przypadku, gdy dowolny moduł można włączyć/wyłączyć, zaktualizowano Redmine UI

Proszę nie uwzględniać ciężkich opcji, takich jak OSGi, portlet.

  • OSGi jest zbyt ciężkie, nie ma dobrej adaptacji technologii dla sieci. Już patrzyłem na Eclipse Germini;
  • Portlet To po prostu stare i nigdy nie było popularne.
+0

Nagrodzę nagrodę, ale pytanie jest nadal zamknięte. –

Odpowiedz

13

Postaram się przedstawić kilka możliwych rozwiązań. Spędziłem trochę czasu przygotowując małe PoC do projektu, nad którym pracuję, więc miejmy nadzieję, że poniższe opcje są istotne.

Ważna uwaga: bardzo łatwo jest zdefiniować punkt rozszerzenia, rozwiązać i znaleźć dostępne implementacje. Istnieje wiele dostępnych rozwiązań, na przykład dobra i prosta - JSPF

Zasoby są głównym problemem dla aplikacji internetowych

OSGi

OSGi, nie jest tak źle i może być przydatnym. Wydaje się być ciężki (a niektóre implementacje są ciężkie), ale jest to cena standardowej platformy. Proponuję sprawdzić Apache Felix. Może być stosowany w trybie "lekkim". Nawiasem mówiąc, zawiera konsolę internetową, która jest budować jako luźno stosowanie wtyczek opartych mogłyby być pomocne:

enter image description here

Niektóre przykłady Extending the Apache Felix Web Console

Konsola internetowa może zostać przedłużony o rejestrację Usługa OSGi dla interfejsu javax.servlet.Servlet z właściwością usługi felix.webconsole.label ustawiona na etykiecie (ostatni segment adresu URL) na stronie . Odpowiednia usługa jest nazywana wtyczką Web Console lub wtyczką w skrócie.

Możesz również sprawdzić, eie-manager, który jest czysty i prosty oraz używa OSGi do zarządzania wtyczkami. To może być dobry przykład dla ciebie.

ramy plugin klienta

Proponuję recenzję rozwiązanie za Jenkins/Hudson. Powiedziałbym, że system wtyczek Jenkins jest dość dojrzały i niezawodny. Może być użyty jako dobry przykład.

enter image description here

Proszę sprawdzić również Hudson Plugin Architecture

proste rozwiązanie

Dla mojego projektu mam budować wtyczki warstwę abstrakcji opartej na JSPF z niestandardowych zależności rezolwerem.

Plusy:

  • prosty i mały
  • czysty pojęcie
  • działa dobrze

Minusy:

  • bez właściwego zarządzania wtyczki może być powolna (pełne wyszukiwanie classpath)
  • zapewnia bardzo podstawową funkcjonalność
  • mogą wymagać dodatkowej uwagi

Proponuję użyć JSPF tylko wtedy, gdy naprawdę potrzebują prostoty i chce kontrolować wszystko. JPF zapewnia wiele interesujących funkcji po wyjęciu z pudełka, na przykład:

Wtyczki mogą być „hot-zarejestrowany”, a nawet wyrejestrowana podczas wykonywania aplikacji. Co więcej, zarejestrowane wtyczki mogą być aktywowane i dezaktywowane "w locie", minimalizując użycie zasobów runtime .

Problem polega na tym, że JPF nie działa.

Sugestia

Czy spędzić trochę czasu z Apache Felix. Jest wystarczająco dojrzały, więc twoje inwestycje czasowe mogą sporo spłacić.

6

Sprawdź odpowiedzi na to pytanie: Best way to build a Plugin system with Java

Jeśli nie ufasz kod wtyczki, można zaimplementować na piaskownice, jak opisano tutaj: Sandbox against malicious code in a Java application

open-source Java Plug-in Framework podpór projektu dezaktywacja wtyczki, możesz czerpać z niej inspirację, nawet jeśli jest zbyt ciężka dla twoich celów.

+0

Jak zastosować to do części internetowych? Czy zrobiłbyś wszystkie wtyczki jako .war? –

+0

Cóż, jeśli te wtyczki mogą być niezależnymi aplikacjami, to nie musisz nic robić, na przykład webapp menedżera Tomcat umożliwia uruchamianie/zatrzymywanie/ponowne ładowanie aplikacji internetowych bez konieczności wyłączania i restartowania serwera: http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html – lbalazscs

+0

Wtyczki nie powinny być niezależnymi aplikacjami internetowymi.W ten sposób będzie dużo pracy, jak je zintegrować (cross links, bezpieczeństwo, simgle sign-on itp.). –

2

Atlassian open sourced ich system wtyczek here. Widzę, że zespół Atlassian intensywnie pracuje. Warto poznać jego documentation