2011-05-31 60 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);