2011-05-31 63 views

回答

6

有两种主要方法可以做到这一点。

部署描述符/声明

通过在一个文件中,如*我-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);