Muszę wykonać działanie struts2 przy starcie serwera, a nie przy pierwszym żądaniu.Jak uruchomić akcję podczas uruchamiania serwera przy użyciu Struts2?
Odpowiedz
Ładowanie danych po uruchomieniu aplikacji jest częstym zadaniem, znajdziesz kilka przykładów w Internecie. Jak powiedzieliśmy w innych odpowiedziach, powinieneś zaimplementować ServletContextListener (który nie jest specyficzny dla Struts2) ... możesz read a great example here.
Ważną rzeczą jest zrozumienie Action Concept:
W Struts2 MVC
(Model-View-Controller) ram, Action
jest Controller
(i część Model
).
Action
s są wywoływane przez Request
s pochodzących z Client
s (i jedna akcja jest tworzony na każde żądanie, więc są thread-safe).
Oznacza to, że potrzebny jest Klient, który zwykle jest jednym z następujących: oznacza faceta przed komputerem, klikając na przeglądarce ... wtedy połączenie klienta nie jest właściwym wyzwalaczem do wykonania automatycznej operacji po stronie serwera na wspólnych obiektach.
Oczywiście można wdrożyć pewną formę lazy-initialitazion
(np.za pomocą niestandardowego Interceptora), aby pierwszy użytkownik skonfigurował coś w zakresie Zakresu aplikacji, a pozostali użytkownicy mogliby pobrać obiekt już zapełniony, ale nie jest to najlepszy sposób na to (należy obsłużyć współbieżność na początku, a ty masz jednego użytkownika, pierwszego, czekającego na operacje, które serwer mógł wykonać w nocy przy starcie ...).
Napisz ServletContextListener, będzie dostępny tylko jeden na aplikację internetową i otrzyma instatiated po wdrożeniu aplikacji.
Oto post
Obciążenie rozruchu w serwletu i JSP jest obecny jako poniżej
Można poprosić stronę, aby być ładowane przy starcie serwera. Odbywa się to za pomocą pliku web.xml
<servlet>
<servlet-name>login</servlet-name>
<jsp-file>/login.jsp</jsp-file>
<load-on-startup>1</load-on-startup>
</servlet>
plik JSP jest normalnie kompiluje się na pierwszym trafieniu. Teraz kod mówi, że prekompiluj plik jsp, nie czekając na pierwsze trafienie.
For struts2 you can change programatically in web.xml
<listener>
<listener-class>your listener class</listener-class>
</listener>
patrz link, może to być pomocne dla Ciebie
Powinieneś podać wyjaśnienia I linki (I ewentualnie kod) :) Linki same nie są zalecane, ponieważ jeśli zewnętrzna strona jest wyłączona, czytelnicy nie będą w stanie zrozumieć odpowiedzi –
Jeśli chcesz jakiegoś kodu do uruchomienia gdy aplikacji internetowych, aka Servlet Kontekst, zaczyna się po raz pierwszy, to należy wykorzystać haki dostarczane przez technologię. Interfejs API Servlet umożliwia przechwytywanie cyklu życia w celu użycia go do odpalenia kodu na różnych etapach cyklu życia aplikacji internetowej. Ponieważ wszystkie aplikacje Struts 2 są aplikacjami internetowymi Servlet API, możesz sam to wykorzystać.
Interfejs ServletContextListener zapewnia metodę inicjowania init. Po prostu zaimplementuj ten interfejs i zarejestruj swoją implementację w web.xml.
Uwaga, jeśli potrzebujesz więcej Struts 2, możesz rozważyć wykorzystanie czegoś z samego API Struts 2.
Dlaczego chcesz wywołać ACTION na starcie serwera? – DarkHorse
Muszę wstępnie zainicjować niektóre dane przechowywane w zakresie aplikacji, aby żądania ajax dostępu do tych danych szybko odpowiadały od pierwszego żądania od użytkownika. – LNyarla