6

私はEclipseで主に空の動的Webプロジェクトを作成しました。

それは持っています

  • サーブレットなし
  • jspファイルはありません

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>

context.xmlそして私はそのMETA-INFフォルダにを追加しました

<?xml version="1.0" encoding="UTF-8"?>
<Context>
        <Parameter name="companyName" value="My Company, Incorporated"  override="false"/>
</Context>

このプロジェクトをWARファイルとしてエクスポートしました。次の構造で:

user@system:$ tree
.
|-- META-INF
|   |-- MANIFEST.MF
|   `-- context.xml
`-- WEB-INF
    |-- classes
    |-- lib
    `-- web.xml

4 directories, 3 files

プロジェクトをローカルのTomcat(Apache Tomcat / 6.0.20)にデプロイすると、すべてが期待どおりに機能します。つまり、context.xmlは/ conf / Catalina / localhostにコピーされ、名前がtestprojekt.xmlに変更されます。

testprojekt.xmlを次のように編集すると:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Parameter name="companyName" value="My BLAH Company, Incorporated"  override="false"/>
</Context>

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

何故ですか?それは期待される結果ですか?のパラメータを変更する正しい方法は何context.xmlですか?

前もって感謝します。よろしく、

4

2 に答える 2

2

これはTomcatのバグだと思います。バグレポートを提出しましたが、設計どおりに機能するとのことです。Tomcatには、ディレクトリ、WAR、コンテキストフラグメントの3つの展開モードがあります。あなたの場合、リロード時に混乱します。

エラーにつながるシーケンスは次のとおりです。

  1. WARをデプロイすると、コンテキストフラグメント(META-INF / context.xml)がconf / Catalina/[host]ディレクトリにコピーされます。
  2. フラグメントを変更すると、変更が正しく検出されるため、再デプロイがトリガーされます。
  3. ただし、これがWARデプロイメントであることを忘れて、ディレクトリデプロイメントとして扱います。ディレクトリはundelpoyによって削除されるため、エラーが発生します。

META-INFのXMLのみを変更する場合は、すべてが機能するはずです。

于 2009-11-02T16:25:08.867 に答える
0

あなたの質問は少しあいまいですが、試してみます。

編集したtextprojekt.xmlを削除し、プロジェクトのcontext.xmlに同じ変更を加えて、tomcatを再起動します。

2つのxmlファイル間の競合が原因である可能性があります。tomcatによって作成されたxmlファイルを変更しても、webappのcontext.xmlファイルは変更されません。少なくとも、開発作業に使用するtomcat6.0.18では変更されません。

お役に立てば幸いです。

于 2009-11-02T13:23:06.560 に答える