2010-11-19 77 views
1

好的,這很醜。我有一個.war文件,運行在Linux機器上的Tomcat 6實例(CentOS 5)上。 Java代碼包含對Runtime.exec(cmd)方法的調用,在該方法中,該方法將發送到運行本機應用程序的單行shell腳本。 (R,如果你好奇......)一切都很好,除了原生應用程序需要設置一些環境變量,以便它可以執行諸如訪問數據庫之類的內容。我無法編輯java代碼並重新編譯。我想我可以編輯.war文件的內容,但我不知道要編輯什麼。但我認爲沒關係 - 子進程通常會繼承父進程的環境,對吧?所以我只需要JVM的環境來包含ORACLE_HOME和其他環境變量。在Tomcat下運行的應用程序的環境變量

我發現你可以在tomcat進程加載時使用的bin/setenv.sh文件中放置變量。我嘗試在那裏添加環境變量,但這不起作用。

所以:

  1. 有沒有辦法設置將被繼承下來到JVM進程級的環境變量,讓自己的exec'd應用程序也繼承了這些變量?
  2. 如果不是,我應該在.war文件中編輯以手動設置這些變量。 (以及這是多麼醜陋?)

感謝您幫助我得到這個醜陋的黑客工作!

回答

0

那麼,#2的答案很容易。正如我所說的,exec()調用調用運行應用程序的shell腳本。我剛剛打開了.war文件,並添加了一些export FOO=bar行,將結果放回到tomcat webapps目錄中,並且工作正常。

雖然醜陋。如果任何人對選項#1有很好的答案,他們會因此回答這個問題。

相關問題