Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Webanwendung auf Tomcat deployen: Pfadproblem (https://www.delphipraxis.net/74122-webanwendung-auf-tomcat-deployen-pfadproblem.html)

barnti 28. Jul 2006 11:27


Webanwendung auf Tomcat deployen: Pfadproblem
 
Hallo liebe Gemeinde,

ich habe eine Webanwendung in Java geschrieben. Ich benutze die Eclipse-IDE mit zugehörigem Tomcat-Plugin. Außerdem arbeite ich mit Hibernate, um meine Objekte zu persistieren. Dazu verwende ich folgenden Code:

Code:
package de.aol.wfm.hibernate.hibernateUtil;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class ESDBFactory {
   
   private static SessionFactory sf;
   private static Session session = null;
   
   
   private static String pathToCfgFile = "de\\"
               + "wfm\\hibernate\\hibernateUtil\\esdb.cfg.xml";
   
   public static synchronized Session getSession() throws HibernateException {
      if (session==null) {
         if (sf==null) {
            sf = new Configuration()
               .configure(pathToCfgFile).
               buildSessionFactory();
         }
         
      }
      session = sf.openSession();
      return session;
   }
}
Das funktioniert auch gut solange ich mich über die IDE direkt mit Tomcat über das Plugin verbinde. Packe ich aber nun meine Anwendung in ein War-File und deploye dieses auf einen anderen Tomcat-Server, so erhalte ich die folgende Fehlermeldung:
Code:
2006-07-28 10:06:10 StandardWrapperValve[Urlaubsplanung Servlet]: Servlet.service() for servlet Urlaubsplanung Servlet threw exception
javax.faces.FacesException: #{User.doLogin}: javax.faces.el.EvaluationException: org.hibernate.HibernateException: de\wfm\hibernate\hibernateUtil\esdb.cfg.xml not found
Kann mir jemand sagen, wie ich das geradegebogen bekomme, so dass die Anwendung auf beiden Maschinen läuft? Was mache ich falsch?

Der_Unwissende 28. Jul 2006 12:29

Re: Webanwendung auf Tomcat deployen: Pfadproblem
 
Hi,
na ja, eigentlich geht doch aus der Exception hervor, dass du offensichtlich ein File nicht korrekt ablegst. Der möchte gerne die Datei de\wfm\hibernate\hibernateUtil\esdb.cfg.xml. Wo liegt denn die esdb.cfg.xml im Moment? Also auf dem Tomcat, auf dem du es probieren möchtest. Kann es sein, dass du die einfach nicht mit in die .war packst?

Gruß Der Unwissende

Chewie 28. Jul 2006 12:33

Re: Webanwendung auf Tomcat deployen: Pfadproblem
 
Wenn Tomcat so konfiguriert ist, dass Anwendungen vor dem start entpackt werden, sollte es so auch so gehen.
Wenn Anwendungen dagegen direkt aus dem Archiv raus gestartet werden, musst den den Weg gehen, die Dateien direkt als Resourcen aus dem Classpath zu laden.

Wie das gemacht wird, findetst du z.B. hier.

barnti 28. Jul 2006 12:36

Re: Webanwendung auf Tomcat deployen: Pfadproblem
 
Hi Der_Unwissende,

Zitat:

Zitat von Der_Unwissende
Hi,
na ja, eigentlich geht doch aus der Exception hervor, dass du offensichtlich ein File nicht korrekt ablegst. Der möchte gerne die Datei de\wfm\hibernate\hibernateUtil\esdb.cfg.xml. Wo liegt denn die esdb.cfg.xml im Moment? Also auf dem Tomcat, auf dem du es probieren möchtest. Kann es sein, dass du die einfach nicht mit in die .war packst?

Gruß Der Unwissende

Ein War-File ist dadurch gekennzeichnet, dass es die entwickelte Anwendung in einem Webarchiv beinhaltet. Ich mache also nichts anderes als die Anwendung in der Eclipe-IDE zu packen und auf den Server zu laden. Die Verzeichnisstruktur bleibt dabei vollständig erhalten. Auch das bemängelte File befindet sich an der vorgesehenen Stelle im Archiv. Der Punkt ist: Warum geht es in der IDE und als War-File nicht. Das Projekt ist identisch. Ideen?

barnti 28. Jul 2006 12:40

Re: Webanwendung auf Tomcat deployen: Pfadproblem
 
Hi Chewie,
Zitat:

Zitat von Chewie
Wenn Tomcat so konfiguriert ist, dass Anwendungen vor dem start entpackt werden, sollte es so auch so gehen.
hier.

Das heißt, im Anwendungsmanager weiterhin War-File hochladen und installieren. Aber vorher die Einstellungen dementsprechend anpassen? Hast Du dazu eine Quelle, wo ich das mal nachlesen kann? Ich habe mich bei Apache umgesehen finde den betreffenden Punkt aber nicht...

Chewie 28. Jul 2006 12:45

Re: Webanwendung auf Tomcat deployen: Pfadproblem
 
Um zu verifizieren, ob die Dateien entpackt werden, kannst du ja einfach in deinem Webapps-Ordner nachkucken, ob es da einen Ordner gibt mit dem gleichen Namen und Inhalt wie das WAR.

Die Option dazu steht in der globalen server.xml im Host-Element:

XML-Code:
<Host name="localhost" debug="0" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
Hier das Attribut unpackWARs.

Es bietet sich aber generell an, bei Dateien im Classpath immer die Resourcen-Methoden zu benutzen, da du dann unabhängig davon bist, ob alle deine Dateien in einem JAR/WAR liegen oder in Ordnern. Die JVM kümmert sich dann um diesen Unterschied.

barnti 28. Jul 2006 14:11

Re: Webanwendung auf Tomcat deployen: Pfadproblem
 
Hallo Chewie,

klappt ganz wunderbar. Alle weiteren Aktionen und Verbesserungen werde ich als nächstes angehen...
Ich danke Dir vielmals. Wie immer warst Du eine große Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz