源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

EJB轻松进阶之一

  • 时间:2021-01-03 10:04 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:EJB轻松进阶之一
文章来源:硅谷动力 作者:中流砥柱 [b]一、引言 [/b]   EJB(Enterprise JavaBeans)是Java程序设计中比较高级的内容,也是Java程序员由入门级向高手级前进的门槛。SUN公司认证Java程序员(SCJP)与SUN公司认证Java开发员(SCJD)之间的一个显著区别就是:SCJP不考EJB,而SCJD要考。随着越来越多的企业采用J2EE平台开发电子商务应用系统,EJB开发已成为今天的Java程序员必须要面对的问题。   本文首先以一个例程介绍了一般分布式对象应用程序的基本原理,然后从基本的下载、安装、配置开始,逐步介绍EJB程序编程的方法,从而使EJB的学习成为一件轻松而有趣的事情。 [b]二、典型的分布式对象程序 [/b]   不管是CORBA还是RMI,其实现分布式对象的策略都是相似的,我们可以用一个简单的程序例子来模拟一个分布式对象程序的构成。 [img]http://www.bianceng.cn/java/j133/200112171354510101.gif[/img]   这个例子模拟了一个远程请求对象属性的过程。有一个远程对象Dog在网络上,现在要得到它的名字(strName)属性。程序在客户端设一个存根(Dog_Stub)类,在服务器端启动一个骨架(dog_Skeleton)类,这两个类都实现了Dog接口,Dog_Stub与Dog_Skeleton通过Socket进行远程通信。当客户程序DogClient向Dog_Stub发出获取名字属性的请求时,Dog_Stub对象把方法名“getName()”作为一个字符串通过Socket发给远程的Dog_Skeleton对象,Dog_Skeleton对象收到这个字符串后再根据字符串的内容执行DogServer对象的getName()方法,得到Dog的名字,然后又通过Socket返回给DogStub对象。整个流程通过网络实现,但对于客户程序DogClient来讲,它并不知道真正的Dog对象在哪里,甚至也不知道这个过程通过了网络,它只知道发出的获取名字属性的请求得到了满意的结果而已。   事实上,CORBA或Java RMI的实现方式与此类似,只不过远没有这么简单而已。这个程序对于说明分布式对象应用程序的执行机理是很有用的。 [b]程序源代码如下所示: [/b] 文件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() public DogServer( String strNameInput ) { strName = strNameInput; }//DogServer() public static void main( String[] args ) throws Exception { New Dog_Skeleton( new DogServer( "TOMCAT" ) ); }//main() }/* DogServer */ 文件Dog_Skeleton.java import java.io.*; import java.net.*; 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(); }//Dog_Skeleton() 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(); }//while }//try catch( Exception e ) { e.printStackTrace(); }//catch }//run() }/* Dog_Skeleton */ 文件Dog_Stub.java import java.io.*; import java.net.*; 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() ); }//Dog_Stub() public String getName() throws Exception { Oos.writeObject( "getName()" ); Oos.flush(); return ( String )ois.readObject(); }//getName() }/* Dog_Stub */ 运行该分布式对象程序时,首先运行DogServer,然后在客户端运行DogClient即可看到结果。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部