Чтение переменной окружения в 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 9

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 к строковым константам. смотрите параметры привязки строк

В WebSphere следуйте этим настройкам

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")