2010-11-19 3 views
1

OK.이 코드는보기 흉한 코드입니다. 나는 리눅스 박스 (CentOS 5)의 Tomcat 6 인스턴스에서 실행되는 .war 파일을 가지고있다. Java 코드에는 Runtime.exec(cmd) 메소드에 대한 호출이 포함되어 있습니다.이 메소드는 기본 응용 프로그램을 실행하는 1 행 쉘 스크립트로 쉘 아웃됩니다. (R, 궁금하다면 ...) 네이티브 앱이 데이터베이스에 액세스하는 것과 같은 일을 할 수있는 환경 변수가 있어야합니다. Java 코드를 편집하고 다시 컴파일 할 수 없습니다. .war 파일의 내용을 편집 할 수는 있지만 편집 할 내용을 알지 못합니다. 그러나 나는 괜찮다고 생각합니다. 보통 자식 프로세스는 부모 환경을 상속합니다. 맞습니까? 따라서 ORACLE_HOME과 다른 환경 변수를 포함하려면 JVM 환경이 필요합니다.Tomcat에서 실행되는 응용 프로그램의 환경 변수

tomcat 프로세스가로드 될 때 사용되는 bin/setenv.sh 파일에 변수를 넣을 수 있다는 것을 알았습니다. 거기에 환경 변수를 추가하려고했지만 작동하지 않습니다.

그래서 :

  1. 내 exec 된 응용 프로그램은 또한 그 변수를 상속 있도록 JVM 프로세스 수준까지 상속됩니다 환경 변수를 설정하는 방법이 있나요?
  2. 그렇지 않은 경우 변수를 수동으로 설정하려면 .war 파일에서 무엇을 편집해야합니까? (그리고 얼마나 못생긴가 ??)

이 추한 해킹 작업을 도와 주셔서 감사합니다!

답변

0

# 2의 대답은 쉽습니다. 앞에서 말한 것처럼 exec() 호출은 응용 프로그램을 실행하는 쉘 스크립트를 호출합니다. 방금 .war 파일을 열고 일부 export FOO=bar 행을 추가하고 tomcat webapps 디렉토리에 결과를 다시 놓았습니다.

그래도 추악한. 누구나 옵션 1에 대한 답변이 좋으면이 질문에 대한 답변을 얻을 수 있습니다.

관련 문제