大家好,我是陆砚码,今天我们来聊聊EJB开发这个话题。EJB(Enterprise JavaBeans)是一种用于开发企业级应用程序的Java技术。那么,EJB开发的具体步骤是怎样的呢?读完这篇文章,你就能对这个流程有一个清晰的认识。
一、开发EJB的步骤
1. **开发编译业务接口和Bean类**
- (1) 编写业务接口和Bean类
- (2) 编译
2. **打包部署到JNDI服务器**
- (3) 提供部署描述文件
- (4) 打包(编译后的字节码文件和部署描述文件)成ejb-jar
- (5) 部署ejb-jar到容器
3. **测试**
- (6) 检测部署是否成功(看容器是否发现)
- (7) 识别客户端程序来调用EJB
业务接口(Business Interface)
(1) 对客户端暴露可以调用的方法,它是一个普通的Java接口,POJO类,或POJI。
(2) 业务接口可以划分为两类:
- A、远程业务接口
- B、本地业务接口
如果客户端和EJB运行在同一个JVM中,我们应该用本地接口,否则只能用远程业务接口。
Bean类(The Bean Class)
(1) Bean类也是一个POJO,实现了业务接口中的方法
(2) 在Bean类中一般带有标注(Annotation),用于代替传统的部署描述文件
- @stateless 无状态(标注该类是一个无状态的会话Bean)
- @Remote(XXX.class)(标注该Bean类的业务接口是XXX.class)
(3) Bean类要有缺省的构造方法
(4) Bean类可以不实现业务接口(因为标注已经说明),不过建议实现
(5) ejb-jar.xml(Optional)标准的部署描述文件
我们可以用EJB3.0中的标注来代替对描述文件的编写。
EJB3.0部署描述文件示例
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" metadata-complete="true" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
<session>
<display-name>HelloBean</display-name>
<ejb-name>HelloBean</ejb-name>
<business-remote>test.HelloRemote</business-remote>
<ejb-class>test.HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<security-identity>
<use-caller-identity/>
</security-identity>
</session>
</enterprise-beans>
</ejb-jar>
EJB Client(客户端)
(1) EJB不能被客户端直接访问,客户端必须通过业务接口来调用EJB
(2) EJB客户端分为两类:
- A、EJB客户端与EJB运行在同一个容器中→本地业务接口
- B、EJB客户端与EJB运行在不同的JVM中→远程业务接口
EJB 容器(EJB Container)
(1) EJB容器是一个运行在JVM上的程序
(2) EJB容器为EJB提供中间件服务。
EJB客户端的编程步骤
- 1、运行客户端前要加上在SUN的服务器文件夹中的lib下的javaee.jar和appserv-rt.jar
- 2、配置系统的JNDI的环境(客户端所依赖的Object和Sun运行环境)
- 3、写测试类,注意在测试类中也要有业务接口
Step1:设置JNDI服务器入口信息( system.setProperty)
Step2:初始化上下文
Step3:查找JNDI服务器的Stub
Step4:调用对象
EJB调用过程
(1) EJB容器将Stub绑定到JNDI服务器上,JNDI上使用的绑定(默认情况下)是远程业务接口的全限定名。
(2) 客户端通过上下文(Context)的方法来查找JNDI服务器上绑定的Stub。
注意:EJB一定要先部署到服务器,EJB需要部署环境才能运行
EJB客户端示例
public class Cilent {
public static void main(String[] args) throws NamingException {
System.setProperty("jndi.factory","com.sun.jndi.cosnaming.CNCtxFactory");
System.setProperty("jndi.provider.url","corbaloc::localhost:3007/NameSpace");
Context ctx=new InitialContext();
HelloRemote hello=(HelloRemote)ctx.lookup("test.HelloRemote");
System.out.println(hello.hello());
System.out.println(hello.helloword("lichen"));
}
}
注意:在写客户端时,要引入javaee.jar和appser-rt.jar还要引入已经编译好的EJB的jar文件。
好了,今天的内容就到这里,希望这篇文章能帮助你更好地理解EJB开发流程。如果你对EJB还有其他疑问,欢迎在评论区留言交流。我是陆砚码,我们下期再见!
——来自「思享编程网」(www.sxgpb.com)的陆砚码
