2
我正在使用JBoss 5.1,我想将我的配置文件的位置指定为JNDI条目,以便我可以在我的Web应用程序中查找它。我怎样才能正确地做到这一点?如何在JBOSS中设置JNDI变量?
我正在使用JBoss 5.1,我想将我的配置文件的位置指定为JNDI条目,以便我可以在我的Web应用程序中查找它。我怎样才能正确地做到这一点?如何在JBOSS中设置JNDI变量?
有两种主要方法可以做到这一点。
部署描述符/声明
通过在一个文件中,如*我-JNDI的绑定***创建部署描述符使用JNDI Binding Manager - service.xml的**,把它放到服务器的部署目录。一个例子描述是这样的:
<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上下文并执行绑定自己。这是一个“在-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) {}
}
}
如果该名称已绑定,您可以拨打重新绑定:
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) {}
}
}
要删除绑定,调用解除绑定:
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);