문제

Eclipse에서 주로 빈 동적 웹 프로젝트를 만들었습니다.

가지고 있습니다

  • 서블릿이 없습니다
  • 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>

이 프로젝트를 전쟁 파일로 내보냈습니다. 다음 구조로 :

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>

카탈리나에서 다음과 같은 출력이 보입니다.

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?

미리 감사드립니다. 문안 인사,

도움이 되었습니까?

해결책

나는 이것이 Tomcat의 버그라고 생각합니다. 버그 보고서를 제출했지만 설계된대로 작동한다고 주장합니다. Tomcat에는 디렉토리, 전쟁 및 컨텍스트 조각의 3 가지 배포 모드가 있습니다. 귀하의 경우 다시로드 할 때 혼란스러워집니다.

오류로 이어지는 시퀀스는 다음과 같습니다.

  1. 전쟁을 배치하면 컨텍스트 조각 (Meta-Inf/Context.xml)이 conf/catalina/[host] 디렉토리에 복사됩니다.
  2. 조각을 수정하면 변경 사항을 올바르게 감지하므로 재배치가 트리거됩니다.
  3. 그러나 이것이 전쟁 배치라는 것을 잊고 디렉토리 배포로 취급합니다. 디렉토리는 undelpoy에 의해 제거되므로 오류가 발생합니다.

Meta-Inf에서 XML 만 변경하면 모든 것이 효과적입니다.

다른 팁

당신의 질문은 약간 모호하지만 시도해 볼게요.

편집 한 TextProjekt.xml을 삭제하고 프로젝트의 Context.xml에서 동일한 변경 사항을 작성하고 Tomcat을 다시 시작하십시오.

두 XML 파일 사이의 충돌로 인해 발생할 수 있습니다. tomcat에서 생성 한 XML 파일을 변경하면 webApp의 context.xml 파일을 변경합니다. 적어도 Dev Work에 사용하는 Tomcat6.0.18에서는 변경되지 않습니다.

도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top