gpt4 book ai didi

jakarta-ee - 如何在 JBOSS 中设置 JNDI 变量?

转载 作者:行者123 更新时间:2023-12-02 08:54:11 24 4
gpt4 key购买 nike

我正在使用 JBoss 5.1,我想将配置文件的位置指定为 JNDI 条目,以便我可以在我的 Web 应用程序中查找它。我怎样才能正确地做到这一点?

最佳答案

有两种主要方法可以实现此目的。

部署描述符/声明性

使用JNDI Binding Manager通过在 *my-jndi-bindings***-service.xml** 等文件中创建部署描述符并将其放入服务器的 deploy 目录中。描述符示例如下所示:

<mbean code="org.jboss.naming.JNDIBindingServiceMgr" 
name="jboss.tests:name=example1">
<attribute name="BindingsConfig" serialDataType="jbxb">
<jndi:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jndi="urn:jboss:jndi-binding-service"
xs:schemaLocation="urn:jboss:jndi-binding-service \
resource:jndi-binding-service_1_0.xsd">
<jndi:binding name="bindexample/message">
<jndi:value trim="true">
Hello, JNDI!
</jndi:value>
</jndi:binding>
</jndi:bindings>
</attribute>
</mbean>

程序化

获取 JNDI 上下文并自行执行绑定(bind)。这是执行此操作的“in-jboss”调用的示例:

import javax.naming.*;

public static void bind(String name, Object obj) throws NamingException {
Context ctx = null;
try {
ctx = new InitialContext();
ctx.bind(name, obj);
} finally {
try { ctx.close(); } catch (Exception e) {}
}
}

如果名称已经绑定(bind),可以调用重新绑定(bind):

public static  void rebind(String name, Object obj) throws NamingException {
Context ctx = null;
try {
ctx = new InitialContext();
ctx.rebind(name, obj);
} finally {
try { ctx.close(); } catch (Exception e) {}
}
}

要删除绑定(bind),请调用unbind:

public static  void unbind(String name) throws NamingException {
Context ctx = null;
try {
ctx = new InitialContext();
ctx.unbind(name);
} finally {
try { ctx.close(); } catch (Exception e) {}
}
}

如果您尝试远程执行此操作(即不在 JBoss VM 中),那么您将需要获取远程 JNDI 上下文:

import javax.naming.*;
String JBOSS_JNDI_FACTORY = "org.jnp.interfaces.NamingContextFactory";
String JBOSS_DEFAULT_JNDI_HOST = "localhost";
int JBOSS_DEFAULT_JNDI_PORT = 1099;
.....
Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY, JBOSS_JNDI_FACTORY);
p.setProperty(Context.PROVIDER_URL, JBOSS_DEFAULT_JNDI_HOST + ":" + JBOSS_DEFAULT_JNDI_PORT);
Context ctx = new InitialContext(p);

关于jakarta-ee - 如何在 JBOSS 中设置 JNDI 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187900/

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