2012-03-26 5 views
1

Ich verwende einen GlassFish 3.1.2 Server und meine Webanwendung verwendet EclipseLink 3.1.2 als JPA-Provider. GlassFish läuft lokal, der MySQL-Server ist remote.Diagnose einer EclipseLink Verbindungsverzögerung?

Das Problem ist, dass, wenn ich meinen Server starte der Server für eine lange Zeit hängt, mit der folgenden Zeile als das letzte, was im Protokoll.

[#|2012-03-26T14:37:31.765-0700|INFO|glassfish3.1.2|org.eclipse.persistence.session.file:/Users/alan/NetBeansProjects/MyApp/target/MyApp/WEB-INF/classes/_com.myapp|_ThreadID=10;_ThreadName=Thread-3;|EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461|#] 

Nachdem Sie hier 2-3 Minuten gewartet haben, wird es normalerweise weitergehen und dann handeln, wie alles normal ist. Meine Web-App arbeitet mit der Datenbank so, wie ich es erwarten würde.

Wenn NetBeans versucht, den Server zu starten, wird meistens eine Zeitüberschreitung auftreten, da der Start fehlgeschlagen ist. Wenn ich die Domäne mit dem Befehl asadmin starte, dauert es genauso lange, aber es ist erfolgreich.

Ich habe ein identisches System zu Hause, das mit dem gleichen MySQL-Server verbindet, der dies nicht tut.

Also wie sage ich EclipseLink, um mir mehr darüber zu erzählen, worauf es wartet?

UPDATE:

Hier ist meine persistence.xml Datei - nichts Bemerkenswertes. Gibt es EclipseLink-spezifische Befehle, die verwendet werden könnten, um zu helfen?

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
<persistence-unit name="com.myapp" transaction-type="JTA"> 
    <jta-data-source>jdbc/MyApp</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
</persistence-unit> 

+0

Die letzte geloggte Zeile _vor_ der Verzögerung muss nicht der Grund sein. Vielleicht ist der Protokolleintrag nach der Verzögerung die Ursache. –

Antwort

1

Wenn Sie töten oder ctrl Pause auf Windows, Java sollten die aktuellen Themen Dumps, so können Sie sehen, was es wartet auf. Oder pausieren Sie den Thread in einem Debugger.

Fügen Sie Ihre persistence.xml ein. Überprüfen Sie die Größe Ihres Verbindungspools und ob Ihr Netzwerk ordnungsgemäß auf Ihre Datenbank zugreifen kann. Wie viele Klassen befinden sich in Ihrer JAR-Datei? Haben Sie versucht, das Weben zu deaktivieren oder die Klassen aufzulisten?

+0

Kommentar hinzugefügt. Ich benutze kein Windows, aber MacOS erlaubt mir, ein Signal zu senden, um zu sehen, ob ich den Thread Dump bekommen kann. Danke für den Vorschlag. – AlanObject