context.xml intesa in Tomcat 6
-
12-09-2019 - |
Domanda
Ho creato un progetto web dinamica principalmente vuoto in Eclipse.
E '
- Non ci sono servlet
- Non ci sono file JSP
Il web.xml è
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>testprojekt</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
e ho aggiunto un context.xml
alla sua cartella META-INF
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Parameter name="companyName" value="My Company, Incorporated" override="false"/>
</Context>
Ho esportato questo progetto come un file WAR. Con la seguente struttura:
user@system:$ tree
.
|-- META-INF
| |-- MANIFEST.MF
| `-- context.xml
`-- WEB-INF
|-- classes
|-- lib
`-- web.xml
4 directories, 3 files
Quando schiero il progetto di un gatto locale (Apache Tomcat / 6.0.20) tutto funziona come previsto. Significato, il context.xml viene copiato / conf / Catalina / localhost e rinominato testprojekt.xml.
Quando posso modificare il testprojekt.xml a:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Parameter name="companyName" value="My BLAH Company, Incorporated" override="false"/>
</Context>
Vedo il seguente output nella catalina.out:
02.11.2009 13:21:35 org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/testprojekt]
02.11.2009 13:21:35 org.apache.catalina.core.StandardContext resourcesStart
SCHWERWIEGEND: Error starting static Resources
java.lang.IllegalArgumentException: Document base /opt/tomcat6/webapps/testprojekt does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4048)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4217)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1274)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:296)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:619)
02.11.2009 13:21:35 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error in resourceStart()
02.11.2009 13:21:35 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error getConfigured
02.11.2009 13:21:35 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/testprojekt] startup failed due to previous errors
02.11.2009 13:21:35 org.apache.catalina.core.StandardContext stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/testprojekt] has not been started
Perché? E 'questo il risultato atteso? Qual è il modo giusto per cambiare i parametri in un context.xml
?
Grazie in anticipo. Saluti,
Soluzione
Credo che questo sia un bug in Tomcat. Ho presentato una segnalazione di bug, ma essi sostengono che funziona come previsto. Tomcat ha 3 modalità di distribuzione: Directory, la guerra e contesto Fragment. Nel tuo caso, si confonde quando ricarico.
Ecco la sequenza portando all'errore,
- Quando si distribuisce la guerra, il frammento di contesto (META-INF / context.xml) viene copiato in conf / Catalina / [host].
- Quando si modifica il frammento, rileva correttamente il cambiamento così ridistribuzione viene attivato.
- Tuttavia, si dimentica questo è una distribuzione WAR e lo tratta come distribuzione Directory. La directory viene rimossa dal undelpoy in modo da ottenere l'errore.
Se si modifica solo l'XML in META-INF, tutto dovrebbe funzionare per voi.
Altri suggerimenti
La tua domanda è un po 'ambigua, ma darò una prova.
Eliminare il textprojekt.xml che si è modificato, apportare quelle stesse modifiche nella context.xml per il progetto, e riavviare Tomcat.
Si può essere causato da un conflitto tra i due file XML. Modificare il file XML creato da Tomcat non nto modificare il file context.xml per la webapp. Almeno non cambia il tomcat6.0.18 che uso per lavoro dev.
Spero che sia utile.