### EJB轻松掌握的八步 #### 引言 EJB(Enterprise JavaBeans)作为Java技术体系中的一个重要组成部分,标志着Java程序员从初级到高级的重要过渡阶段。它不仅是SUN公司认证Java程序员(SCJP)与SUN公司认证Java开发员(SCJD)之间的显著区别之一——SCJP考试不涉及EJB内容,而SCJD则将其纳入考核范围;同时也是企业在基于J2EE平台开发电子商务应用系统时不可或缺的技术要素。 #### 典型的分布式对象程序 在深入探讨EJB之前,我们先通过一个简单的分布式对象程序示例来了解其工作原理。无论是CORBA(Common Object Request Broker Architecture)还是RMI(Remote Method Invocation),实现分布式对象的方式都具有相似性。下面将通过具体代码来展示这种模式。 ##### 分布式对象程序示例 为了更好地理解分布式对象的概念,我们将构建一个简单的分布式对象程序。该程序包括三个主要部分:接口(Dog)、客户端(DogClient)和服务端(DogServer)。这些组件共同演示了如何通过远程方法调用来实现分布式对象通信。 - **接口(Dog)**: ```java public interface Dog { public String getName() throws Exception; } ``` 这个接口定义了一个名为`getName()`的方法,用于返回狗的名字。 - **客户端(DogClient)**: ```java public class DogClient { public static void main(String[] args) throws Exception { Dog dog = new Dog_Stub(); String strName = dog.getName(); System.out.println(strName); } } ``` 客户端创建了一个`Dog_Stub`实例,并通过远程方法调用(RMI)来获取名字。 - **服务端(DogServer)**: ```java public class DogServer implements Dog { String strName; public String getName() throws Exception { return strName; } public DogServer(String strNameInput) { strName = strNameInput; } public static void main(String[] args) throws Exception { new Dog_Skeleton(new DogServer("TOMCAT")); } } ``` 服务端实现了`Dog`接口,并在构造函数中接收名字参数。主函数创建了`DogServer`实例,并启动了一个处理客户端请求的服务骨架(skeleton)。 - **服务骨架(Dog_Skeleton)**: ```java public class Dog_Skeleton extends Thread { static ServerSocket ss = null; DogServer ds; public Dog_Skeleton(DogServer dsInput) throws Exception { ds = dsInput; if (ss == null) ss = new ServerSocket(8000); this.start(); } public synchronized void run() { try { while (ss != null) { Socket socket = ss.accept(); ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); String strMethodName = (String) ois.readObject(); if (strMethodName.equals("getName()")) oos.writeObject(ds.getName()); oos.flush(); ois.close(); oos.close(); socket.close(); } } catch (Exception e) { e.printStackTrace(); } } } ``` 服务骨架监听来自客户端的连接请求,并处理客户端调用的方法。它通过`ServerSocket`监听特定端口(如8000),接受客户端连接后,读取客户端发送的方法名,并执行相应的操作。 - **客户端存根(Dog_Stub)**: ```java public class Dog_Stub implements Dog { Socket socket; ObjectOutputStream oos; ObjectInputStream ois; public Dog_Stub() throws Exception { socket = new Socket("wudi", 8000); oos = new ObjectOutputStream(socket.getOutputStream()); ois = new ObjectInputStream(socket.getInputStream()); } public String getName() throws Exception { oos.writeObject("getName()"); oos.flush(); return (String) ois.readObject(); } } ``` 客户端存根实现了`Dog`接口,通过Socket连接到服务端,并通过网络流发送方法调用请求,等待服务端响应并返回结果。 #### 结论 通过上述示例,我们可以看到分布式对象程序的基本结构和工作原理。EJB作为一种更为高级且复杂的分布式对象技术,在实际应用中不仅涉及到了类似的远程方法调用机制,还引入了容器管理、事务处理、安全性控制等更深层次的功能。接下来,我们将会详细介绍如何从零开始学习EJB,包括环境搭建、基础概念理解以及实战编程技巧等内容,让EJB的学习过程变得更加轻松和高效。
一、引言
EJB(Enterprise JavaBeans)是Java程序设计中比较高级的内容,也是Java程序员由入门级向高手级前进的门槛。SUN公司认证Java程序员(SCJP)与SUN公司认证Java开发员(SCJD)之间的一个显著区别就是:SCJP不考EJB,而SCJD要考。随着越来越多的企业采用J2EE平台开发电子商务应用系统,EJB开发已成为今天的Java程序员必须要面对的问题。
本文首先以一个例程介绍了一般分布式对象应用程序的基本原理,然后从基本的下载、安装、配置开始,逐步介绍EJB程序编程的方法,从而使EJB的学习成为一件轻松而有趣的事情。
二、典型的分布式对象程序
不管是CORBA还是RMI,其实现分布式对象的策略都是相似的,我们可以用一个简单的程序例子来模拟一个分布式对象程序的构成。
事实上,CORBA或Java RMI的实现方式与此类似,只不过远没有这么简单而已。这个程序对于说明分布式对象应用程序的执行机理是很有用的。
程序源代码如下所示:
文件Dog.java
public interface Dog
{
public String getName() throws Exception;
}/* Dog */
文件DogClient.java
public class DogClient
{
public static void main( String[] args ) throws Exception
{
Dog dog = new Dog_Stub();
String strName = dog.getName();
System.out.println( "姓名:" + strName );
}//main()
}/* DogClient */
文件DogServer.java
public class DogServer implements Dog
{
String strName;
int intAge;
public String getName() throws Exception
{
return strName;
}//getName()
剩余6页未读,继续阅读
- 粉丝: 12
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip