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

不幸的是,即使在重新启用此webapp或重新启动Web服务器之后,我的EJB仍会打印旧值“Hello World”.

我还试图为web.xml中未定义的名称设置web-env-entry,并且还使用–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和admin web控制台来更改资源.

java – 如何修改GlassFish中的Web环境条目4的更多相关文章

  1. 调试 – 使用带有glassfish服务器的ubuntu上的intelliJ,无法在调试模式下运行Web应用程序

    在使用glassfish3.1.2.2的ubuntu12.04上的intelliJ12.0中,我试图在调试模式下启动我的Web应用程序,但是我收到此错误消息:我尝试用另一个更改domain.xml中的端口9009但它不成功.你能帮我解决这个问题吗?

  2. Ubuntu / Java / Glassfish的奇怪文件名字符编码问题

    简单的System.out.println方法正确显示文件名,并成功将问题文件复制到另一个文件夹.这个事实让我别无选择,只能宣称Glassfish是我的班级,java和linux之间的差距.在Glassfish中是否有任何字符编码特定设置我可以纠正以修复此错误或者我可能错过了某些问题并且问题实际上并不存在?.另外,请参阅Glassfish配置,例如在sun-web.xml中你必须看到这样的东西:

  3. ubuntu – Glassfish 4服务器意外停止

    我是GlassFish的新手,也是一般的应用服务器.我有一个运行Ubuntu的AmazonEC2实例,并安装了GlassFish4.它启动时没有问题,但一段时间后,GlassFish服务器就会自行关闭.我查看了server.log,但一切看起来都很正常,并且没有条目描述任何失败或关闭.关于可能是什么原因的任何输入,或者我应该寻找任何线索的地方?服务器过去常常每天崩溃,但是交换它并没有在几周内崩溃.

  4. java-ee – Glassfish中的JNDI配置/查找

    我在Glassfish中遇到一些基本的JNDI配置时遇到了麻烦.我认为应该是一个简单的任务:在运行时,确定特定属性是否设置为true.我认为这是JNDI的一个很好的应用程序,但似乎无法在app服务器和我的servlet代码之间获得正确的路径.以下是我在Glassfish中配置属性的方法:在我的servlet代码中,我试图通过以下方式查找值:除了这条路之外,我还尝试了以下方法但没有成功:>java:

  5. java – 在GlassFish 4.1中升级Jackson

    我使用的是GlassFish4.1,其中包括Jackson2.3.2.我想升级到最新版本的Jackson(目前为2.4.4).在GlassFish4.1中升级Jackson的过程是否简单如下:a)停止GlassFishb)删除osgi-cachec)用更新的版本替换glassfish/modules目录中的Jackson2.3.2jard)启动GlassFish谢谢.解决方法请@seehttps:

  6. java – 如何使JNDI名称与GlassFish和WildFly兼容

    我假设答案可能取决于特定于应用程序的部署描述符,但我找不到任何涵盖这两种情况的示例.有人能指出我正确的方向吗?

  7. glassfish – Java EE7的拦截器问题

    我正在测试/切换到JavaEE7(Glassfish4),我遇到的一个问题是拦截器,每当我尝试运行项目时,我都会收到以下错误.SEVERE:Exceptionwhileloadingtheapp:CDIdeploymentfailure:WELD-001417Enabledinterceptorclasscom.xxxxxx.security.SecuredInterceptorinfile:/h

  8. java-ee – 处理Java EE和java.endorsed.dirs的最佳实践?

    如果我选择,在将应用程序部署到使用较新的认可库进行自举的容器时,是否需要担心不兼容问题?不是GlassFishEmbbeded附带了与JavaEE规范兼容的库吗?并不是默认加载的那些库?这几乎是您针对JavaEE6API编译项目所需的全部内容.任何符合JavaEE6的AppServer都应该提供这些服务,您不应该担心它们如何使它可供您的应用程序使用.引导JavaEE服务的责任应该是您的AppServer.如果你尝试自己的“内部”解决方案,JARHell可能会破裂.干杯,

  9. 过滤器链的GlassFish问题:java.lang.IllegalStateException:已为此响应调用了PWC3990:getWriter()

    我们需要升级老式Web应用程序以在GlassFish3而不是Tomcat下运行才能获得EAR部署(Glassfish被选中,因为它是参考JEE6实现)不幸的是,它很快证明了确保用户登录的机制不能正常工作并且抱怨已经调用了getWriter()(这很可能是正确的)并且我无法弄清楚原因.方法是我们在完整的JSP文件集上有一个过滤器,用于检查用户是否已登录,如果没有,则使用filterChain.doF

  10. 调试 – 使用Glassfish 3.0.1和NetBeans 6.9.1的JPA 2.0(记录和跟踪)

    我在Glassfishv3.0.1和NetBeans6.9.1中使用JPA2.0,并且无法从JPA2.0中查看查询和其他日志记录信息.本质上我希望能够看到由JPA生成的所有sql语句和其他相关调试信息…有没有人能成功地配置日志记录来提供这样的反馈?我已经尝试过几件事情无济于事任何帮助将不胜感激.非常感谢.解决方法最终对我做的诀窍在于:结合您推荐的标签:这让我看到NetBeans输出窗口中的相关JPA日志.这也在Eclipse中工作.输出被发送到控制台窗口,与服务器的输出混合,这正是我想要的.

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部