Чтение переменной окружения в Java с помощью Websphere
У меня небольшая проблема с Websphere application server 7.0 (WAS7) и чтением переменных окружения.
С TomCat я определил переменную как
<Environment name="myVar" type="java.lang.String" value="myVarOnServeur"
И я прочитал его с помощью поиска в initialContext:
Context ctx = new InitialContext();
String myVar = (String) ctx.lookup( "java:comp/env/myVar" );
И это работает!
Но в Websphere я определяю переменную окружения в графическом интерфейсе, но не могу прочитать ее в своем коде java. У меня есть ... NamingException.
Http://fullahead.org/work/stackoverflow/was-environment-variables.png
Как я могу исправить свою проблему?
8 ответов:
Я не вижу там ничего, что говорит о том, что эти записи могут быть прочитаны через ctx.lookup ("java: comp / env/...");
Для определения внутренней сети.xml
<env-entry> <env-entry-name>varName</env-entry-name> <env-entry-value>56</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
Чтобы увидеть с java
Context envEntryContext = (Context) new InitialContext().lookup("java:comp/env"); String mydata = (String)envEntryContext.lookup("varName");
Вы можете поместить что-то вроде следующего в ваш файл
web.xml
, который должен быть в каталоге вашего приложенияWEB-INF
:<env-entry> <env-entry-name>myVar</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>myVarOnServeur</env-entry-value> </env-entry>
Кстати, это стандартный синтаксис и должен работать на всех серверах приложений. Я использую его с WebSphere, JBoss и WebLogic. Его можно задать точно так же, как и в вашем примере.
Если вы хотите определить свои собственные переменные и управлять ими,посмотрите на привязки пространства имен Environment- > Naming - >Name. Там можно привязать имена jndi к строковым константам. смотрите параметры привязки строк
On was следуйте приведенной выше настройке, где name-ваш ключ, а value-значение вашего свойства. в моем примере я использовал имя: тестовое значение: это тестовое значение. После установки этих значений перезагрузите сервер приложений. в вашей системе вызова кода Java.getProperty ("TEST"), где test-это имя вашего свойства, а значение покажет
Вы должны быть в состоянии решить их с помощью WebSphere
AdminOperations
MBean ://sample code from WAS 7 Infocenter private String expandVariable(String s) throws javax.management.JMException { com.ibm.websphere.management.AdminService as = com.ibm.websphere.management.AdminServiceFactory.getAdminService(); String server = as.getProcessName(); String mBeanName = "*:*,type=AdminOperations,process=" + server; java.util.Set result = as.queryNames( new javax.management.ObjectName(mBeanName) , null); return (String) as.invoke((javax.management.ObjectName) result.iterator().next(), "expandVariable", new Object[]{"${"+s+"}"}, new String[]{"java.lang.String"}); }
См.Разделсоздание, редактирование и удаление переменных WebSphere .
Вы смотрите не в то место.
Вы должны добавить переменную в Environment - > Naming - >Name space bindings - >New.
При выборе типа привязки String, " идентификатор привязки "и" имя в пространстве имен..."myVar, вы можете получить значение переменной с помощью:
Context ctx = new InitialContext(); String myVar = (String) ctx.lookup( "cell/persistent/myVar" );
Websphere 7.0 - 8.5
Переменная Set Консоль администратора - - - > Websphere Application servers - - - - - > Your_sever_name - - - > Java и управление процессами - - - > определение процессов ->виртуальная машина Java -> пользовательские свойства
Получить значение в Java Система.getProperty ("Your_Variable")