Merkwürdiger Fehler: Applikation hängt einfach, Quartz-bug?

Status
Nicht offen für weitere Antworten.

jollyroger

Bekanntes Mitglied
Hallo zusammen,

ich hab hier einen Fehler, der es locker auf meine persönliche Top 3 Liste der merkwürdigsten Fehler schafft...

Ich versuche mich kurz zu fassen:

- Ich habe eine Servlet-Applikation in der Version 1.0. Diese ist spring-konfiguriert und wird über ant als war-file gepackt.
In dieser Applikation starte ich über das quartz-framework diverse jobs.
- Diese läuft sowohl auf meinem Testsytem als auch auf meinen Produktivsystemen.
- Nun hab ich Version 1.1 fertiggestellt
- Diese läuft nur auf meinem Testsytem jedoch __nicht__ auf meinen Produktivsystemen.
- Der Fehler:

Ja, das ist das Problem. Es gibt keinen Fehler. Die Applikation "hängt" einfach, weder über log4j noch über catalina.out gibt es irgendwelche Fehlermeldungen / exceptions.

Die relevante Codestelle (die "unsinnigen" Logmeldungen wurden nachträglich eingefügt um auf den Produktiv-Systemen nachzuvollziehen wo es hängt):

Mein Servlet wird per Tomcat-Direktive "load-on-startup" gestartet, die init() sieht so aus:


Code:
	public void init(){	    
                ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
		this.jobStarter = (JobStarter) ctx.getBean("JobStarter");
		this.outPrinter = (OutPrinter) ctx.getBean("OutPrinter");
		initLogging();
		startJobs();
	}

Ganz zum Schluß wird startJobs() aufgerufen:

Code:
	private void startJobs() {

		logger.info("vor 'startJobs()' ......");
		jobStarter.startJobs();
		logger.info("nach 'startJobs()'!");
	}

Die startet (Überraschung....:) nun meine Jobs:

Code:
	public void startJobs() {
		
		logger.info("entered startJobs()....");
		SchedulerFactory schedulerFactory = new org.quartz.impl.StdSchedulerFactory();
		logger.info("SchedulerFactory schedulerFactory = new org.quartz.impl.StdSchedulerFactory();");
		Scheduler scheduler = null;
		try {
			scheduler = schedulerFactory.getScheduler();
			logger.info("scheduler = schedulerFactory.getScheduler();");
		} catch (SchedulerException e) {
			logger.info("SchedulerException!");
			logger.fatal(e.getMessage());
			logger.fatal(e);
		}
			
		/*
		 * filemon
		*/
		logger.info("Before: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'");		
		JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);
		logger.info("After: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'");

Eine "normale" log-Ausgabe auf meinem Testsystem sieht nun so aus:

Code:
INFO (Sender.initLogging) 2007-06-27 11:24:24,930
 LOGGING_INITIALIZED
INFO (Sender.initLogging) 2007-06-27 11:24:24,934
 initLogging wird verlassen......
INFO (Sender.startJobs) 2007-06-27 11:24:24,934
 vor 'startJobs()' ......
INFO (JobStarter.startJobs) 2007-06-27 11:24:24,935
 entered startJobs()....
INFO (JobStarter.startJobs) 2007-06-27 11:24:24,953
 SchedulerFactory schedulerFactory = new org.quartz.impl.StdSchedulerFactory();
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,035
 scheduler = schedulerFactory.getScheduler();
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,035
 Before: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,046
 After: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,057
 vor scheduler-aufrufen......
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,059
 INFO_ALL_JOBS_SCHEDULED
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,061
 INFO_ALL_JOBS_STARTED
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,063
 nach scheduler-aufrufen!
INFO (Sender.startJobs) 2007-06-27 11:24:25,064
 nach 'startJobs()'!

Auf meinem Produktivsystem sieht es hingegen so aus:

Code:
INFO (Sender.initLogging) 2007-06-26 14:36:18,001
 LOGGING_INITIALIZED
INFO (Sender.initLogging) 2007-06-26 14:36:18,012
 initLogging wird verlassen......
INFO (Sender.startJobs) 2007-06-26 14:36:18,015
 vor 'startJobs()' ......
INFO (JobStarter.startJobs) 2007-06-26 14:36:18,017
 bin in startJobs!!!
INFO (JobStarter.startJobs) 2007-06-26 14:36:18,111
 SchedulerFactory schedulerFactory = new org.quartz.impl.StdSchedulerFactory();
INFO (JobStarter.startJobs) 2007-06-26 14:36:19,216
 scheduler = schedulerFactory.getScheduler();
INFO (JobStarter.startJobs) 2007-06-27 11:24:25,035
 Before: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'

Wie an den Debug-Ausgaben zu sehen ist, kommt die Applikation bis hierhin

Code:
		logger.info("Before: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'");

Jedoch nicht mehr bis

Code:
 After: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'

Sie hängt also folglich genau an der Zeile:

Code:
 JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);

Wie schon gesagt, keine Fehlermeldungen, nichts.

Nun hab ich mir den sourcecode von JobDetail gezogen (aus dem Quartz-Framework) und mir mal angeschaut was bei diesem Konstruktur-Aufruf passiert:

Code:
    public JobDetail(String name, String group, Class jobClass) {
        setName(name);
        setGroup(group);
        setJobClass(jobClass);
    }

Alle Methoden-Aufrufe sind stinknormale Setter:

Code:
    /**
     * 


     * Set the name of this <code>Job</code>.
     * </p>
     * 
     * @exception IllegalArgumentException
     *              if name is null or empty.
     */
    public void setName(String name) {
        if (name == null || name.trim().length() == 0) {
            throw new IllegalArgumentException("Job name cannot be empty.");
        }

        this.name = name;
    }

    /**
     * 


     * Set the group of this <code>Job</code>.
     * </p>
     * 
     * @param group if <code>null</code>, Scheduler.DEFAULT_GROUP will be used.
     * 
     * @exception IllegalArgumentException
     *              if the group is an empty string.
     */
    public void setGroup(String group) {
        if (group != null && group.trim().length() == 0) {
            throw new IllegalArgumentException(
                    "Group name cannot be empty.");
        }

        if (group == null) {
            group = Scheduler.DEFAULT_GROUP;
        }

        this.group = group;
    }

    /**
     * 


     * Set the instance of <code>Job</code> that will be executed.
     * </p>
     * 
     * @exception IllegalArgumentException
     *              if jobClass is null or the class is not a <code>Job</code>.
     */
    public void setJobClass(Class jobClass) {
        if (jobClass == null) {
            throw new IllegalArgumentException("Job class cannot be null.");
        }

        if (!Job.class.isAssignableFrom(jobClass)) {
            throw new IllegalArgumentException(
                    "Job class must implement the Job interface.");
        }

        this.jobClass = jobClass;
    }

Tja, das sieht doch soweit alles unkritisch aus........

Ich verstehe es nicht, ich habe:

- von V 1.0 zu V1.1 __nichts__ an der Initialisierung geändert, sprich der Code ist identisch geblieben.
- wie kann denn das Ding überhaupt hängen?

Mir ist klar, das mir wahrscheinlich keiner eine direkte Lösung sagen kann, aber für jeden Stupser in die richtige Richtung wäre ich dankbar.........
 
G

Gast

Gast
Mal nen clean, hilft nicht immer aber öfters.
Oft ist es so das irgendwelche Sourcen, weis nicht wie es
bei dir ist, voneinander abhängen. Und deshalb nur der Build
teilweise fehlt. Obwohl dann trotzdem nen Fehler kommen sollte.
Versuch mal nen Rebuild.
 

jollyroger

Bekanntes Mitglied
Ja,

auf beiden laufen identische Versionen von :

- Tomcat 5.5
- Java JRE 1.5
- Quartz 1.6
- das war-file ist das gleiche wie auf dem Testsystem (sogar die applicationContexte sind gleich)

Test-OS: openSuse 10.2
Produktiv-OS: SLES 9
 

jollyroger

Bekanntes Mitglied
Die ganze Sache wird immer mysteriöser:

- ich hab nun mal den Tomcat mit "kill -3" abgeschossen und mir den Stacktrace angeschaut. Was ich merkwürdig finde ist folgender Eintrag:

Code:
"DefaultQuartzScheduler_Worker-3" prio=1 tid=0x6b944848 nid=0x1e05 in Object.wait() [0x6c07f000..0x6c0800a0]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x689550b0> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:523)
        - locked <0x689550b0> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

"DefaultQuartzScheduler_Worker-2" prio=1 tid=0x6b8f5980 nid=0x1e04 in Object.wait() [0x6bd7f000..0x6bd80020]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x68955040> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:523)
        - locked <0x68955040> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

"DefaultQuartzScheduler_Worker-1" prio=1 tid=0x6b8f5c18 nid=0x1e03 in Object.wait() [0x6ba7f000..0x6ba7ffa0]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x68954fd0> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:523)
        - locked <0x68954fd0> (a org.quartz.simpl.SimpleThreadPool$WorkerThread)

Was hat das zu bedeuten?

Desweiteren hab ich auch mal eine Klasse von JobDetail abgeleitet, mit debug-Ausgaben versehen und anstelle von JobDetail verwendet:

Code:
import org.quartz.JobDetail;

public class TmpJobDetail extends JobDetail {
	
    public TmpJobDetail(String name, String group, Class jobClass) {
    	System.out.println("entered jobdetail constructur!");
    	System.out.println("setting name " + name);
        setName(name);
        System.out.println("setting group " + group);
        setGroup(group);
        System.out.println("setting jobClass " + jobClass);
        setJobClass(jobClass);
        System.out.println("leaving jobdetail constructur!");
    }
}

Das Lustige iist nun:

Auch hier komme ich genau bis


Code:
logger.info("Before: 'JobDetail jobDetailFileMonitor = new JobDetail(OutputConstants.JOB_NAME_FILE_MONITOR, null, com.meinarbeitgeber.filetransfer.sft.jobs.JobFileMonitor.class);'");

Tja, nun hab ich wirklich keine Ideen mehr........

Ihr vielleicht?
 

jollyroger

Bekanntes Mitglied
So,

das Problem ist gelöst.

Warum ist mir allerdings völlig schleierhaft.

Ich hab mal aus Verzweiflung nach dem Ausschlußprinzip libraries zu $Tomcat_home/common/lib hinzugefügt und hab dann den Übeltäter entdeckt:

Auf einmal benötigt der Tomcat für meine Applikation die lib [commons-collections].jar?!?!

Nach hinzufügen dieser funktioniert alles!

Das erklärt natürlich einige ganz drängende Fragen nicht:

- Ich hab von V1.0 zu V.1.1 __nichts__ an den libs geändert
- Alle Code-Änderungen erfolgten meilenweit von der Initialisierung entfernt
- an allem was mit quartz auch nur annähernd zu tun hatte wurde auch nichts geändert

Wie zum Geier geht sowas bitte schön?
Wie konnte das dann vorher funktionieren?
Wieso bleibt der Tomcat / Quartz was auch immer dann einfach hängen ohne Fehlermeldungen zu werfen?
Wieso braucht Quartz bei gleichbleibendem jar-file auf einmal common-loggings?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
G Merkwürdiger Fehler NetBeans Allgemeine Java-Themen 2
L Merkwürdiger Fehler beim auslesen einer Datei Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Fehler: <ID> erwartet Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
Pinhg Discord JDA Bot - Fehler Allgemeine Java-Themen 3
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
O Fehler bei Variablen Allgemeine Java-Themen 2
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
C Fehler bei der Benutzung von itextpdf Allgemeine Java-Themen 1
U Fehler beim Compillieren Allgemeine Java-Themen 13
x46 String Format Fehler Allgemeine Java-Themen 2
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Fehler bei IF abfrage Allgemeine Java-Themen 8
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
M Einheitenrechner - Fehler Allgemeine Java-Themen 12
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
T Denk-Fehler? Allgemeine Java-Themen 4
A Finde den Fehler nicht. Allgemeine Java-Themen 7
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
D Unbekannter Fehler Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
L Fehler bei der Ausführung einer Jar Allgemeine Java-Themen 2
T OOP Fehler im Design Allgemeine Java-Themen 9
Thallius Unfassbarer Fehler. Brauche Ideen zum Debuggen Allgemeine Java-Themen 9
U Eclipse MANIFEST fehler Allgemeine Java-Themen 7
I Fehler bei HashMaps Darstellung Allgemeine Java-Themen 10
R Classnotfoundexception Fehler Allgemeine Java-Themen 3
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
N Prim's Algorithm - wo ist der Fehler? Allgemeine Java-Themen 3
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
M Line-Fehler Allgemeine Java-Themen 8
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
V AudioInputStream Fehler Allgemeine Java-Themen 1
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
G Fehler mit Vector Allgemeine Java-Themen 3
F Java Fehler "buildTableModel" Allgemeine Java-Themen 3
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
DanielsLPecke Input/Output Arduino komischer Fehler. Allgemeine Java-Themen 38
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
S Hashtable Fehler Allgemeine Java-Themen 14
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
K Was ist mein Fehler? Allgemeine Java-Themen 2
Tausendsassa Compiler-Fehler Fertiges Programm mit Fehler Allgemeine Java-Themen 10
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Eclipse - Fehler: Hauptklasse de.xyz.init.MeineKlasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
Seikuassi Swing Stehe auf dem Schlauch...(BufferedReader_Writer-Fehler?) Allgemeine Java-Themen 4
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
B Fehler bei einem Programm Allgemeine Java-Themen 10
F HILFEEEEEE JAVA Fehler - Tiny Umbrella Allgemeine Java-Themen 1
N JavaFX IndexOutOfBounds-Fehler Allgemeine Java-Themen 11
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
S Ganzes Programm "stucked" - JVM-Fehler? Allgemeine Java-Themen 2
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
B Eclipse Fehler in eclipse/Java Allgemeine Java-Themen 13
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
J Fehler beim parsens eine Datums Allgemeine Java-Themen 3
A Thread Fehler absichtlich provozieren Allgemeine Java-Themen 3
J Compiler-Fehler .nextLine fehler Allgemeine Java-Themen 3
B Fehler im Java-Code Allgemeine Java-Themen 4
S Java Fehler bei Konsolenprogramm Allgemeine Java-Themen 2
N Was ist ein Fehler (Requirement-Engineering) Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
T Programm bleibt ohne Fehler stehen Allgemeine Java-Themen 4
G Fehler beim instanzieren einer Generischen Klasse Allgemeine Java-Themen 5
K Eclipse Fehler beim Ausführen meines Programms in Eclipse Allgemeine Java-Themen 11
K Input/Output Fehler bei Dateierzeugung Allgemeine Java-Themen 7
M Fehler bei Remoteinstallation von Java Allgemeine Java-Themen 5
M Fehler bei Verwendung von TexturePaint Allgemeine Java-Themen 16
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
G Native Library / Fehler beim Laden der .so/.dll Datei Allgemeine Java-Themen 17
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
iB0T Unverständlicher Fehler Allgemeine Java-Themen 5
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
S Fehler mit JScrollPane Allgemeine Java-Themen 4
K SimpleDateFormat Fehler Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben