<%@ page contentType="text/html;charset=cp1251" language="java" %>
<html>
<head><title>Test</title></head>
<body>
<%=System.getenv("JAVA_HOME")%>
</body>
</html>
Как подтянуть переменную окружения на JSP под Unix.
1) getenv() - устарела и не поддерживается сервером.
2) System.GetPropertie("VAR_NAME") - работает,
но из всех переменных окружения доступна только
IMG_TRACEDIR и куча чисто tomcat-овских переменных.
3) Есть идея прочесть оутпут команды "echo $VAR_NAME".
Но не получается это реализовать - на помощь в этом
решении я наиболее надеюсь.
<%@ page import="java.io.InputStreamReader" %>
<%@ page import="java.io.BufferedReader" %>
<%
Process proc = Runtime.getRuntime().exec("env");
InputStream istr = proc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(istr));
String varName = "VAR_NAME";
String str;
while ((str = br.readLine()) != null)
if (str.indexOf(varName) == 0)
out.println(str.substring( varName.length() + 1 ));
%>
В jdk 1.6 ее выкинули? Не должны были...
У меня в 1.5 работает без проблем.
Но если идти твоим методом, то могу предложить 4ый вариант:
Пишешь прогу, которая достает переменную окружения из памяти и пишешь ее в файл.
Далее считываешь ее из файла.
Можешь даже описать в доках это - как фичу программы)))
и больше не поддерживается.
Я не могу сказать сейчас, какая версия Tomcat используется
(сейчас сервер недоступен), но уверен, что одна из последних.
2) Ну зачем же в файл ?
Сразу на оутпут, который подхватит мой JSP-код : )
Впринципе неплохо, если учесть,
что тут достаточно просто однострочного Shell-скрипта
(echo $VAR_NAME).
Кстати, может кто-нить знает, почему получаем null,
если напрямую написать exec("echo $VAR_NAME")
или exec("env | grep $VAR_NAME") ?
Tomcat 5.5.20
Код jsp:
Код:
Компилю, деплою... на страничке пишется C:\java\jdk1.5.08.
И, кстати, System.GetPropertie - не вытаскивает переменные окружения.