不同客户端调用EJB

EJB支持的客户端类型:

  • 本地客户端 (必须与企业Bean运行在同一个JVM中)
  • 远程客户端 
  • Web service客户端

 

创建一个EJB项目:

1. 创建接口

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

2. 实现接口并加注解

@Stateless
@Remote <a>/*@Local</a>  @Webservice*/
public class FirstEjbBean implements FirstEjb {

	public String saySomething(String name) {
		return name;	
	}
}

3. 将EJB项目部署到JBoss

 

创建客户端

一、 远程客户端

  1. 创建一个java项目

  2. 配置客户端环境

       将EJB项目的接口打成jar包(如果有EntityBean,连同EntityBean一起打包),将这个jar包加入到客户端项目的类路径中。

        将Jboss_home/client中的所有jar包加到客户端项目中。

   3. 在客户端创建EJB对象(通过InitialContext得到EJB对象,InitialContext是JNDI的一个对象,JNDI是JBoss应用服务器提供的一种服务)

    private static Context context;
    If(context==null){
	Hashtable  props = new Hashtable();
	props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
	props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
	props.put(Context.PROVIDER_URL,"jnp://EJB所在的IP:1099");
	Context=new InitialContext(props);
    }
    FirstEjb firstEjb = (FirstEjb)context.lookup("FirstEjbBean/remote");
    firstEjb.saySomething("liusong");

 

二、 本地客户端

  1. 创建一个java Web项目

  2. 配置客户端环境

          将EJB项目的接口打成jar包(如果有EntityBean,连同EntityBean一起打包),将这个jar包加入到客户端项目的类路径中。
  3. 在客户端创建EJB对象

<%@ page import="javax.naming.*,com.tgb.ejb.*" %>
<html>
<body>
<%
	InitialContext context= new InitialContext();
	FirstEjb firstEjb = (FirstEjb)context.lookup("FirstEjbBean/local");
	firstEjb.saySomething("liusong");
%>
</body>
</html>


三、 Web service客户端

        暂时略

         Web Service客户端可以访问Stateless Session Bean的接口,业务逻辑方法需要用@WebMethod标识。

 

远程调用和本地调用比较:

@Remote

@Local

客户端需要ejb接口jar

需要

需要jndi配置

不需要

客户端需要Jboss客户端jar

不需要

EntityBena需要实现序列化接口

不需要

客户端不需要在EJB服务器中运行

需要在服务器中运行

参数通过传值方式传递

参数通过传地址方式传递

 

只能Remote方式访问

可以Remote和Local方式访问

如果Bean中没有注明@Remote或者@Local,默认为@Local接口。

如果在本机调用EJB,采用Local接口访问要优于Remote接口。Remote接口访问EJB需要经过远程方法调用(RPCS)环节,而Local接口访问EJB直接从JVM中返回EJB的引用。

由于远程调用的速度比较慢,所以在设计的时候,尽量使用粗粒度的接口,以减少方法的调用,并尽可能在一次方法调用中传输完毕所需要的数据。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值