从接触java开始,就对java的标准,神交已久,今天先给大家简单介绍下,什么事ejb,然后咱们一起完成一个小例子,完成对ejb的熟悉过程,在这其间一起体会ejb带给我们的编码变化!
简介(来自百度):
EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。实例:
1,安装jboss服务器:iis
(1)从官网下载安装包(绿色)(2)解压到指定文件夹
(3)配置MyEclipse
在工具栏的windows下选择preferences…
2,新建ejb项目:
(1)在工具栏上选择file->new->EJB Project
(2)在src下建立实体,接口和接口的实现:
代码附加在附件二中!
(3)发布到jboss上
在Server选项夹上右键 -> add deployment -> project -> 选择自己的ejb项目 -> finish -> 单击启动按钮
(4)编写客户端:
(4.1)加入服务端的接口及必备jar包
编写包含Main函数的类:在服务端运行
具体参看附件二内容
(5)编写JNDI配置文件:为了让程序找到(第一次使用,跟着做就行,以后肯定会仔细研究)
具体参看附件一。(6)运行结果显示为:0
总结:
今天我们初识了ejb这个神交已久的老朋友,感觉使用起来还是很方便的,简单写写接口和实现,配置下文件,我们就可以远程调用某个接口,这个和我们编写C#代码有了很多神似的地方,我们在编写c#代码时,分层的学习是个重要的切入点,而ejb就是对分布式进行了分层,我们不太关心具体的分布式是怎么实现的,我们仅关心,他好用,好上手,让用户感觉简单,这就足够了!还是那句话,在生活中,我们不乏这样的例子,所有有前台的店面或者商场就是这样,他对一个复杂的业务进行封装,比如我们的移动营业厅,具体的业务操作交给营业员,而我们只需提出要求就好!
附件一(配置文件):
名称为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=localhost
附件二(代码):
1.EJB服务端代码区:
1.1实体类:
package com.ejb.test; import java.io.Serializable; /** * * @author 许恕 * 用户实体 * */ public class User implements Serializable { //用户id private int id; //用户姓名 private String userName; //用户密码 private String passWord; //获取用户id public int getId() { return id; } //设置用户id public void setId(int id) { this.id = id; } //获取用户姓名 public String getUserName() { return userName; } //设置用户姓名 public void setUserName(String userName) { this.userName = userName; } //获取用户密码 public String getPassWord() { return passWord; } //设置用户密码 public void setPassWord(String passWord) { this.passWord = passWord; } }
1.2接口类:
package com.ejb.test; /** * * @author 许恕 *管理用户接口 */ public interface IUserManger { //增加用户 public void addUser(User user); }
1.3实现类:
package com.ejb.test; import javax.ejb.Remote; import javax.ejb.Stateless; @Stateless @Remote public class UserMangerRemoteBean implements IUserManger { //增加用户 public void addUser(User user) { System.out.println("user is saved , and user.name={"+user.getUserName()+"}"); user.setId(10); } }
2.客户端代码:
package com.ejb.test3; import javax.naming.InitialContext; import com.ejb.test.IUserManger; import com.ejb.test.User; public class UserManagerClient { /** * @param args */ public static void main(String[] args) throws Exception { InitialContext context =new InitialContext(); //第一次会话-远程 IUserManger ejbRemote = (IUserManger)context.lookup("UserMangerRemoteBean/remote"); User user = new User(); user.setUserName("huangjin"); ejbRemote.addUser(user); System.out.println(user.getId()); } }