Chciałbym skonfigurować eclipse i tomcat w sposób zintegrowany, tak aby zmiany na moich stronach JSP i serwletach (jeśli to możliwe) były natychmiast odzwierciedlane, bez konieczności wdrażania.
Ok, to jedno z tych pytań, na które można znaleźć mnóstwo odpowiedzi w całym internecie, ale wszystkie wydają się inne. (użyj wtyczki Sysdeo, użyj wtyczki JBOss, rób rzeczy z przestarzałym Eclipse, użyj zamiast tego MyEclipse itp.) i nie mogłem znaleźć 1 ostatecznego zasobu, do którego mógłbym się odwołać. Więc na moją korzyść, jaka jest najprostsza i najbardziej zalecana procedura, aby to skonfigurować?
Zakłada się, że mam niezależnie działające zaćmienie i kocur. Właściwie udało mi się je zintegrować w sposób niezwiązany z wdrażaniem na gorąco, korzystając z instrukcji tutaj: http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html
Wersja Eclipse Wersja: 3.4.2 (Ganymede) Tomcat v6.0.20
Odpowiedzi:
Istnieją dwie możliwości.
Po pierwsze, Eclipse pozwala to zrobić, z niewielką zmianą konfiguracji (zobacz także ten szczegółowy post )
Będzie to nadal odzwierciedlać zmiany w kodzie, ale nie spowoduje ponownego uruchomienia serwera.
Po drugie, przez długi czas korzystałem z wtyczki FileSync :
WEB-INF/classes
instalacji tomcat (jest to prawie to samo, co konfigurowanie zestawu wdrożeniowego)U mnie to działa doskonale. Każda zmiana niestrukturalna jest natychmiast odzwierciedlana, bez ponownego wdrażania.
Aktualizacja:
Możesz przeczytać więcej o metodach wdrażania na gorąco tutaj .
Ja też stworzył projekt , który łatwo synchronizuje roboczy z kontenerem serwletów.
źródło
Modules
kartę w konfiguracji serwera, a następnie kliknijedit
, odznaczauto deploy enabled
, myślę, że to najprostszy sposób. PS: Twój pierwszy sposób nie działa dla mnie.Po prostu pozwól eclipse zapisać pliki klas bezpośrednio do katalogu $ TOMCAT / webapps / MyWebApp / WEB_INF / classes. Następnie skonfiguruj apache-tomcat, aby sprawdził, czy pliki klas zostały zaktualizowane i załaduj je ponownie, jeśli tak.
Aby skonfigurować program Tomcat, aby automatycznie przeładowywał klasę po zmianie, musisz to zrobić
edytuj
$TOMCAT/conf/context.xml
i ustaw:<Context reloadable="true">
Być może będziesz musiał edytować i ponownie załadować
webapps/$YourWebApp/web.xml
plik i dołączyć:<web-app reloadable="true">
Nie pamiętam, czy obie zmiany są potrzebne, ale tak skonfigurowałem mój tomcat-6.0.18 do automatycznego ponownego ładowania.
źródło
Context
odradzają umieszczanie elementów w pliku server.xml, ale powinien monitorować / WEB-INF / classes / i / WEB-INF / lib za wszelkie zmiany. Gdzie przeczytałeś o atrybucieweb-app
elementu?Zastrzeżenie : Jestem po prostu szczęśliwym klientem, nie pracuję dla Zero Turnaround i nie jestem z nimi w żaden sposób powiązany.
Sprawdź JRebel - pozwala na kodowanie bez ponownego uruchamiania aplikacji internetowej. Zasadniczo działa poprzez instrumentowanie twoich zajęć i dostosowywanie ich zmian. Obsługuje znacznie więcej przypadków niż wdrożenie na gorąco , w tym:
Jest komercyjny ( szczegóły cenowe , 550 USD rocznie od czerwca 2018 r.) I ma wiele wtyczek do platform innych firm, w tym:
Bezpłatną wersję próbną dostajesz dość bezboleśnie - proponuję spróbować.
źródło
Zmień swój obszar roboczy w Eclipse na \ tomcat \ webapps Ponieważ jest to tylko do twojej pracy, powinno to działać dobrze. Wszelkie zmiany wprowadzone w Eclipse znajdują się w tym samym katalogu, w którym Tomcat szuka aplikacji do wdrożenia
źródło
W widoku serwerów utwórz nowy serwer, nie dodawaj jeszcze żadnego zasobu (projektu) do serwera. Kliknij dwukrotnie serwer w lokalizacji serwerów. Wybierz opcję „Użyj instalacji tomcat”. Zmodyfikuj „Ścieżkę wdrażania” do katalogu wdrażania tomcat (np .: c: \ server \ Tomcat 7.0.14 \ webapps). Rozszerz „sekcję wydawniczą”. Zaznacz „Automatycznie publikuj po zdarzeniu kompilacji”. Zapisz i zamknij. Z menu zaćmienia zaznacz „Projekt -> Buduj automatycznie”. W widoku serwerów kliknij prawym przyciskiem myszy na serwerze, „Dodaj i usuń”, opublikuj swój projekt.
źródło
Dlaczego nie użyć zintegrowanego serwera Tomcat firmy with in eclipse, jeśli jest to tylko do programowania? Możesz skonfigurować serwery w oknie-> preferencje. Po skonfigurowaniu, jeśli masz plik jsp o nazwie page.jsp, możesz kliknąć go prawym przyciskiem myszy i wybrać Uruchom na serwerze. W preferencjach-> ogólne-> przeglądarka internetowa możesz wybrać pogodę, aby korzystać z przeglądarki wbudowanej lub zewnętrznej. Wprowadź zmiany w pliku jsp, zapisz i odśwież stronę w przeglądarce. Zmiany zostaną automatycznie odzwierciedlone po zapisaniu i odświeżeniu przeglądarki.
źródło
To, co działa dla mnie tutaj, to:
context.xml w ten sposób:
<Context path="/myapp" docBase="myapp" debug="5" reloadable="false" antiResourceLocking="false" antiJARLocking="true"> <!-- this because i´m using Spring 3.1 with Tomcat --> <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" /> </Context>
Następnie na zakładce Serwery w Eclipse, na zakładce "Moduły", wyłączyłem "Automatyczne przeładowanie" dla wszystkich wdrażanych modułów.
Pozwól także domyślnej konfiguracji na automatyczne publikowanie.
I używa Mavena z WTP, nie zapomnij zostawić zawartości src / main / resources w, ponieważ Eclipse nalega, aby wykluczyć zawartość tego folderu z ostatecznej kompilacji.
Tylko z tym wszystkim otrzymałem pełne klasy (VM), które można wdrożyć na gorąco, z zasobami na gorąco!
źródło
W swoim środowisku programistycznym po prostu wskaż serwerowi Tomcat, aby szukał stron JSP w dowolnym katalogu, w którym je opracowujesz. Zmiany będą widoczne natychmiast po zapisaniu pliku.
źródło
Udało mi się to uruchomić w moim środowisku programistycznym przy użyciu agenta Spring Loaded JVM. Chociaż tworzę aplikacje internetowe Spring, opis tego projektu wspomina, że tak jest
Korzystając z poniższej konfiguracji, mogłem uzyskać zmiany do automatycznego opublikowania do podłączonej instancji Tomcat (zwykła metoda Eclipse WTP). Używam Spring Tool Suite 3.7.3 opartego na Eclipse Mars.2 (4.5.2).
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
.class
plików JAR oprócz plików projektu , skonfiguruj-Dspringloaded=watchJars=
argument VM zgodnie z komentarzami tego problemu .Uruchom serwer i jak zwykle opublikuj na nim projekty dynamicznych aplikacji internetowych. Ponownie mogłem to przetestować z aplikacjami internetowymi Spring. Na przykład modyfikacja kodu, dodawanie / odejmowanie metod itp. W klasach @Controller zostały zastosowane niemal natychmiast po zapisaniu pliku i kompilacji Eclipse oraz opublikowaniu zmienionej klasy. Na koniec, sekcja FAQ projektu Spring Loaded wspomniała o kilku przypadkach, w których rzeczy nie ładują się ponownie, więc wymagałyby ponownego uruchomienia serwera / aplikacji. Ale te wyjątki są znacznie rzadsze.
Jeszcze jedna uwaga: NIE działa to z wbudowanym serwerem Pivotal tc lub serwerem VMware vFabric tc, które są dostarczane z STS. W przypadku tych serwerów dostępna jest opcja „Włącz ponowne ładowanie oparte na agencie Java (eksperymentalne)”, ale korzysta ona ze starszej wersji 1.2.0 Spring Loaded, która nie działała.
źródło
Spring
, co zNon Spring
aplikacją.Czy jesteś otwarty na używanie Jetty do celów programistycznych?
Jeśli tak, to jest całkiem proste w użyciu z Maven - po prostu uruchom
mvn jetty:run
źródło
To może nie jest najlepszy sposób, ale dla mnie działa.
Używam polecenia rsync, aby zsynchronizować zmiany z mojego projektu jsp do $ contextPath.
Użyj zdalnego debugowania w Eclipse for Tomcat, co pozwoli na ograniczoną wymianę kodu na gorąco. Jeśli zmienisz pola statyczne lub dodasz metody, będziesz musiał wyeksportować jar i ponownie uruchomić kontekst.
źródło
czy możemy skorzystać z poniższej opcji? Kliknij dwukrotnie Serwer w zaćmieniu -> Lokalizacje serwerów -> Użyj instalacji tomcat. Przejmuje kontrolę nad instalacją tomcat. Nie musisz ponownie uruchamiać serwera w celu zmiany klas java.
źródło
Znalazłem najprostszy sposób: użycie dowiązań symbolicznych: myślę, że jest to najszybszy sposób, ponieważ w ogóle nie ma synchronizacji: katalog tomcat i katalog twojego projektu będą przez cały czas w tym samym katalogu.
Tomcat będzie okresowo wykrywać zmiany i ponownie wdrażać aplikację.
Istnieje również sposób na debugowanie aplikacji, więc uważam, że jest to dobre rozwiązanie.
Udokumentowałem tutaj moje rozwiązanie dla wszystkich zainteresowanych.
źródło
Na wypadek, gdybyś się spieszył:
voila! :)
źródło
W Eclipse kliknij projekt w górnym menu i upewnij się, że wybrana jest opcja „Buduj automatycznie”. To rozwiązało mój problem. Używałem Eclipse z Tomcat przy użyciu metadanych mojego obszaru roboczego. Prowadziłem również Mavena w projekcie Dynamic Web Module. Aby zweryfikować, dodaj swoją aplikację do Tomcat. Uruchom Tomcat z poziomu Eclipse. Upewnij się, że aplikacja jest wdrożona i działa. Otwórz kartę Console w Eclipse. Wprowadź zmianę w swojej aplikacji. Po kilku sekundach powinieneś zobaczyć, jak Twoja zmiana zostanie automatycznie utworzona i wdrożona w Tomcat.
źródło
Najprostszy, najszybszy: ustaw Eclipse tak, aby generował plik WAR podczas budowania; jako krok po kompilacji skopiuj ten plik WAR do katalogu webapps tomcat. Tomcat rozpozna zmianę i odświeży witrynę bez konieczności wdrażania. Zauważ, że to nie jest idealne; użytkownicy korzystający z tej aplikacji internetowej mogą mieć mniej niż optymalne wrażenia, ponieważ Tomcat ponownie uruchamia aplikację internetową „pod” nimi; ale to pasuje do twojej prośby.
źródło