gpt4 book ai didi

java - GlassFish 4修改web环境入口的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:30 25 4
gpt4 key购买 nike

在我的 web.xml od 我的 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>

此 Web 应用程序中的 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 更改该值:

martin@bono:~/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.

martin@bono:~/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”,即使在重新启用此 Web 应用程序或重新启动 Web 服务器之后也是如此。

我也尝试过 set-web-env-entry 用于未在 web.xml 中定义的名称,并且还使用了 --ignoredescriptoritem 参数,但没有任何帮助。枚举整个环境也没有显示额外或更改的 Web 环境条目,但显示旧的一个加上许多与此问题无关的其他对象:

final NamingEnumeration<Binding> enu = env.listBindings("");

while (enu.hasMore()) {
final Binding binding = enu.next();
System.out.println(binding);
}

我做错了什么?

最佳答案

这似乎是一个错误 - 但我有另一个解决方案可以满足您的需求。您可以使用 glassfish 中提供的自定义资源。您必须在 domain.xml 中声明自定义资源

<resources>
<custom-resource factory-class="org.glassfish.resources.custom.factory.PropertiesFactory" res-type="java.util.Properties" jndi-name="test/properties">
<property name="aMessage" value="Hello World"></property>
</custom-resource>
</resources>

然后就可以在代码中使用了



public class Environment
{

public String getProperty() {

InitialContext ctx = new InitialContext();
properties = (Properties) ctx.lookup("test/properties");
if(properties == null) {
return "default value - hello";
}

return properties.getProperty("aMessage");

}

}

这种方法的一个缺点是自定义资源对于整个域是全局的。但此解决方案的优势在于您还可以使用 asadmin 和管理 Web 控制台更改资源。

关于java - GlassFish 4修改web环境入口的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21377304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com