开发访问资源适配器的EJB组件
EJB组件通过资源适配器来访问EIS,在EJB组件中,定义了最终客户端要使用的业务方法,一般实现为会话Bean,它一般通过和多个J2EE组件或者资源适配器交互来完成具体的业务逻辑。在这个案例中,EJB组件的功能非常简单,就是接收最终客户端的请求,然后通过资源适配器调用EIS并获得结果,最终把结果返回给客户端。
EJB组件定义了一个业务方法,它的远程接口的代码如例程1所示。
例程1 EJB组件的远程接口
1
例程1 EJB组件的远程接口
2
package
com.hellking.jca.ejb;
3
import
java.rmi.RemoteException;
4
import
javax.ejb.
*
;
5
public
interface
Demo
extends
EJBObject
6
{
7
public
String sayHello(String arg)
throws
RemoteException;
8
}
9
在这个接口里,定义了一个业务方法,就是sayHello(String name)。我们来看EJB组件的实现类部分代码,如例程2所示。
例程2 EJB实现类的部分代码
1
例程2 EJB实现类的部分代码
2
package
com.hellking.jca.ejb;
3
import
….
4
public
class
DemoEJB
implements
SessionBean
5
{
6
private
SessionContext sessionCtx;
7
8
//
业务方法
9
public
String sayHello(String arg)
throws
Exception
10
{
11
System.out.println(
"
echo, arg=
"
+
arg);
12
String result
=
""
;
13
try
14
{
15
InitialContext iniCtx
=
new
InitialContext();
16
Context enc
=
(Context) iniCtx.lookup(
"
java:comp/env
"
);
17
Object ref
=
enc.lookup(
"
eis/DemoEISFactory
"
);
//
获得连接工厂
18
ConnectionFactory dcf
=
(ConnectionFactory) ref;
19
DemoConnection dc
=
(DemoConnection) dcf.getConnection();
//
从连接工厂创建连接
20
result
=
dc.sayHello(arg);
//
调用虚拟连接的业务方法
21
dc.close();
//
使用完,关闭虚拟的连接。
22
}
23
catch
(NamingException e)
24
{
25
System.err.println(
"
在查找JNDI名字时遇到错误:
"
+
e);
26
}
27
return
result;
//
返回调用的结果
28
}
29
…
30
}
31
以上代码是典型的使用资源适配器的方法,首先通过JNDI来查找连接工厂实例(这个实例由应用服务器自动绑定),然后从这个连接工厂获得连接实例,接下来从连接实例调用业务方法,最后关闭连接。