<%@ page contentType="text/html; charset=gb2312"%> 用RMI實現J2EE分佈試應用之試驗手記
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
用RMI實現J2EE分佈試應用之試驗手記
     发布者: 发布时间:2007-01-04
//*****************************************
//* 用RMI實現J2EE分佈試應用之試驗手記
//* 試驗人  :火火火
//* EMAIL   :jun_bai@sohu.com
//* 試驗時間:2001/12/22 下午 于虎門大板地
//*****************************************
//    远程方法调用(RMI)机制可以把面向对象的思想进一步扩展,因为你可以调用
//的对象不仅可以在本机上,也可以在别的主机上。本文就简单介绍rmi的编程方法。
//下面就通过一个例子来说明编写的过程。
//  
//*1.编写服务器的接口:这一步是最主要的部分,因为接口是连接客户机
//*与服务器的关键部分。在这个例子中,接口很简单,代码如下:Rem.java
//************************************************************************
//*Rem.java
//************
import java.rmi.*;
public interface Rem extends Remote
{
public String getMessage() throws RemoteException;
public String getAuthor() throws RemoteException;
}
//************************************************************************

//*************************************
//*2.编写服务器对象:RemServer.java
//************************************************************************
//*RemServer.java
//****************
import java.rmi.*;
import java.net.*;
public class RemServer
{
public static void main(String[] args)
{
try
{
RemImpl localObject = new RemImpl();
Naming.rebind("rmi://localhost/Rem",localObject);
}catch(RemoteException re)
{
System.out.println("RemoteException:"+re);
}
catch(MalformedURLException mfe)
{
System.out.println("MalformedURLException:"+mfe);
}
}
}
//************************************************************************


//*************************************
//*3.编写创建服务器对象的服务器程序:RemImpl.java
//************************************************************************
//*RemImpl.java
//************
import java.rmi.*;
import java.rmi.server.*;
public class RemImpl extends UnicastRemoteObject implements Rem
{
public RemImpl() throws RemoteException
{
}
public String getMessage() throws RemoteException
{
return "Here is a remote message.";
}
public String getAuthor() throws RemoteException
{
return "fancy.";
}
}

//************************************************************************


//*************************************
//*4.编写客户端代码:RemClient.java
//************************************************************************
//*RemClient.java
//************
import java.rmi.* ;
import java.net.* ;
import java.io.*  ;

public class RemClient
{
       public static void main(String[] args)
       {
        try
        {
    String host =(args.length>0)?args[0]:"192.1.1.23"; //改為你的RMI遠程務器的IP地址.
    Rem remObject=(Rem)Naming.lookup("rmi://"+ host +"/Rem");
    System.out.println(remObject.getMessage()+"<br>");
    System.out.println(remObject.getAuthor());    
}
catch(RemoteException re)
{
  System.out.println("RemoteException:" + re);
}
catch(NotBoundException nbe)
{
  System.out.println("NotBoundException:" + nbe);
}
catch(MalformedURLException mfe)
{
  System.out.println("MalformedURLException:" + mfe);
}
}
}
//************************************************************************


//*************************************
//*5.编写JSP客户端代码:Rem.jsp
//************************************************************************
//*Rem.jsp
//************

<%@ page import="java.rmi.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*"  %>
<%@ page import="Rem"  %>

<%
try{
    String host ="192.1.1.23" ;  //改為你的RMI遠程務器的IP地址.
    Rem remObject=(Rem)Naming.lookup("rmi://"+ host +"/Rem");
    out.println(remObject.getMessage()+"<br>");
  out.println(remObject.getMessage());    
}
catch(RemoteException re)
{
  out.println("RemoteException:" + re);
}
catch(NotBoundException nbe)
{
  out.println("NotBoundException:" + nbe);
}
catch(MalformedURLException mfe)
{
  out.println("MalformedURLException:" + mfe);
}
%>
//************************************************************************


/*
//************************************************************************
步驟說明:(假設你的JDK安裝在C:\jdk1.3.0_01下)
1.編譯javac_RemSverver.bat服務器端代码
  c:\> C:\jdk1.3.0_01\bin\javac RemServer.java
2.編譯RemImpl.java编写创建服务器对象的服务器程序
  c:\> C:\jdk1.3.0_01\bin\rmic RemImpl
  將會自動產生RemImpl_Skel.class,RemImpl_Stub.class兩個文件.
3.运行rmiregistry程序,启动注册系统,使得服务器可以注册在机器上,以供客户调用。
 c:\> start C:\jdk1.3.0_01\bin\rmiregistry
4.編譯javac_RemClient.bat客戶端代码
  c:\> C:\jdk1.3.0_01\bin\javac RemClient.java
5.运行服务器程序RemServer.class
  c:\> start C:\jdk1.3.0_01\bin\java RemServer
6.运行客戶程序RemClient.class
  c:\> C:\jdk1.3.0_01\bin\java RemClient
  在DOS可以看到結果:
  Here is a remote message.
  fancy.
7.运行JSP客戶程序Rem.jsp
  要將Rem.class,RemImpl_Stub.class兩個文件拷貝到Rem.jsp客戶端的classpass(WEB-INFO)
  下,確保可以被Rem.jsp找到.
  在IE可以看到結果:
  Here is a remote message.
  fancy.

全文完.





參考書籍:
    編程高手成長之路6---JSP高級編程  第4章2小節 ;
//************************************************************************
*/
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
用JavaScript编写HelloWorld应用
weblogic 下 jsp 连接数据库的例(使用JDNI)
一个可以完成读取、打印输出、保存xml等等功能的java例子(xml新手不可不看呀!)
一个jdbc的例子(包含sql语句的批处理,事务处理,数据绑定prepare,)
Java 程序的测试工具
JSP定位特定的日期
 
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号