Enterprise JavaBeans 入门
客户端开发和测试
本章主要讲述以下内容:一个客户端应用的构成;JNDI 的工作方式以及使用 home 接口和会话 bean 等相关的知识。
- 一个客户端应用的构成?
- JNDI 是如何工作的
- 使用 home 接口
- 使用会话 bean
![]() ![]() |
![]()
|
- 看起来很特殊的 EJB 客户端应用实质上一点也不特殊
- 可以是 applet, 应用程序, servlet, 或其它 bean
- 没有过高的 overhead
- 编程模式简单
![]() ![]() |
![]()
|
- 使用 JNDI (Java Naming and Directory Interface) 来查找一个 EJB
home 接口
- JNDI 是将名称与对象匹配的服务(类似电话黄页)
- 一个 "naming service"
- 一个服务器将对象添加到目录树上:Known as "binding" a name to an object
- 任何一种对象可以被加到目录树中
![]() ![]() |
![]()
|
- 一个 Context 是一个将名称与对象绑定好的对象
- Context 可以是嵌套的 (构成一个目录结构):顶级的 context 对象是一个 InitialContext
- Context 可以被 "列出" 来查看其中的内容
![]() ![]() |
![]()
|
- Context 接口定义了下列方法
- void bind(String name, Object obj)
- Object lookup(String name)
- 一个容器当 Bean 启动后自动将 Bean 的名称绑定到它的 home 对象上
- 一个客户端通过名称就可查找到 home 接口
![]() ![]() |
![]()
|
- 服务器和客户端需要知道:
- 如何定位名称服务器
- 在名称服务器上对象的正确名称
- 客户端不知道如何定位 EJB 服务器:客户端必需知道如何找到名称服务器
- 通过名称服务器存取的对象可以来自多方面:多个服务器可以构成命名空间
![]() ![]() |
![]()
|
|
|
![]() ![]() |
![]()
|
|
|
![]() ![]() |
![]()
|
|
|
![]() ![]() |
![]()
|
|
|
![]() ![]() |
![]()
|
|
|
![]() ![]() |
![]()
|
|
|
Servlet 示例
|
|
![]() ![]() |
![]()
|
- 构建一个 EJB 客户端的流程
- JNDI 提供了一个分布式对象有层次的组织
- 客户端和服务器不需要互为知道
- 客户端和服务器必需知道:
- 如何找到名称服务器
- 对象的公用名称