首页 > 代码库 > JAVA必备——EJB,通向大型软件的路!

JAVA必备——EJB,通向大型软件的路!



        从接触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包

                          


                (4.2)编写代码:

                          编写包含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());
	}

}