2015-10-04 46 views
2

我已经读过,自从Java EE 6以来,可以通过编程将值绑定到java:app:env,java:comp:env和java:global:env中。但是,当我尝试它时,我得到一个javax.naming.OperationNotSupportedException。Liberty Profile:以编程方式绑定JNDI值

我正在使用Liberty 8.5.5.6从启动bean执行此操作。问题是Liberty,我编码的方式,还是可以通过编程方式绑定到这些命名空间的前提?

(简体)代码:

@Startup 
@Singleton 
public class ConfigStartup {   
    @PostConstruct 
    void initialize(){ 
     try { 
      InitialContext ic = new InitialContext(); 
      ic.bind("java:app:env/LOGGING_LEVEL", "ALL"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

回答

2

的自由配置文件不支持写入操作的java:命名空间。 EE 7平台规范永远不会提及java:命名空间的写入操作(但经常讨论声明应用程序服务器应允许应用程序读取的资源的应用程序),而EE兼容性测试套件显然不需要写入操作,所以我认为这是相当合理的对于禁止它们的实现。

如果此功能对您很重要,您可以打开一个WebSphere RFE,但我会建议您寻找替代解决方案。例如,您已经在使用单例会话bean,因此您可以将数据存储在成员变量中,并使用代码查找单例会话bean的java:global JNDI名称并调用getter方法。

+0

感谢您的澄清。这回答了我的问题。 –

+0

@MichaelWalsh你应该点击答案左边的复选标记。它会给我额外的声誉,它会提高你的接受率,以便其他人更有可能在未来回答你的问题。 –

相关问题