Tomcat, Exceptions beim redeploy

Status
Nicht offen für weitere Antworten.

akkie

Mitglied
Hi,

wenn ich meine Webanwendung über den Tomcat-Manager deploye bekomme ich ständig Exceptions dieser Art.

Java:
Exception in thread "ActiveMQ Session Task" java.lang.NoClassDefFoundError: net/project/chat/model/MessageService
        at net.project.chat.messaging.JMSTopicListener.onMessage(JMSTopicListener.java:55)
        at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1088)
        at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127)
        at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
14:07:59,424 INFO  [WebappClassLoader] Illegal access: this web application instance has been stopped already.  Could not load net.project.chat.model.MessageService.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
        at org.apache.catalina.loader.WebappClassLoader.loadClass(Unknown Source)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        at net.project.chat.messaging.JMSTopicListener.onMessage(JMSTopicListener.java:55)
        at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1088)
        at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127)
        at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)

oder

Java:
12:53:01,639 ERROR [ActiveMQMessageConsumer] ID:saturn.imaxx21.local-52799-1260185467494-2:0:1:1 Exception while processing message: java.lang.IllegalStateException: Timer already cancelled.
java.lang.IllegalStateException: Timer already cancelled.
	at java.util.Timer.sched(Timer.java:354)
	at java.util.Timer.schedule(Timer.java:170)
	at net.project.chat.ChatSessionMonitor.registerSession(ChatSessionMonitor.java:112)
	at net.project.chat.ChatSessionMonitor.keepSessionAlive(ChatSessionMonitor.java:150)
	at net.project.chat.ChatSessionMonitor.keepSessionAlive(ChatSessionMonitor.java:129)
	at net.project.chat.model.MessageService.handleSessionActiveMessage(MessageService.java:394)
	at net.project.chat.model.MessageService.handleMessage(MessageService.java:127)
	at net.project.chat.messaging.JMSTopicListener.onMessage(JMSTopicListener.java:56)
	at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1088)
	at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127)
	at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197)
	at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
	at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

Die 1. Exception tritt nicht gleich nach dem redeploy auf sondern wenn ich mich wieder mit dem Client verbinde. Die 2. Exception sofort. Wobei dies auch nicht immer geschieht.

Hat jemand eine Idee wie ich das beheben kann?

Mfg Akkie
 

akkie

Mitglied
Hi,

das Problem besteht immer noch.

Zu der 2. Excpetion kann ich sagen das ich mehrere Timer zum Monitoren benutze. Beim undeploy werden diese aber nicht richtig beendet, so das sie beim deploy die Exception werfen. Ich benutze zwar einen ServletContextListener der die Timer beim undeploy canceled. Trotzdem scheinen sie noch weiter zu existieren. Wie kann ich die Timer beim undeploy richtig beenden?

Mfg Akkie
 

FArt

Top Contributor
Wie kann ich die Timer beim undeploy richtig beenden?

Mfg Akkie

Wie beendest du sie denn falsch?

Prinzipiell kann man sagen, dass du ALLE Ressourcen, die dein Webservice verwendet beim Beenden des Servlets auch freigegeben werden müssen. Unschön sind dabei: eigene Threads, Timer, eigene Sockets, statics, Singletons, ...

gemeine Vermutung: solche Probleme treten gerne auf, wenn man eigentlich einen Applicationserver für seine Anforderungen benötigen würde, aber man nur einen Tomcat benutzt und ein wenig versucht zu tricksen ;-)
 

akkie

Mitglied
Unschön sind dabei: eigene Threads, Timer, eigene Sockets, statics, Singletons, ...

Und ich denke da liegt genau mein Problem.

Die Monitor Klasse ist als Singleton implementiert.

Java:
public class ChatClientMonitor
{
	/**
	 * The instance of this class.
	 */
	private static ChatClientMonitor instance;
	
	/**
	 * Contains all registered clients and they corresponding timer tasks.
	 */
	private Hashtable<Integer, TimerTask> clients = new Hashtable<Integer, TimerTask>();
		
	/**
	 * The timer object which shedules the timer tasks for every client.
	 */
	private Timer timer = new Timer();
	
	/**
	 * Return a single instance of this class.
	 * 
	 * @return a single instance of this class
	 * @see [url=http://java.sun.com/developer/technicalArticles/Programming/singletons/]When is a Singleton not a Singleton?[/url]
	 */
	public static synchronized ChatClientMonitor getInstance()
	{
		if (instance == null) {
			instance = new ChatClientMonitor();
		}
		
		return instance;
	}
	
	/**
	 * Unregister all clients and unset the singelton instance.
	 */
	public static synchronized void finalizeInstance()
	{
		if (instance == null) {
			return;
		}
		
		instance.unregisterAll();
		instance = null;
	}
	
	/**
	 * Unregister all clients.
	 */
	public void unregisterAll()
	{
		Enumeration<Integer> keys = this.clients.keys();
		while (keys.hasMoreElements()) {
			int id = keys.nextElement();
			this.unregisterClient(id);
		}
		this.clients = new Hashtable<Integer, TimerTask>();
		this.timer.cancel();
	}
}

In meinem ContextListener rufe ich die Methode ChatClientMonitor.finalizeInstance() dann auf. Normalerweise sollte das doch ausreichen!?

gemeine Vermutung: solche Probleme treten gerne auf, wenn man eigentlich einen Applicationserver für seine Anforderungen benötigen würde, aber man nur einen Tomcat benutzt und ein wenig versucht zu tricksen
Inwieweit wäre denn das Vorgehen bei einem Applicationserver anders?

Mfg Akkie
 

FArt

Top Contributor
Es sieht also so aus, als ob der Timer noch existiert (cancel wurde schon ausgeführt, also vermutlich der "alte" Timer) während schon neue Sessions (auf einem vermeintlich "neuen" Timer) sich nicht registrieren können.

Stelle sicher, dass die Ressourcen des alten Services auch ALLE weg sind. Wenn du den zeitlichen Ablauf nicht ganz verstehst, dann baue sinnvolles Logging ein und vieles wird klarer.

Ein Webserver ist prinzipiell dazu da Requests von außen zu beantworten. Über die Session hält er evtl. noch ein wenig Status, aber asynchrone Verarbeitung ist oft möglich, aber man muss eben wissen was man wann tut und sicherstellen, dass man die (z.B. Servlet-Spec) kennt und auch berücksichtigt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Tomcat - Bei allen Exceptions einheitliche Seite anzeigen ? Allgemeines EE 3
S Tomcat Application Path bestimmen Allgemeines EE 0
TheWhiteShadow JSF plugins für tomcat webapp Allgemeines EE 0
X Tomcat checkParachute Allgemeines EE 3
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
J Global JNDI Tomcat Allgemeines EE 0
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
C WebSocket in Tomcat wirft 404 Allgemeines EE 0
S Eclipse mit Tomcat und Jersey Allgemeines EE 7
S Fehlersuche in Eclipse/Tomcat -> Error-log?? Allgemeines EE 2
S Tomcat und 404 -> von jetzt auf gleich Allgemeines EE 4
L JNDI auf Tomcat mit EE Allgemeines EE 4
E Servlet Tomcat Method Signature Resolution Allgemeines EE 7
J Logging und Monitoring unter Tomcat Allgemeines EE 2
aze Tomcat:Error Pages werden nicht angezeigt Allgemeines EE 4
D JSF JSF 2.0 + ICEFaces + Tomcat 7 Allgemeines EE 3
R Sessionmanagement und Tomcat Allgemeines EE 6
W Tomcat Support mit SLA? Allgemeines EE 3
P Tomcat lädt falsche Datei obwohl richtig angegeben Allgemeines EE 11
N Tomcat funktioniert nach shutdown/startup nicht mehr korrekt Allgemeines EE 9
B Tomcat, JNDI und datasource - Konfiguartion Allgemeines EE 2
JimPanse Tomcat Fehler nach redeploy Allgemeines EE 5
A Java Tomcat findet Website nicht Allgemeines EE 8
S Anfängerfrage Eclipse/Tomcat Allgemeines EE 4
H Installer für Tomcat-Anwendung Allgemeines EE 5
A Tomcat in Eclipse Allgemeines EE 11
T Tomcat: Sessions bleiben zu lange erhalten Allgemeines EE 13
C Tomcat Zugriff auf lokale Dateien Allgemeines EE 2
P Hilfe: Tomcat periodischer Absturz Allgemeines EE 5
MQue Tomcat reload Allgemeines EE 4
neurox Tomcat stoppen Allgemeines EE 1
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
MQue Tomcat PermGen Allgemeines EE 7
MQue Tomcat Methodenaufruf Allgemeines EE 3
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
MQue TCP- Verbindung nach Tomcat- Start (global) starten Allgemeines EE 4
reibi Tomcat Proxy eintragen Allgemeines EE 2
P CXF Project auf Tomcat laufen lassen - wie? Allgemeines EE 35
R (TOMCAT] Installation Tomcat auf WinXP Allgemeines EE 8
S Tomcat + Eclipse Allgemeines EE 6
T Security Manager in Tomcat Allgemeines EE 2
S Unterschiedliche Pfade bei Tomcat Allgemeines EE 4
ps EJB3 in Tomcat. das hat selbst mich erstaunt Allgemeines EE 18
B Tomcat Manager - .war Datei hochladen. Einfache Frage Allgemeines EE 5
G Probleme im Tomcat - loading WebappClassLoader Allgemeines EE 3
O ApplicationServer vs. Tomcat Allgemeines EE 5
G Verbindung zu Tomcat Allgemeines EE 15
B Tomcat -> Funktions User Credentials hinterlegen Allgemeines EE 7
B fmt:setBundle => Wo liegt die Properties-Datei im Tomcat? Allgemeines EE 3
U Tomcat Compilierproblem Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
M Gelegentlicher Absturz Tomcat Anwendung: PermGen Space Allgemeines EE 6
R Error ServletContextListener auf Tomcat 6 Allgemeines EE 2
Y myFaces 1.2 und Tomcat 5.x / 6.0 Allgemeines EE 9
S tomcat session timeout - und was danach? Allgemeines EE 1
A Tomcat startet nicht, Einstellungsfehler? Allgemeines EE 3
S Auf Datei ausserhalb des Tomcat zugreifen Allgemeines EE 4
S JSP / Tomcat / Eclipse / Unable to compile class for JSP Allgemeines EE 4
E JBoss mit existierendem Tomcat nutzen? Allgemeines EE 4
M JSP: Tomcat: Serverfehler 500 nur beim IE. Allgemeines EE 2
G JSF 1.2 unter Netbeans 6 mit Tomcat 6.0 ->Navigationsprob Allgemeines EE 6
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
L Tomcat Service mit JPDA debugging starten Allgemeines EE 2
J Tomcat: "Unable to get connection, DataSource invalid&q Allgemeines EE 8
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
F Tomcat: zentraler Class-Ordner? Allgemeines EE 2
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
N Zugriff auf Webapp nur für localhost definieren (Tomcat) Allgemeines EE 2
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
H Tomcat, MySQL Allgemeines EE 4
B tomcat verbergen Allgemeines EE 3
M classNotFoundexception vom tomcat Allgemeines EE 10
B Liferay + Tomcat Allgemeines EE 4
K tomcat: session-unabhängiges speichern Allgemeines EE 3
G Tomcat übersetzt nichts mehr Allgemeines EE 6
M tomcat beim booten mit starten Allgemeines EE 4
F Serverdienst in Tomcat implementieren Allgemeines EE 14
J Tomcat mit eigener Session-Implementierung Allgemeines EE 15
V tomcat 6 webserver oder was ist sein Sinn? Allgemeines EE 3
G eigener Tomcat-Connector f. propiet. Protokoll via TCP/IP Allgemeines EE 2
J wsdl-tomcat-AXIS Allgemeines EE 2
G Tomcat unter Eclipse starten Allgemeines EE 9
F Tomcat mit 128 MB Ram Allgemeines EE 9
C Unable to query Tomcat Manager: couldn't connect to host Allgemeines EE 2
A Cronjob mit Tomcat starten ? Allgemeines EE 4
B Connection Poll ohne TomCat Allgemeines EE 5
N Tomcat GWT-Anwendung - An beliebiger Stelle schreiben Allgemeines EE 2
E Tomcat Einstellungen Allgemeines EE 10
B Servlet-Api.jar auf JBoss? (Migration von Tomcat zu JBoss) Allgemeines EE 4
H Eine kurze Verständnisfrage zum Tomcat Allgemeines EE 2
S Hibernate, Tomcat und Eclipse treiben mich zum Wahnsinn. Allgemeines EE 2
F webanwendung läuft nicht auf Tomcat Allgemeines EE 2
M Tomcat, Hibernate, MySQL und die EOFException Allgemeines EE 7
Y Tomcat Thread-Handling Allgemeines EE 2
K Tomcat als Client nutzen Allgemeines EE 2
L Tomcat auf Windows Server 2003 Allgemeines EE 10
T Sysdeo Eclipse Tomcat Plug-in Allgemeines EE 4
H Tomcat in jbuilder mit startup.bat starten Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben