//WebSphere
Properties properties= new Properties();
properties.put(javax.naming.Context.PROVIDER_URL,"iiop:///");
properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.ejs.ns.jndi.CNInitialContextFactory");
new InitialContext(properties);
//JBoss
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
InitialContext ctx = new InitialContext(p);
//SUN
Properties props = new Properties();
props.setProperty( "java.naming.factory.initial" ,
"com.sun.enterprise.naming.SerialInitContextFactory" );
//com.sun.jndi.cosnaming.CNCtxFactory 似乎是这个!
props.setProperty( "java.naming.provider.url" , "localhost:3700" );
InitialContext = new InitialContext(props);
//Weblogic10
Properties props = new Properties();
props.setProperty( "java.naming.factory.initial" ,
"weblogic.jndi.WLInitialContextFactory" );
props.setProperty( "java.naming.provider.url" , "t3://localhost:7001" );
InitialContext = new InitialContext(props);
JBOSS 环境下 JNDI 树的命名约定:
( 1 ) java:copm 这个上下文环境和其子上下文环境仅能被与之相关的特定应用组件访问和使用
( 2 ) java : 子上下文环境和绑定的对象只能被 Jboss 服务器虚拟机内的应用访问
( 3 )其他上下文环境 只要实现序列化就可以被远程用户调用。
输入下面 URL , 点击“ service=JNDIView ” link,在出现的page里找到“ List of MBean operations: ”栏的“list() ”方法,click “Invoke ”button,就可以查看已经帮定的JNDI Name
JBOSS 下默认JNDI邦定名称:
1> 如果 EJB 打包进 后缀为 *.ear 的 J2EE 发布文件 ,默认的 JNDI 路径名称是
访问本地接口: EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
访问远程接口: EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
例: EJB HelloWorld 打包进名为 HelloWorld.ear 的 J2EE 应用,访问她远程接口的 JNDI 名是: HelloWorld/HelloWorldBean/remote
2> 如果 EJB 应用 打包成后缀为 *.jar 的发布文件 , 默认的 JNDI 路径名称是
访问本地接口: EJB-CLASS-NAME/local
访问远程接口: EJB-CLASS-NAME/remote
例: HelloWorld 应用打包成 HelloWorld.jar 文件,访问她远程接口的 JNDI 名称是: HelloWorldBean/remote
注意: EJB-CLASS-NAME 是不带包名的 ,如 com.foshanshop.ejb3.impl.HelloWorldBean 只需取 HelloWorldBean 。
目前网上很多教材获取 JNDI 路径名的方式不适用在 jboss 下,如:
HelloWorld helloworld = (HelloWorld) ctx.lookup(HelloWorld.class.getName());
这种方式适用于 Sun Application Server 及 glassfish
转载:
阅读(812) | 评论(0) | 转发(0) |