EJB的调用方式是有两种形式的,大致的调用顺序是这样的
1->初始华servert的上下文,也就是初始化容器的上下文,
2->在在远程的调用EJB的beanHome接口
3->home接口的create()方法用来获取ejb的远程接口,
4->有了这个远程的接口我们就可以调用他的所有方法了.
在这里我们要注意的是,因为我们有远程调用和本地调用,他们也是不同的,具体加些小的代码片段来演示下
**********当是远程的时候:(调用方和EJB所在的JVM不是同一个的时候)********************************
1->初始华servert的上下文,也就是初始化容器的上下文,
我们要使用java.util.properties来设置下容器上下文,以这个对象为参数来设置上下文.
//
注意要导入包
Properties p
=
new
Properties() ;
//
将服务器的配置信息放入p中
p.put(Context.INITIAL_CONTEXT_FACTORY,
"
weblogic.jndi.WLInitialContextFactory
"
);
p.put (Context.PROVIDER_URL,
"
t3://localhost:7001
"
);
//
这里的localhost是weblogic所在的服务器的IP
//
以上面的p来初始化容器上下文
Context ctx
=
new
InitialContext (p);
2->在在远程的调用EJB的beanHome接口
Object ref
=
context.lookup(
"
JNDI_name
"
);
//
lookup()直接调用其jndi名称
SbLocalHome testHome
=
(ClassName)PortableRemoteObject.narrow(ref,ClassName.
class
);
3->home接口的create()方法用来获取ejb的远程接口,
test te
=
testHome .create() //获得了远程的接口
4->有了这个远程的接口我们就可以调用他的所有方法了.
te.someMethod();
**********当是本地调用的时候:(调用方和EJB所在的JVM不是同一个的时候)********************************
//
初始化容器上下文
Context cont
=
new
InitialContext ();
//
通过JNDI来获得sessionBean
testHome home
=
(testHome)cont.lookup(
"
JNDIName
"
);
//
通过home来获得远程的接口
test te
=
home.create();
//
通过远程接口来调用方法