我有一個Java應用程序,它使用一些外部程序(調用命令行工具)。如何爲Java Web應用程序設置參數
我想讓命令行程序的路徑可配置,以便我可以在不重新構建應用程序的情況下對其進行更改。
問題:
1)準確的參數,我應該使用(掉那些在web.xml中提供的),如果只設置一次(在部署),然後永遠不會改變?
2)如何在Java代碼中訪問此參數?
在此先感謝
德米特里
我有一個Java應用程序,它使用一些外部程序(調用命令行工具)。如何爲Java Web應用程序設置參數
我想讓命令行程序的路徑可配置,以便我可以在不重新構建應用程序的情況下對其進行更改。
問題:
1)準確的參數,我應該使用(掉那些在web.xml中提供的),如果只設置一次(在部署),然後永遠不會改變?
2)如何在Java代碼中訪問此參數?
在此先感謝
德米特里
的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<context-param>
<param-name>command</param-name>
<param-value>SOME_COMMAND</param-value>
</context-param>
.
.
.
.
</web-app>
Java代碼
String commandToExecute = getServletContext().getInitParameter("command");
或者
你也可以把這個東西屬性/ XML文件中的類路徑讀它,並把它當背景來初始化servlet上下文。
您可以使用ENV條目:
<env-entry>
<description>command line</descriptor>
<env-entry-name>commandLine</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>some_command</env-entry-value>
</env-entry>
而且在你的web應用代碼從任何地方獲得它:
javax.naming.Context ctx = new javax.naming.InitialContext();
String command = (String) ctx.lookup("java:comp/env/commandLine");
我會去,在這種情況下的系統性能。只是一個JVM標誌像-Dyour.command.path=/path/to/your/command
運行應用程序服務器,然後在代碼中,你只需要寫:
String cmd = System.getProperty("your.command.path", "/some/default/fallback/path/cmd");
這樣你就不會依賴於一些Java EE/Servlet容器運行。
這是一個兩部分的解決方案。
Apache CLI是做一些程序化訪問的一個很好的選擇。
屬性文件是一個簡單而好的想法。 +1 – Vincent 2013-06-13 04:58:37
Thansk,解決了我的問題。 – 2011-06-01 11:15:30
歡迎您:) – 2011-06-01 11:35:59