tomcat autodeploy

ruutaiokwu

Top Contributor
hallo zusammen,

habe heute gerade versucht, in eclipse eine webapp als "normales" java-projekt zu erstellen, wo man danach alles manuell einrichten muss. (app server etc.)

nun klappt es mit dem autodeployment aber nicht... mein projekt hat eine (abgespeckte) tomcat version mit dem namen tomcat als unterordner... dortdrin befuindet sich wiederum ein verz. mit dem namen "webapps".

ich packe keine war's, sondern lasse eclipse direkt ins verz. tomcat/webapps/[deployment]/WEB-INF/classes kompilieren.

da klappt es nicht mit dem hotdeployment.... wenn ich aber ein jar einfüge, während der dienst läuft, stellt das kein problem dar...

UND: wenn ich ein "java web project" in eclipse erstellt, kreiert das im hintergrund auch keine war's, sondern schreibt die komplette struktur in das webapps-verzeichnis...

wesiss jmd., von euch wie das geht?

danke & gruss, jan
 

nocturne

Bekanntes Mitglied
Halt! WAR's nie im Entwicklungsprozess verwenden.


Die Tomcat-Integration in Eclipse ist ganzganzböse! Selfmade ist angesagt!

in der META-INF/context.xml muss folgendes rein:
<Context unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false" reloadable="true">

<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>META-INF/context.xml</WatchedResource>
<WatchedResource>WEB-INF/classes</WatchedResource>
</Context>

Dabei sind wichtig: reloadable und die WatchedResources (letzte WR wird rekursiv gescannt.)

Mit dem FileSync-Plugin unter Eclipse wird das entwickeln zum reinen spaß (WebContent-Ordner auf Webapps/[projektname]/ syncen).
Dann tomcat mit jpda-parameter starten und mit Eclipse auf den Tomcat debuggen. JPDA dem jsp-resourcescanner bekannt geben und die Applikation wird nur noch neu geladen wenn: Eine Struktur einer Java-Methode per jpda geändert wird.
JSP-Änderungen erfordern nur noch ein Browser-"F5".

Wenn ihr in einer Firma arbeitet: Holt euch einen JSP-Productivity-Coach. Der leitet euch an im RapidDevelopment und Tomcat-Tuning.

LG Noc

Braucht ihr ein avi?
 

ruutaiokwu

Top Contributor
hallo nocturne,

danke für deine tipps!

hier wäre die anleitung für mein verfahren, inkl. tomcat abspecken:
(noch nicht ganz fertig und evtl. auch nicht ganz fehlerfrei...)


____________________________________________________________________________________
1. Tomcat 6 unter Apache Tomcat - Welcome! downloaden und das zip-Archiv in ein Verzeichnis namens „tomcat“ entpacken.

2. Nun kann der Tomcat abgespeckt werden; es werden nur folgende Dateien / Unterverzeichnisse in den jeweiligen Verzeichnissen benötigt:

Verzeichnis „bin“:
- bootstrap.jar
- catalina.bat
- setclasspath.bat
- startup.bat
- tomcat-juli.jar


Verzeichnis „conf“:
- context.xml
- tomcat-users.xml
- web.xml
- Die Datei „server.xml“ muss in das Tomcat-Wurzelverzeichnis verschoben werden.


Verzeichnis „conf/Catalina/localhost“:
- manager.xml


Verzeichnis „lib“:
- annotations-api.jar
- catalina.jar
- el-api.jar
- jasper-el.jar
- jasper-jdt.jar
- jsp-api.jar
- servlet-api.jar
- tomcat-coyote.jar
- jasper.jar


Verzeichnis „logs“:
- Das Verzeichnis logs in von Grund auf leer…


Verzeichnis „temp“:
- safeToDelete.tmp


Verzeichnis „webapps“:
- manager (Verzeichnis!)
- ROOT (Verzeichnis!)


Verzeichnis „work“:
- Das Verzeichnis work ist von Grund auf leer…


3. Nun müssen verschiedene Anpassungen in diversen Dateien vorgenommen werden:

Datei „conf/web.xml“:

- Öffnen Sie diese Datei mit einem Texteditor und suchen Sie nach dem Begriff „invoker“. Dann werden Sie einen Abschnitt in dieser Art finden:

****************************************************************************************
<!--
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
-->
****************************************************************************************

Entfernen Sie nun die oberste und die unterste Zeile. Andernfalls die die Anweisung bloss ein Kommentar.


Datei „context.xml“:

- Öffnen Sie diese Datei mit einem Texteditor und suchen Sie nach dem Tag <Context>. Fügen Sie diesem das Attribut privileged=“true“ hinzu, so dass es folgendermassen aussieht:

<Context privileged=“true“>


4. Zusätzlich muss eine Datei hinzugefügt werden:

- Erstellen Sie im Verzeichis conf/Catalina/localhost eine Datei mit dem Namen webapp.xml, wobei diesem einem beliebigen Namen annehmen kann. Der Namen der Datei, ohne Dateierweiterung, bildet bei der Webapplikation den Namen des Context…

Der Inhalt der Datei hat folgendermassen auszusehen:

****************************************************************************************

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:\Development\workspaces\sls_workspace\SLSFromSVN\build"
antiResourceLocking="false" reloadable="true">
<Manager className="org.apache.catalina.session.PersistentManager"
distributable="false" saveOnRestart="false">
<Store className="org.apache.catalina.session.FileStore" />
</Manager>
</Context>

****************************************************************************************

(Der Pfad ist individuell...)

Es ist darauf zu achten, dass das reloadable-Attribut auf true gesetzt ist; andernfalls findet kein Hot-Deployment statt!

____________________________________________________________________________________


wichtiger hinweise:

-tomcat 6.0.0.20 verwenden, keine höhere version. diese das problem beim redeployment, die resourcen zu bereinigen!

-die tomcat-users-datei lösche ich nicht, weil ich die tomcat manager-app auch nicht lösche. (dort sind die account definiert)

-die PersistentManager-angelegenheit hat zur folge, dass der tomcat nicht mehr auf das filesystem serialisiert. war vermeintlich ein problem, hat sich aber nachträglich herausgestellt dass es doch keins war...


grüsse & ein schönes wochenende,
jan
 

ruutaiokwu

Top Contributor
"muss" ist natürlich nicht grundsätzlich gemeint, das gilt nur für meinen fall...

der tomcat muss dann halt anders gestartet werden:

catalina -config [server.xml pfad] start

werde dein verfahren (tönt durchaus interessant!) montags genauer anschauen, wenn ich wieder am arbeiten bin. hatte die letzten tage eine riesensache mit dem tomcat (besonders wegen dem problem mit der resourcenbereinigung...) und momentan voll den overkill davon...! des weiteren habe ich nicht alles zur hand, weil ich nicht mehr bei der arbeit bin...


gruss, jan
 

ruutaiokwu

Top Contributor
hallo,

noch ein paar hinweise:

1. die vom mir beschreibene vorgehensweise unter punkt 4 beschreibt die sog. "virtual deployment"-technik. damit kann auch woanders publiziert werden als unter tomcat/webapps.

das ist optimal, wenn man bei einem eclipse-projekt z.b. einen order "build" hat (die eigentliche webapp, mit dem WEB-INF-verz. und irgendwelchen resourcen...) daneben hat man, auf gleicher verzeichnisebene, einen ordner tomcat. (z.b. in einer nach meinem verfahren abgespeckten version.) in diesem fall hätte jedes eclipse-projekt einen eigenen tomcat. (was meiner meinung sinnvoller ist!!!)

2. so wie es aussieht, kann auf <WatchedResource>dateiname.xyz</WatchedResource> verzichtet werden; vorausgesetzt das InvokerServlet wird in der datei web.xml freigeschaltet. danach MUSS aber das attribut privileged="true" im Context-tag in der datei context.xml (vom tomcat "generell", unter /tomcat/conf) hinzugefügt werden. (sonst gibt's ne exception beim starten...)

(das invoker-servlet muss aber aus sicherheitsgründen bei einem produktiven server UNBEDINGT deaktiviert bleiben!!!)

3. apropos FileSync-plugin (werde ich bei gelegenheit anschauen): das erübrigt sich, wenn man das "Default Output Folder" nach /eclipse_workspace/[Projektname]/build/WEB-INF/classes setzt... dann wird automatisch dorthin kompiliert, was mit den von mir beschreibenen vorbereitungsschritten problemlos zu klappen scheint. wenn ich was im code ändere, ist das kurze zeit später automatisch publiziert.

4. ich erstelle KEIN "Dynamic Web Project", mit diesem doofen WebContent-ordner. sondern ein ganz "normales" java-projekt. wenn ich ein servlet hinzufügen will, erstelle ich einfach eine java-klasse "extends HttpServlet"... anschliessend rechtsklick in den source, einträge "Source" -> "Override/Implement Methods..." und schon kann doGet(...), doPost(...) und co. überschreiben werden.

5. bei jboss, der überigens den servlet-container von tomcat enthält, ist das ganze ziemlich gleich, abgesehen dass sich die files nicht im gleichen pfad befinden. die einstellungen innerhalb der files sind allerdings die gleichen. beim deployen von webapps in nicht-gepackter form ist darauf zu achten, dass das verzeichnis am ende mit .war aufhört. tönt komisch, ist aber so...


grüsse,
jan
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu Servlet Tomcat Versionsproblem? Web Tier 4
I JSF JSF, Tomcat, Server Faces und maven Web Tier 3
feinperligekohlensaeure JSF JSF + Tomcat 9 | HTTP Status 404 |(com.sun.faces.config.ConfigureListener?) Web Tier 1
R Tomcat - java.lang.OutOfMemoryError: PermGen space Web Tier 0
puba mit JDev entwickelter WS auf Tomcat deployen Web Tier 2
R JSF Tomcat 7 & JSF - UnsupportedOperationException Web Tier 1
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
S Tomcat 8.0.9 logging Web Tier 0
S Servlet Tomcat 8.0.9 logging Web Tier 13
D JSP Anfängerfrage - Ändern von JSP / Tomcat Web Tier 4
R Tomcat 7 und SSL Web Tier 3
J JSP Web Applikation auf virtuellem Tomcat Server Web Tier 1
T JSF in Eclipse mit Tomcat Web Tier 0
S JSF Tomcat in Eclipse einbinden (JSF) Web Tier 0
G Magnolia CMS - jedes mal Tomcat restart Web Tier 7
A Wartezeit nach Tomcat start wegen Servlets zu hoch Web Tier 2
M tomcat anwendungsabhängige konfigdateien Web Tier 6
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
C Tomcat wirft keine ViewExpiredException Web Tier 8
C Tomcat + Eclipselink = NotSerializable Exception? Web Tier 2
M JSP Problem beim deployen auf Tomcat Web Tier 2
A Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat Web Tier 5
T Tomcat mit Servlets Problem Web Tier 7
B JSF JSF1.1 @Tomcat 5.5 für ein neues Projekt Web Tier 18
P JSF Umgebungsvariablen bei Tomcat-Start setzen Web Tier 4
D Tomcat/Struts2 Benutzer bestimmt Name der URL Web Tier 2
T Tomcat: Packete dynamisch auslesen und Klassen erzeugen Web Tier 3
S Servlet Problem mit Tomcat Web Tier 3
M Classpath für JPA in Tomcat Webapp: Wie konfigurieren? Web Tier 4
reibi Tomcat : Änderbare Config-Files Web Tier 5
reibi Servlet Tomcat : Display name und version setzen Web Tier 3
JCODA Tomcat ohne Fenster starten Web Tier 5
P Eclipse zeigt Errors an, die auf Tomcat nicht auftreten Web Tier 2
B Tomcat 6 ergibt Fehler - java.net.SocketException Web Tier 2
L Services in Tomcat einbinden? Web Tier 2
B JSF Tomcat Windows Linux equals Problem Web Tier 3
N JSP org.apache.tomcat cannot be resolved to a type InstanceManager cannot be resolved to a type Web Tier 4
S Tomcat 7, Struts, JPA baut keine Verbindung auf Web Tier 13
M Geschwindigkeit von Tomcat / JavaWebanwendungen Web Tier 3
D Probleme mit Tomcat Web Tier 3
M Tomcat 6 Umlaut Probleme Web Tier 2
F No Factories configured for this Application - Myfaces mit Tomcat Web Tier 1
T jsf Tobago in Tomcat classpath aufnehmen Web Tier 2
A Beispiel wirft Fehler. JSF 2.0 / Tomcat / Eclipse Web Tier 2
J Tomcat-Server mit JSF auf Eclipse einrichten Web Tier 7
F umzug von tomcat 4 auf tomcat 6 Web Tier 2
J tomcat webapp restarten Web Tier 2
I Tomcat aktualisiert CSS - Datei nur ab und zu Web Tier 4
T Tomcat-Projektverzeichnis Web Tier 13
E JSF Applikation läuft nicht über Tomcat Web Tier 3
F JApplet in Tomcat-Umgebung funktioniert mal wieder nicht ... Web Tier 8
T Tomcat, JSP, UTF-8 und URL-Codierung Web Tier 4
A Hat Tomcat einen Cache? Web Tier 5
S Tomcat Heap Memory erhoehen..? Web Tier 4
I Rich Faces nur mit JBoss oder auch Tomcat? Web Tier 7
S Tomcat / Eclipse Probleme Web Tier 2
T Tomcat Projekt ohne Eclipse starten Web Tier 11
A Tomcat - JSP läuft nicht Web Tier 2
reibi access.log in Tomcat ... ist das möglich? Web Tier 2
R Fehler 1053 beim Beenden von Tomcat Web Tier 25
A Tomcat - JSP ausführen Web Tier 8
M Tomcat - Mehrere Verzeichnisse für die jsp Web Tier 12
thE_29 Tomcat - Applications(Context) bekommen Web Tier 19
A Tomcat: beim Start des Servers einmalige Aktion aufrufen (Problem gelöst) Web Tier 2
T Hibernate, Debuggingparameter Tomcat Web Tier 3
A JDBC in Tomcat einbinden Web Tier 3
P Tomcat funktioniert nicht so wie er sollte Web Tier 11
C Tomcat total memory Web Tier 11
C Apache-Tomcat Web Tier 13
F ssl, tomcat und jsp anwendungen Web Tier 5
G Tomcat 4.1 Experimente 8) Web Tier 3
S Tomcat JSP context.xml - Standartpfad einstellen Web Tier 3
J Fehler Tomcat/JSP findet Methode nich Web Tier 3
jann Tomcat und Kompression Web Tier 9
Q tomcat konfiguration - rewrite Web Tier 3
A TomCat will nicht - Wieso? Web Tier 5
Q Auth. per Tomcat Web Tier 4
O kurze Frage zur Tomcat Installation Web Tier 2
G Probleme mit Tomcat Web Tier 14
G Tomcat findet angeblich die Datei nicht. Web Tier 8
J Tomcat - web.xml und package . Web Tier 4
L JSP Tomcat Login Web Tier 6
G SCHWERWIEGEND: NullPointerException bei Tomcat Web Tier 4
U Java Application auf Tomcat Web Tier 5
Y JSF - Exception bei Tomcat Start Web Tier 4
O Source-Code vom Tomcat kompilieren lassen Web Tier 6

Ähnliche Java Themen

Neue Themen


Oben