Instaler mojej aplikacji ze strony web.

0

Napisałem aplikację, którą umieszczam na serwerze. Mam jednak problem, bo muszę zrobić installer tej aplikacji. Coś jak np. mamy Joomlę i przy pierwszym uruchomieniu podajemy namiary na bazę danych.

Obecnie korzystam z JPA i dane do połączenia są w pliku persistence.xml. Żeby pracować na bazie najpierw trzeba tam stworzyć np. Tabele. Mogę to naokoło robić i mieć gotowe zapytania do opalenia (chyba, że samo JPA nie z poziomu IDE tak potrafi). Ale jak potem aplikacja ma z JPA korzystać, jak w pliku persistence jeszcze przed exportem do WARa podaję dane.

0
  1. Jaki vendor? Hibernate ma <prop key="hibernate.hbm2ddl.auto">create</prop> które utworzy bazę przy starcie.
  2. Musiałbyś zrobić pierwszy start aplikacji bez uruchamiania JPA oczywiście, potem wczytać od użytkownika konfiguracje, uzupełnić dane i voila. Zresztą war i tak będzie automatycznie rozpakowany po starcie aplikacji więc to nie aż taki problem zmienic wartości w pliku.
0

Pomocna będzie implementacja interfejsu ServletContextListener (https://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html). Implementujemy metodę contextInitialized tak by do ServletContext dodała serwlet instalacyjny (bez wstawania JPA itp) pod warunkiem, że nie istnieje jakiś tam plik. Nastepnie przekierowujesz cały ruch na ten serwlet i dokonujesz instalacji. Po zakończeniu instalacji już dynamicznie dodajemy kolejne filtry i servlety oraz usuwamy z kontekstu serwlet instalacyjny.

0

@Shalom Używam EclipseLinka, nie Hibernate.
Jak się nie włącza JPA? Wystarczy tylko w kodzie go nie używać przez ten czas?
Ręczna zmiana persistence.xml z kodu jeśli jest możliwa, to dosyć proste rozwiązanie.

@Koziołek Dzięki za wskazanie drogi, chociaż jeszcze nie wiem jak to rozwiązanie miałbym napisać.
Rozumiem, że sprawdzamy jakoś trzeba odpalić instalator, ale kompletnie nie wiem jak się z tym kontekstem obchodzić jeszcze. No cóż może rozwiązanie Shaloma dla mnie prostsze będzie.

0

Ale kombinujemy... jak konie łyse pod górę. Czy udostępniasz spakowanego wara czy całą aplikację z serwerem?

Jeżeli tylko wara to niech aplikacja ma skonfigurowane źródło danych po JNDI i w instrukcji instalacyjnej niech będzie wymuszone na użyszkodniku, że najpierw ma skonfigurować taki zasób w serwerze. To już można wyklikać z panelu admina serwera...

1 użytkowników online, w tym zalogowanych: 0, gości: 1