首页 > 代码库 > Java深度历险(一) Jboss+EJB的第一个实例

Java深度历险(一) Jboss+EJB的第一个实例

       学习感悟:每次学习新的知识,都会通过第一个小的实例入手,获得成就感,经典的Hello Workd实例奠定了我们成功的大门哈,这些经典的实例虽小但是五脏俱全呢,很好的理解了,Ejb的核心。


       今天主要以这个小实例,来学习EJB的分布式,我们可以将接口与实现放到一台计算机上,而客户端可以放到另一台机器上,当然分布式的意思很大了(下篇博客给大家讲解),快来看实例。


一:代码实现


1:定义接口

<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.ejb;

public interface FirstEjb {
	public String saySomething(String name);

}</span></span>

2:编写对接口的实现
<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.ejb;

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote
public class FirstEjbBean implements FirstEjb {

	@Override
	public String saySomething(String name) {
		// TODO Auto-generated method stub
		return "你好,"+ name;
	}

}
</span></span>

3:编写客户端来通过接口调用实现

<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.ejb;

import javax.naming.InitialContext;

public class FirstEjbElient {
	public static void main(String[] args) throws Exception{
		InitialContext context = new InitialContext();
		
		FirstEjb firstEjb = (FirstEjb)context.lookup("FirstEjbBean/remote");
		String s = firstEjb.saySomething("張三");
		System.out.println(s);
				
	}
}
</span></span>

客户端实例化一个上下文对象,然后通过其lookup方法查找远程实现,最后调用具体的方法。客户端想要成功调用,需要将其接口引用到客户端的项目里。


需要添加jndi配置文件

java.naming.provider.url指的是接口跟实现所在机器的地址和端口。

<span style="font-size:18px;">java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost</span>

客户端跟上面的SessionBean是两个完全独立的项目,但是它们可以进行交互,客户端可以调用SessionBean来完成自己想要的操作,这正是EJB的分布式特性。


效果实现


二:配置

服务端开发好后,需要将其jar包部署到jboss的热部署目录。客户端通过JNDI服务,能够从此拿到服务对象。

使用JNDI来远程访问Ejb服务,需要使用强制转换来转化成接口类型。

所以,我们需要在Ejb的客户端引入jboss的client包,加到当前项目的环境变量中,来支持JNDI服务;

另外客户端需要知道服务端的接口,不然就无法根据名字拿到服务。所以需要将服务端的接口打成jar包,并在ejb的客户端引入。

总结


      实现了本文实例,大家就算是入门了,带着这些成功的学习劲头,快速继续学习,在后文我会对Ejb进行更加深入的剖析。