Aplikacje modułowe w Javie

Aplikacje modułowe w Javie
TK
  • Rejestracja:ponad 13 lat
  • Ostatnio:około miesiąc
  • Postów:342
0

Chciałbym mieć możliwość tworzenia aplikacji modułowych. Dla przykładu: chciałbym stworzyć sobie moduł "faktury" i z tego modułu korzystać w różnych projektach. Moje oczekiwania są następujące:

  1. Poszczególne moduły (w miare możliwości) powinny działać niezależnie od innych modułów.

  2. Poszczególne moduły mogą wykonywać działania cykliczne. Dla przykładu, mogę chcieć napisać moduł "pogoda", który z jednej strony udostępnia API do odczytywania temperatury w regionie a z drugiej będzie sobie co 10 min odświeżał dane o pogodzie (pobieranie informacji z zewnętrznych serwisów).

  3. Powinna istnieć możliwość podmienienia modułu w sposób dynamiczny. To znaczy, jeżeli będę chciał pobierać dane o pogodzie z innego źródła to zmieniam moduł i wszystkie aplikacje, które z tego modułu korzystają powinny zareagować na zmiany.

  4. Mile widziana odporność na zmiany API. Chodzi o to, że na pewnym etapie rozwoju modułu mogę chcieć zerwać ze wsteczną kompatybilnością (lub po prostu rozszerzyć API zachowując wsteczną kompatybilność). Wtedy aplikacje, które nie są kompatybilne z modułem w nowej wersji, powinny korzystać ze starszej wersji aż do momentu, w którym problem kompatybilności zostanie rozwiązany.

  5. Mile widziana możliwość zabezpieczenia modułu, w taki sposób aby było to kompatybilne ze spring security.

Czego mogę użyć? Myślałem nad EJB - niestety nie mam zbyt dużego doświadczenia w tej technologii i nie wiem jak wygląda sprawa z punktem 3, 4 i 5. A może istnieje jakaś dobra alternatywa dla EJB? Słyszałem coś o OSGi, ale nie wiem jak to się sprawuje i czy to dobry pomysł czy może niekoniecznie. Dodam, że całość ma działać na serwerze WildFly.

edytowany 1x, ostatnio: tk
Lectre
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Warszawa
  • Postów:293
0

Web services.

  1. Kompletna niezależność. Osobne aplikacje, nawet różne języki.
  2. To nie ma nic wspólnego z komunikacją między modułami. W module (aplikacji), która jest odpowiedzialna za dostarczanie danych o pogodzie robisz joba, który uruchamia się co te 10 minut i aktualizuje dane.
  3. To jest możliwe, "wymienialne" aplikacje musiałyby wystawiać te same endpointy i być dostępne pod tym samym URL. Chociaż szczerze mówiąc ciekaw jestem po co ci coś takiego :P Jeśli chcesz pobrać pogodę z jednego źródła, to zaktualizuj w aplikacji nowe źródło zamiast całej aplikacji.
  4. Zarządzanie kompatybilnością zależałoby tylko od ciebie. Ty definiujesz metody i strukturę tego co przychodzi/wychodzi.
  5. Trochę nie wiem co oznacza kompatybilność ze spring security. Spring security ma fajne wsparcie dla REST.

No i właśnie do rozważenia czy chcesz używać REST czy SOAP, ale nie znamy wymagań. Jednak REST jest znacznie prostszy w obsłudze ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.