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,

È stato utile?

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,

  1. Quando si distribuisce la guerra, il frammento di contesto (META-INF / context.xml) viene copiato in conf / Catalina / [host].
  2. Quando si modifica il frammento, rileva correttamente il cambiamento così ridistribuzione viene attivato.
  3. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top