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);