В моем web.xml
приложении my webapp
у меня есть следующий элемент:
<env-entry>
<env-entry-name>aMessage</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Hello World</env-entry-value>
</env-entry>
EJB в этом веб-приложении может прочитать его:
final InitialContext context = new InitialContext();
final Context env = (Context) context.lookup("java:comp/env");
System.out.println("MSG: " + env.lookup("aMessage")); // prints Hello World
Теперь я пытаюсь изменить это значение с помощью asadmin
:
[email protected]:~/glassfish4/glassfish/bin$ ./asadmin set-web-env-entry --name=aMessage --value=test webapp
Previous env-entry setting of aMessage for application/module webapp was overridden.
Command set-web-env-entry executed successfully.
[email protected]:~/glassfish4/glassfish/bin$ ./asadmin list-web-env-entry webapp
Reported 1 env-entry setting
aMessage (java.lang.String) = test ignoreDescriptorItem=true //
Command list-web-env-entry executed successfully.
К сожалению, мой EJB по-прежнему печатает старое значение "Hello World" даже после повторного включения этого webapp или перезапуска веб-сервера.
Я также пробовал set-web-env-entry
для имен, не определенных в web.xml
, а также играл с параметром --ignoredescriptoritem
, но ничего не помогло. Перечисление всей среды также не показывает никаких дополнительных или измененных записей в веб-среде, но показывает, что он старый и многие другие объекты, не связанные с этой проблемой:
final NamingEnumeration<Binding> enu = env.listBindings("");
while (enu.hasMore()) {
final Binding binding = enu.next();
System.out.println(binding);
}
Что я делаю неправильно?