2016-07-26 29 views
0

Ich bin eine einfache Java 7 (Ich habe Maven für Projekt-Setup, Abhängigkeiten, etc) Web-App zu Tomcat 8 und ich habe ein META-INF /context.xml, die ich brauche, um meine Datenbank Ressource angeben:META-INF/context.xml verursacht Probleme in meinem Java Webapp

Projekt/src/main/resources/META-INF/context.xml

<xml version="1.0" encoding="UTF-8"?> 
<Context> 
    <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" 
      maxTotal="100" maxIdle="30" maxWaitMillis="10000" 
      username="root" password="root" driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://127.0.0.1:3306/javatest"/> 
</Context> 

Als ich diesen META-INF/Kontext entfernen .xml-Datei aus dem Projekt, ich kann auf meine jsps zugreifen, aber sie geben natürlich Fehler zurück, da meine Datenquelle fehlt. Wenn ich jedoch META-INF/context.xml zurück in das Projekt einfüge, geben mir alle Ressourcen, auf die ich zugreifen möchte, einen 404. Warum verhält es sich so?

For reference, I am trying how to use a JNDI data source by following this guide. Ich habe alle Schritte in diesem Projekt notwendig

Antwort

0

Gibt es Ausnahmen, wenn der Server gestartet wird?

Wenn der jdbc-Treiber nicht in WEB-INF/lib und nicht in CATALINA_BASE/lib gebündelt ist, kann er die Klasse nicht finden. Dies würde höchstwahrscheinlich zu einem Startfehler führen.

prüfen catalina.out (wenn Sie auf Unix) oder CATALINA_BASE/logs/localhost/catalina.date.log

bearbeiten

gerade bemerkt, dass Sie src/main/resources/META haben INF

Try src/main/Webapp/META-INF /context.xml ...

+0

Nein, es gibt keine Ausnahmen. Ich denke, dass die Datei context.xml in meiner Anwendung mit ihrem Pfad verwechselt wird. Ich habe auch sichergestellt, dass der Connector/J 3.0.11-Stable für Java in $ CATALINA_BASE/lib ist. – mpmp

+0

Das scheint sehr seltsam. Ich benutze app.war/META-INF/context.xml Dateien die ganze Zeit ohne Problem. Machst du das mit nur einer lokal explodierten Anwendung? –

+0

Ich mache im Grunde eine "mvn clean install", um meine Kriegsdatei zu erzeugen. Ich nehme es aus dem Zielverzeichnis und installiere es direkt in $ CATALINA_BASE/webapps. – mpmp

0

sie das META-INF/context.xml nicht entfernen, weil es die Standardkonfiguration ist für das Projekt! Geben Sie auch nicht das Produktions-Passwort in den Standard META-INF/context.xml ein!

Verwenden Sie stattdessen copyXML="true"! Beim ersten Einsatz auf Tomcat wird META-INF/context.xml dauerhaft in tomcat/conf/Catalina kopiert!

Set to true if you want a context XML descriptor embedded inside the application 
(located at /META-INF/context.xml) to be copied to xmlBase when the application is 
deployed. On subsequent starts, the copied context XML descriptor will be used in 
preference to any context XML descriptor embedded inside the application even if the 
descriptor embedded inside the application is more recent. The flag's value defaults to 
false. Note if deployXML is false, this attribute will have no effect. 

Nach der ersten Bereitstellung Update tomcat/conf/Catalina/webappname.xml zu produktiven Datenbankinformationen.

Bei jeder erneuten Implementierung wird weiterhin tomcat/conf/Catalina/webappname.xml verwendet.