Debugging mit Eclipse/Tomcat5.5

Alien

Mitglied
Hallo zusammen!
ch muss in meiner Firma eine Java-Webapp auf Tomcat 5.5 warten. Nachdem es da ein paar Probleme gibt, würde ich die Applikation gerne in Eclipse debuggen. Dazu ist zu sagen, dass ich weder von Eclipse, Java noch Tomcat besonders viel Ahnung habe. Außedrem läuft dei Produktive Version auf SLES10, mein Debugging-Env. ist Windows XP.

Ich hab es geschafft, den Oracle-JDBC-Treiber zu integrieren. Wenn ich nun aber den Debugger starte, kann die "Resource" nicht geöffnet werden:

21.11.2008 10:25:53 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Tools\eclipse\jre\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\Tools\eclipse\jre\bin\client;C:\Tools\eclipse\jre\bin;C:\Tools\eclipse\jre\bin;C:\EC-Apps\JavaSoft\JRE\1.3.1_13\bin;c:\Oracle\Client\BIN\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\EC-Apps\JavaSoft\JRE\1.4.2_06\bin;c:\EC-Apps\Exceed\9\Accessories\;c:\Program Files\Common Files\GTK\2.0\bin\;C:\Program Files\TortoiseSVN\bin;C:\cygwin\bin;C:\Program Files\Windows Imaging\
21.11.2008 10:25:53 org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
21.11.2008 10:25:53 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 643 ms
21.11.2008 10:25:53 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
21.11.2008 10:25:53 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.27
21.11.2008 10:25:53 org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
21.11.2008 10:25:53 org.apache.catalina.core.StandardContext resourcesStart
SCHWERWIEGEND: Error starting static Resources
java.lang.IllegalArgumentException: Document base C:\Documents and Settings\username\eclipse_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\nassod does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:141)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:3855)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4024)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
21.11.2008 10:25:53 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error in resourceStart()
21.11.2008 10:25:53 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error getConfigured
21.11.2008 10:25:53 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/nassod] startup failed due to previous errors
21.11.2008 10:25:53 org.apache.catalina.core.StandardContext stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/nassod] has not been started
21.11.2008 10:25:54 org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
21.11.2008 10:25:54 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
21.11.2008 10:25:54 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/16 config=null
21.11.2008 10:25:54 org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
21.11.2008 10:25:54 org.apache.catalina.startup.Catalina start
INFO: Server startup in 799 ms

Ich hoffe sehr auf eure Hilfe!
 
Leider hat das auch nicht geholfen :-(
Das Verzeichnis ist nun:
C:\Tools\eclipse_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\nassod


Ich frage mich aber gerade, wie ich meine server.xml für den Tomcat konfigurieren muss. Hab hier nämlich ein fach die vom Produktivsystem drüberkopiert (war jetzt so im nachinein sicher nicht so die Wahnsinnsidee...). Allerdings ist hier nur folgender Part für den Pfad relevant:

HTML:
<Engine
        defaultHost="localhost"
        name="Catalina">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
      <Host
          appBase="webapps"
          name="localhost">
        <Context
            path="/nassod">
          <Resource
            auth="Container"
            name="nassod"
            type="javax.sql.DataSource"
            password="*********"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            maxIdle="2"
            maxWait="5000"
            username="*********"
            url="jdbc:oracle:thin:@hostname.domain:1511:dbname"
            maxActive="4"/>
        </Context>
      </Host>
    </Engine>

Natürlich sind in "password", "username" und "url"richtige, korrekte Daten drinnen ;-)
 
moment, du brauchst gar nichts rumeditieren. Tomcat als Serveradapter in Eclipse installiert, Serverkonfiguration erstellt und dann direkt da reindeployt. Das sollte ohne Probleme gehen.

Gruß
Ollie
 
Naja, ich hab's mir einfach gemacht, um den Oracle-DB-Provider einzubinden...

- EDIT: Ich hab mich jetzt nochmal ein bischen damit ebschäftigt. Die Webapp scheint zu starten, wenn ich die server.xml so lasse wie sie gehört, aber die DB-Connection hinzufüge:

<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
<Context
path="/nassod">
<Resource
auth="Container"
name="nassod"
type="javax.sql.DataSource"
password="*****"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="2"
maxWait="5000"
username="*****"
url="jdbc:eek:racle:thin:mad:hostname.domain:1511:db_name"
maxActive="4"/>
</Context>
</Host>
</Engine>

Allerdings bekomme ich eine NullPointerException:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
 
Zuletzt bearbeitet:
Hi,

wenn ich Deine Problematik richtig verstehe, möchtest Du ein ganz normales Debugging für eine Webapp machen, die nicht remote ist (geht auch, aber in deinem Fall reicht die einfache Variante).

Du sagst statt "new project" einfach "new Server". Wichtig: natürlich musst Du die PlugIns für Tomcat in Eclipse installiert haben (google).

Danach legst Du für den Server ein "Module" an. Klick auf Server,
dann kannst Du den konfigurieren und die Module definieren.

Hier einfachden Webapp Root angeben, z.B. C:/workspace/myProject/webapp
und dem Module einen Pfad geben, unter dem Du es aufrufen kannst "/myProject".

Dann starten (über Eclipse) und aufrufen mit z.B. "localhost:8080/myProject"

Grüße, Tim
 
Wichtig: natürlich musst Du die PlugIns für Tomcat in Eclipse installiert haben (google).

Vorsicht mit solchen Ratschlägen. Da geht schnell ein Unbedarfter her und installiert sich diesen Sysdeo Quatsch, obwohl das Eclipse im WTP Tomcat Support out of the box liefert. Ich bin es langsam Leid, ständig die Fragen nach diesem Plugin mit "es geht auch (und vor allem einfacher) ohne dieses plugin" beantworten zu müssen.

Klartext: Eclipse JavaEE Edition installieren oder das WTP von Hand. Dazu noch die Tomcat Binaries und du hast alles um eine Webapp lokal zu deployen OHNE ein Serverkonfigurationsfile anpassen zu müssen.

Gruß
Ollie
 
Ne, extra Plug-Ins installiere ich nicht. Wie Oliver sagte: WPT unterstützt J2EE ja. Ich hab WPT und Tomcat installiert und es klappt ja alles bis auf die DB-Connection (wenn ich die Server-Config in ruhe lasse). Wenn ich die DB hinzufüge, funkt das leider nicht. Die Configs des produktiven Servers und meiner Debugging-Umgebung in Eclipse sind doch etwas anders aufgebaut, da den produktiven Server jemand konfiguriert hat, der nicht mehr bei uns arbeitet.
Außerdem funktioniert Tim's Vorschlag schon deshalb nicht, weil ich gerne das .war-File das ich auf dem produktiven Server generiert habe, verwenden will.
 
Nein, wenn Du das WAR File verwenden willst natürlich nicht.

Der Sinn des Debuggings wie ich es beschreibe ist der, dass man nicht extra deployen muss, bevor man eine Anwendung testen kann.

Stattdessen kann man in Echtzeit den Code verändern und die Auswirkungen auf
der gewählten Serverplattform testen. Extrem zeitsparend und praktisch, wenn man entwickeln will.

Spätestens wenn man mit Build Tools professionelle Builds generiert ist das
Erstellen von WARS sehr zeitraubend. Stattdessen macht man partielle Builds,
welche immer für die Teile der SW angeworfen werden, die man gerade verändert hat und testet in Echtzeit. Schneller geht es da kaum. (Als Tipp für künftige Leser...)
 
Naja, ich will ja auch nicht erst deployen. Ich möchte das WAR-File in meinen Eclipse-Workspace importieren und dann debuggen. Nun funktioniert das soweit - nur habe ich keine Datenbankanbindung. Ich bin also noch immer nicht wirklich weiter...
 

Neue Beiträge

Zurück