关于EJB客户端

原创 2004年09月25日 15:45:00

客户端类型<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    WAS5J2EE编程环境中,有多种EJB客户端访问系统中的EJB,如下:

SessionBean

会话Bean可以被看成实体Bean的客户端访问。通常情况下,会话Bean与实体Bean处于同一个EJB容器中,它可以通过本地接口访问。

Servlet

Servlet EJB可以通过远程和本地接口交互。一个较好的建议是,使用Servlet 访问会话Bean,再通过会话Bean与实体Bean来交互。访问会话BeanServlet 可以使用远程接口,也可以使用本地接口,方便而言,通常使用远程接口。

对于调用Servlet的前台用户HTMLJSPsServlet 是一种瘦客户端工具。

Application Clients

如何访问客户端

       如何类型的客户端访问EJB都有如下步骤:

1、  取得Home接口

2、  查找和创建EJB实例

3、  调用EJB实例方法

Home接口

    有如下两种方法取得EJBHome接口

1、  使用JNDI名称访问

2、  使用引用名称访问

这些在部署描述符中都有描述;

一、取得inittal naming context

最简单的方法是使用构造函数:

Javax.naming.InitialContext ic=new javax.naming.InitialContext();

这种方法是用于当EJBWAS处于同一个虚拟机或同一台机器的时候。

我们可以通过两个参数来创建一个 initian context

1、  机器名称,命名服务端口(PROVIDER_URL

2、  initialContext factory 名称(INITIAL_CONTEXT_FACTORY)

利用java.util.Properties来提供参数(也可以需要Hashtable

java.util.Properties properties=new java.util.Properties();

properties.put(javax.naming.Context.PROVIDER_URL,”iiop:///”);

properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,”com.ibm.websphere.naming.WsnInitialContextFactory”);

Javax.naming.InitialContext ic=new javax.naming.InitialContext(properties);

在本地机时,PROVIDER_URL我们使用”iiop:///”

其实际格式如下:”iiop://hostname:port”

第二个参数根据每个应用服务器不同而不一样,在WAS5中,使用com.ibm.websphere.naming.WsnInitialContextFactory,具体根据服务器而定。

二、从Initial context中查找EJB接口

    使用initial naming context 我们可以查找到想访问的EJB Home

    对于远程接口,我们可以使用全局JNDI名称或者EJB引用名称,而对于本地接口,我们必须使用一个本地引用来访问。

    使用全局JNDI名称

    使用全局JNDI名称访问远程接口的代码如下:

    Object objhome=ic.lookup(“ejb/itsobank/Customer”);

    CustomerHome customerHome =(CustomerHome) javax.rmi.PortableRemoteObject.narrow(objhome,CustomerHome.class);

ejb/itsobank/Customer是我们在创建EJB时在部署描述符中使用的JNDI名称。

 

    使用EJB应用

    使用EJB引用访问远程接口代码如下:

    Object objhome=ic.lookup(“java:comp/env/ejb/CustomerR”);

    CustomerHome customerHome =(CustomerHome) javax.rmi.PortableRemoteObject.narrow(objhome,CustomerHome.class);

   

    使用EJB引用访问本地接口代码如下:

    Object objhome=ic.lookup(“java:comp/env/ejb/CustomerL”);

    CustomerLocalHome customerLocalHome=( CustomerLocalHome) objhome;

EJB之客户端访问接口

谈到EJB不得不做的第一个决定是:EJB要支持什么样的客户端?因为不同的客户端其访问方式也将不同,访问的方式也会影响性能,尤其是分布式的系统更要考虑性能,所以我们在综合考虑后一定要择优选择。    ...
  • liu_yujie2011com
  • liu_yujie2011com
  • 2015年07月28日 21:02
  • 953

EJB对象的部署及客户端调用简单示例

一,EJB对象的写法及部署         1,新建一个EJB Project,在包里加入接口及实现类:                      实现类通常以Bean结尾,并且通过注解方式指定EJB...
  • lhc2207221755
  • lhc2207221755
  • 2016年02月09日 18:26
  • 2531

【EJB三】本地客户端和远程客户端

通常我们说,如果一个客户端程序和服务端在同一个JVM进程中,那么我们称这个客户端程序为本地客户端,在不同的JVM进程中的客户端,为远程客户端。 那么,本地和远程客户端究竟会有哪些区别呢?在程序中是如何...
  • wangyy130
  • wangyy130
  • 2016年05月04日 09:37
  • 977

ejb远程调用 之 weblogic

个人认为ejb远程调用非常有用,性能应该比webservice之流要好很多,配置也并不是很复杂,搞了一个下午重要搞定,记录下来 1. 加入jar包javax.ejb_3.0.1.jar 2. 写服务端...
  • liuguxing
  • liuguxing
  • 2016年04月06日 17:37
  • 947

EJB调用过程

① 客户端程序使用lookup方法查找JNDI ②EJB服务器的JDNI服务根据事先登录的信息匹配lookup查询内容,生成Home实例 ③客户端得到对Home实例的引用 ④客户端调用Home.cre...
  • studyvcmfc
  • studyvcmfc
  • 2009年10月28日 20:24
  • 1583

EJB客户端应用通过JNDI调用远程EJB的方法详解

EJB服务开发完毕后,可以打包为*.jar,并部署到应用服务器,如JBoss AS 7或WildFlly AS 10,供EJB客户端程序调用。 EJB客户端程序是调用服务器上部署的EJB方法的应用。从...
  • taiyangdao
  • taiyangdao
  • 2016年03月08日 14:47
  • 3568

EJB的jndi默认命名规则

1> 如果EJB应用打包成后缀为*.ear的发布文件,默认的 JNDI 名称是 访问本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local 访问远程接口:EA...
  • u013125899
  • u013125899
  • 2015年03月08日 19:37
  • 172

客户端使用EJB

客户端使用EJB类似.NET中的webservice的调用。 先来大致了解一下EJB: ejb容器管理的标准基础设施服务表包括:分布式事务、安全、并发、持久性、资源池和缓冲、接口、负载均衡、容错管...
  • lmdcszh
  • lmdcszh
  • 2013年05月17日 10:07
  • 1048

JBOSS系列(一) --EJB远程调用-客户端的配置

EJB访问方式分为远程客户端访问、本地客户端访问和WebService客户端。          所谓的EJB的远程调用是说客户端与服务端的EJB对象不在同一个JVM进程中。          本地客...
  • liutengteng130
  • liutengteng130
  • 2015年01月25日 21:31
  • 5163

EJB学习(五)——依赖注入

一、Why?     我们在客户端调用服务端对象的时候,通常需要通过服务器的 JNDI 来查找session bean或MDB。JNDI 查找是把客户端与实际的服务端实现解藕的关键步骤。 但是, ...
  • zjx86320
  • zjx86320
  • 2015年08月01日 17:38
  • 1557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于EJB客户端
举报原因:
原因补充:

(最多只允许输入30个字)