调用ejb时,如果客户端和ejb不在同一个jvm(远程调用),就要设置InitialContext。不同的应用服务器InitialContext写法也不同。下面是JBoss服务器的三种配置方式。
一、 通过配置jndi.properties属性文件来创建InitialContext。
创建jndi.properties文件,放在客户端项目的src目录下。jndi.properties文件内容:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=部署ejb的服务器ip
二、 在客户端代码中通过程序编码直接创建InitialContext
Properties props= new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "jnp://部署ejb的服务器ip"); props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); InitialContext ctx = new InitialContext(props); UserManager userManager =(UserManager)ctx.lookup("UserManagerBean/Local");
三、在客户端代码中通过程序编码直接创建InitialContext
private static InitialContext context; If(context==null){ Hashtable props = new Hashtable(); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); props.put(Context.PROVIDER_URL,"jnp://部署ejb的服务器ip"); context=new InitialContext(props); } UserManager userManager = (UserManager) ctx.lookup("UserManagerBean/Local");
JNDI调用时各种服务器的InitialContext配置方式:
http://www.blogjava.net/mashiguang/archive/2008/07/14/214758.html