Tomcat 클래스 경로에 디렉토리 추가
C:\app_config\java_app
이 폴더에는 로케일 특정 속성 파일이 포함되어 있으므로 C : 드라이브에 폴더가 있습니다.
PrjPropertilesLocator
웹 앱을 시작할 때 기본 로케일을 기반으로 속성 파일을로드 하는 자바 클래스 ( )가 있습니다. 내 웹 애플리케이션이 tomcat 내부에서 실행 중입니다. 문제는 C:\app_config\java_app
tomcat 클래스 경로 에서이 디렉토리 를 어떻게 설정해야 PrjPropertilesLocator
클래스 내의 ResourceBundle에서 사용할 수 있는지 입니다. 이 폴더를 필요로하는 단일 웹 앱에 대해 특별히 설정할 수있는 방법이 있습니까? 속성 파일을 WEB-INF/classes
폴더 안에 넣고 싶지 않습니다 .
weblogic에서 이것은 잘 실행됩니다. 시작 스크립트 중 하나에서 weblogic 클래스 경로 내부에 디렉토리를 설정하면 정상적으로 작동합니다. 그러나 Tomcat에서 나는 그것을 startup.bat
에도 넣을 시도했지만 setclasspath.bat
성공적으로 할 수 없었습니다.
shared.loader
또는의 common.loader
속성을 지정하십시오 /conf/catalina.properties
.
질문 : Tomcat에서 응용 프로그램별로 사용자 정의 클래스 경로를 만들 수 있습니까?
Tomcat 7 컨텍스트 보유 로더 요소. 에 따라 문서의 배치 기술자 (무엇에 <Context>
태그)에 배치 할 수 있습니다 :
$CATALINA_BASE/conf/server.xml
-나쁨-구성을 다시 읽으려면 서버를 다시 시작해야합니다.$CATALINA_BASE/conf/context.xml
-나쁨-모든 애플리케이션에서 공유$CATALINA_BASE/work/$APP.war:/META-INF/context.xml
-나쁨-구성을 변경하려면 재 패키징이 필요합니다.$CATALINA_BASE/work/[enginename]/[hostname]/$APP/META-INF/context.xml
- 좋지만 마지막 옵션을 참조하십시오!$CATALINA_BASE/webapps/$APP/META-INF/context.xml
- 좋지만 마지막 옵션을 참조하십시오!$CATALINA_BASE/conf/[enginename]/[hostname]/$APP.xml
- 최고 -응용 프로그램이 완전히 종료되고 변경 사항이 자동으로 스캔됩니다 !!!
여기에 $CATALINA_BASE
계층 구조 에서 프로젝트 파일의 개발 버전을 사용하는 방법을 보여주는 내 구성이 있습니다 (이 파일을 src/test/resources
dir에 배치 하고 Maven을 ${basedir}
통해 자리 표시자를 사전 처리 pom.xml
<filtering>true</filtering>
하기 위해 새 환경에서 빌드 한 후 복사합니다 $CATALINA_BASE/conf/Catalina/localhost/$APP.xml
).
<Context docBase="${basedir}/src/main/webapp"
reloadable="true">
<!-- http://tomcat.apache.org/tomcat-7.0-doc/config/context.html -->
<Resources className="org.apache.naming.resources.VirtualDirContext"
extraResourcePaths="/WEB-INF/classes=${basedir}/target/classes,/WEB-INF/lib=${basedir}/target/${project.build.finalName}/WEB-INF/lib"/>
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="${basedir}/target/classes;${basedir}/target/${project.build.finalName}/WEB-INF/lib"/>
<JarScanner scanAllDirectories="true"/>
<!-- Use development version of JS/CSS files. -->
<Parameter name="min" value="dev"/>
<Environment name="app.devel.ldap" value="USER" type="java.lang.String" override="true"/>
<Environment name="app.devel.permitAll" value="true" type="java.lang.String" override="true"/>
</Context>
업데이트 Tomcat 8 <Resources>
및 <Loader>
요소에 대한 구문 변경 , 해당 부분은 이제 다음과 같습니다.
<Resources>
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
webAppMount="/WEB-INF/classes" base="${basedir}/target/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
webAppMount="/WEB-INF/lib" base="${basedir}/target/${project.build.finalName}/WEB-INF/lib" />
</Resources>
Tomcat 6에서 사용자 환경의 CLASSPATH는 무시됩니다. setclasspath.bat에서 볼 수 있습니다.
set CLASSPATH=%JAVA_HOME%\lib\tools.jar
그런 다음 catalina.bat에서는 이렇게 사용됩니다.
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS%
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%"
-Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
I don't see any other vars that are included, so I think you're stuck with editing setclasspath.bat and changing how CLASSPATH is built. For Tomcat 6.0.20, this change was on like 74 of setclasspath.bat
set CLASSPATH=C:\app_config\java_app;%JAVA_HOME%\lib\tools.jar
What I suggest you do is add a META-INF
directory with a MANIFEST.MF
file in .war file.
Please note that according to servlet spec, it must be a .war file and not .war directory for the META-INF/MANIFEST.MF
to be read by container.
Edit the MANIFEST.MF
Class-Path property to C:\app_config\java_app
:
See Using JAR Files: The Basics (Understanding the Manifest)
Enjoy.
You can create a new file, setenv.sh (or setenv.bat) inside tomcats bin directory and add following line there
export CLASSPATH=$CLASSPATH:/XX/xx/PATH_TO_DIR
참고URL : https://stackoverflow.com/questions/1300780/adding-a-directory-to-tomcat-classpath
'program tip' 카테고리의 다른 글
WCF 웹 서비스 요청의 XML SOAP 요청은 어떻게 받습니까? (0) | 2020.11.10 |
---|---|
CSS Calc 대안 (0) | 2020.11.10 |
`NSManagedObject`가 삭제되었는지 어떻게 알 수 있습니까? (0) | 2020.11.10 |
다시 인코딩하지 않고 mp4 비디오 회전 (0) | 2020.11.10 |
UIWebView에서 사용자 에이전트 변경 (0) | 2020.11.10 |