【Java精品源码栏目提醒】:本文主要为网学会员提供“JAVA论文之Java实体传输的实现方法”,希望对需要JAVA论文之Java实体传输的实现方法网友有所帮助,学习一下!
使用Java实体传输技术,可以有效解决网络编程中传递大量、复杂的各种类型数据的问题。这里是一篇Java实体传输的实现方法,让我们一起来看看详细内容吧~
摘要:实体传输可以在网络中直接传递或者存储对象,因而在网络编程中具有很重要的作用。文章介绍了Java实体传输的实现方法,Applet与 Servlet之间的远程方法调用(RMI)以及Java实体传输在网上采购系统中的应用。
关键词:实体传输;Applet ;Servlet ;RMI;网上采购系统
据统计,在大多数企业中,采购物料和物料的成本大大超过了劳动力或者其他成本。通过建立一个有效的网上采购系统,可以大大降低企业的采购周期和采购成本。同时,通过建立良好的采购商-供应商关系,可以形成一条低成本的、高效的、高质量的产品供应链,从而降低企业的生产成本,提高企业的竞争力。
在Web 实际应用中,B/S(Browser/Server)模式得到了广泛的应用。在这种结构中,客户端与服务器端之间传递大量的、复杂的各种类型的数据是很常见的。如果我们将要传输的信息封装在对象中,然后进行对象的传输,将会大大简化编程工作。在网上采购系统中,采购供应双方的电子数据交换是必不可少的内容。借助于Java实 体传输,结合XML技术,很容易建立起一个功能强大的、高效的网上采购系统。
1 Java实体传输的实现方法
实际上,Java 实体传输技术已经广泛地应用在JavaBean和Java远程方法调用(RMI)的技术中。其实现的方法很简单,可以分为两步:
(1) 首先将对象进行序列化(serialize)。对象序列化机制可以在对象写入流、文件或者是从流、文件中读出时自动进行对象状态的保存与恢复工作。对象序列化机制通过实现Java.io.Serializable 接口或者Java.io.Extenalizable接口来完成。具体的代码示例如下:
class Employee implements Serializable{
private String firstName;
private String lastName;
privare int age;
transient private float payRate;
......
}
transient关键字可以使得payRate属性不会被序列化。这样可以通过它来控制对象的哪一些属性不会被序列化。
(2) 通过使用对象流技术实现实体的传输。为此,首先要创建某些OutputStream对象,然后将其封装到ObjectOutputStream 对象中。此时,只需要调用writeObject()方法就可以完成对象的序列化。然后可以将对象的实体在网络上传输。当要恢复该对象时,将一个InputStream对象封装到ObjectInputStream内 ,然后调用readObject()方法,下溯造型为原来的对象即可。具体的代码示例如下:
Employee oneEmployee=new Employee("jiang","rui");
ObjectOutputStream out=
new ObjectOutputStream(
new ByteArrayOutputStream());
//输出对象
out.writeObject(oneEmployee);
out.flush();
//使用URL类进行网络传输
URL url=new URL(serverAddress);
URLConnection con=url.openConnection();
••••••
//读取返回对象
ObjectInputStream in=
new ObjectInputStream(
con.getInputStream());
Employee reEmployee=
(Employee)in.readObject();
2 Applet与 Servlet之间的远程方法调用
由于在目前的Web应 用中,数据库服务器和Web服务器通常位于不同的服务器上,因此单独使用Applet小应用程序不能直接访问数据库服务器来获取信息。解决这个问题的方法是:让Applet 与位于Web 服务器上的Servlet通信,由Servlet根 据Applet提交的信息去访问数据库服务器或者别的服务器,然后将结果返还给Applet。这里面就牵涉到了Applet 与Servlet 之间的通信。下面就简要介绍一下Applet与Servlet之间进行远程方法调用的方法与实现。
2.1远程方法调用(RMI)的概念
远程方法调用是对象序列化的姐妹概念。它允许用户沿着一个流传送一个对象,并且允许对象存放于不同的计算机并在这些计算机系统上激活该对象的方法。在Applet与Servlet 之间进行的RMI通常是指在客户端运行的程序中(Applet)直接调用服务器端的远程对象的方法(用Servlet来实现),并且获得该远程对象方法的返回值的过程。
2.2远程方法调用的实现
创建并实现远程对象通常需要5个步骤。下面给出一个简单的实例:客户程序调用位于服务器上的远程对象ProductImpl的 方法getDescription(),返回一个字符串。通过这个实例来说明创建并实现远程对象所需要的5个步骤(此处省略了所需要导入的Java包)。
(1)定义一个扩展远程接口的接口。该接口中的每一个方法必须声明它将抛出一个RemoteException异常。这个接口为客户机和服务器共享,并同时驻留在两个计算机中。Interface Product extends Remote{
public String getDescription()
throws Remote
Exception;
}
(2)定义一个实现该接口的类。该类驻留在服务器端。
public class ProductImpl
extends UnicastRemoteObject
implements Product{
public ProductImpl(String n)
throws RemoteException{
name=n;
}
public String getDescription()
throws RemoteException{
}
(3)使用rmic程序生成远程实现所需要的主干(stub)和框架(skeleton)。
rmic-v1.2 ProductImpl 会自动生成两个文件:Product-
Impl_Stub.class 和ProductImpl_Skel.class
(4)创建一个客户程序对服务器进行RMI调用。主要代码如下:
System.setSecurityManager(
new RMISecurityManager());
Product c1=(Product)Naming.
Lookup(url+"toaster");
System.out.println
(c1.getDescription());
注:setSecurityManager()方法是为了设置安全管理器。当Applet 与Servlet 之间进行远程方法调用时,由于Applet拥有自己的安全管理程序,因此此时不再需要设置安全管理器。
(5)启动Registy(登记)并运行自己的远程服务器和客户程序。
远程服务器主要代码如下:ProductImpl p1=new ProductImpl
("Blackwell Toaster");
Naming.rebind("toaster",p1);
在Applet 与Servlet之间进行远程方法调用的实现也一样。只需要把上面所提到的文件,加上用来运行Applet的网页文件,统统放到同一主机上即可,只是主干和框架文件需要与Applet程序放在同一个目录下。
3 Java实体传输在网上采购系统中的应用
采购对于企业和政府而言是非常关键的一个环节,无论是生产资料的采购,还是非生产资料和服务的采购,都将直接影响到成本或利润的升降。由于传统采购缺乏透明度和稳定性,且难于管理,因此网上采购正在被大型企业或政府接受成为主流。
3.1一个典型的采购工作流程
上海汽车工业集团的采购系统所采用的是以集中采购为主的网上集中采购系统,所有的采购任务均由集团供应商集中处理。其典型的采购工作流程如图1所示。
3.2 Java实体传输在工作流程中的应用
在上述网上采购系统的工作流程中,有许多环节需要进行客户端与服务器端的电子数据交换。比如:集团供应商提供给一般供应商的询价单;一般供应商的报价单;集团供应商的订单以及一般供应商的发货单等等。下面就以从集团供应商传递订单信息到一般供应商的过程为例,来说明Java实体传输在数据交换过程中的应用。
当集团供应商确认订单信息以后,订单信息存放于集团供应商的数据库中。然后系统会自动通知相关的一般供应商。一般供应商收到通知,通过身份认证,登录到集团供应商的社区后就可以查看或者生成自己的订单,或者通过客户端应用软件(Applet)将订单信息存入自己的数据库中。
众所周知,一般的
上一篇:2016本科PHP论文