# Magnolia CMS - jedes mal Tomcat restart



## gladiator09 (28. Dez 2012)

hi leute,

ich entwickle im magnolia cms und jedes mal wenn ich in der ein model-klasse (java) was ändere, muss ich magnolia restarten (tomcat), damit die änderungen übernommen werden.

kennt das CMS wer und kann mir sagen ob man das so einrichten kann, dass ich nicht jedes mal neu starten muss?

nach jeder änderung muss ich 30 sekunden warten :/

danke & lg,
alex


----------



## sence (28. Dez 2012)

du kannst im Context des Tomcat Servers das Attribut "reloadable" auf true setzten.
Dann überwacht Catalina die Classes Ordner auf Änderungen und Lädt die Applikation neu.

Jedoch ist dies nicht im Produktionsumgebungen zu empfehlen.


```
reloadable
Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development, but it requires significant runtime overhead and is not recommended for use on deployed production applications. That's why the default setting for this attribute is false. You can use the Manager web application, however, to trigger reloads of deployed applications on demand.
```

Wenn eine Klasse durch den Classloader geladen ist, kann er diese nicht "entladen -> unload"
deshalb ist ein komplettes neuladen der Klassen notwendig.


Aber villeicht hilft dir das weiter:
Java Reflection: Dynamic Class Loading and Reloading

grüße


----------



## gladiator09 (28. Dez 2012)

doch so einfach, cool 

wills nur lokal einsetzen, produktiv eh keinesfalls!

werd ich nächste woche gleich ausprobieren...

EDIT: habs schon ausprobiert. funktioniert prinzipiell wunderbar... aber er startet laut catalina-log trotzdem irgendwas neu... die zeit hat sich aber auf jeden fall ca. halbiert würd ich sagen... sonst hat ein neustart 30 sek. gedauert, jetzt dauert er ca. 15-20 sek...

ganz los werden kann ich diese "verzögerung" nicht oder?

bin eigentlich hauptsächlich PHP entwickler, daher vllt. ein wenig verwöhnt 

danke & lg,
alex


----------



## sence (28. Dez 2012)

nur wenn du den Thread dir durchliest bezüglich des Classloaders.

im gegensatz zu PHP wird der Sourcecode direkt compilliert und geladen.
Wohingegen PHP (zumindestens früher) beim Request einer Seite den Inhalt parsed und interpretiert.

ganz loswerden, wird beim Tomcat schwer.
Andere Webserver gehen da teilweise andere Wege.
(JBoss, Glassfish usw)

Wenn die Lösungen passend waren, bitte noch das Thema als Erledigt markieren.


----------



## Noctarius (28. Dez 2012)

Alternativ Javeleon oder JRebel


----------



## Nogothrim (30. Dez 2012)

Wenn der Tomcat im Debug-Modus läuft, solltest du zumindest innerhalb von existierenden Methoden Änderungen ohne Server Restart vornehmen können. Hinzufügen von Attributen, Methoden, Klassen erfordert immer ein redeploy / restart.


----------



## sence (30. Dez 2012)

habe es selbst noch nicht getestet, werde es aber mal über die Feiertage ausprobieren:

Zero-downtime Deployment (and Rollback) in Tomcat; a walkthrough and a checklist | Java Code Geeks

Frage stellt sich mir nur wie es sich mit dem ROOT Folder verhält. (ROOT.war)

Grüße und ein guten Rutsch in 2013


----------



## gladiator09 (2. Jan 2013)

OK vielen Dank für die zahlreichen Rückmeldungen. Werd mir das mal alles genauer ansehen 

LG,
Alex


----------

