科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用WebService 和RMI远程协作

使用WebService 和RMI远程协作

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

WebService技术现在几乎无处不在,以前玩.NET的时候最开始接触这个概念,C语言对WebService近似原生性的支持使我们用C可以非常迅速的开发出一个WebService,没有任何复杂烦扰的步骤。

作者:中国IT实验室 来源:中国IT实验室 2007年9月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)


   系统要求有Smart device对远程的JVM2里的程序控制,所以我们引入了WebService,通过WebService间接调用JVM2里的东西,WebSerivce本身运行在JVM1,JVM1和JVM2可以在不同机器上,这里demo程序是在一台机器上运行的。
   WebService在这里既是SmartDevice的Server端,又是RMI的Client端。RMI的Server端在JVM2的App里作为一部分服务存在。

三、代码分解,下面我们开始demo这个协作的代码

3.1 首先我们抽象一个RMI的Interface

package  cn.heapstack.rmi.interfaces;

import  java.rmi.Remote;
import  java.rmi.RemoteException;
import  java.util.Date;

public   interface  IBridge  extends  Remote
{
    
public  Date getDate()  throws  RemoteException;
    
    
public  String getOtherInfo()  throws  RemoteException;
}

简单的接口,一个是获得时间的,一个是获取随便什么消息的接口

3.2实现RMI的Server端

package  cn.heapstack.rmi.server;

import  java.rmi.RemoteException;
import  java.rmi.server.UnicastRemoteObject;
import  java.util.Date;

import  cn.heapstack.rmi.interfaces.IBridge;

public   class  BriderImpl  extends  UnicastRemoteObject  implements  IBridge
{

    
protected  BriderImpl()  throws  RemoteException
    
{
        
super ();
    }


    
private   static   final   long  serialVersionUID  =   - 2194578051853930272L ;

    
public  Date getDate()  throws  RemoteException
    
{
        
return   new  Date( 2008 , 5 , 10 );
    }


    
public  String getOtherInfo()  throws  RemoteException
    
{
        
return   " This is the message from the jvm, path info:  "   +  BriderImpl. class .getResource( " / " ).getPath();
    }


}

 

package  cn.heapstack.rmi.server;


import  java.rmi.Naming;
import  java.rmi.registry.LocateRegistry;

import  cn.heapstack.rmi.interfaces.IBridge;

public   class  RmiServer 
{

    
public   static   void  main(String[] args)
    
{
         
try    
          
{    
             LocateRegistry.createRegistry(
1099 );    
             IBridge bridge 
=   new  BriderImpl();
             Naming.rebind(
" bridge " , bridge);    
             
             System.out.println(
" RMI Server is ready. " );
          }
    
          
catch  (Exception e)    
          
{    
             System.out.println(
" RMI Server failed:  "   +  e);    
          }
    

    }

}



3.3我们可以先写个RMI的Client测试一下
package  cn.heapstack.rmi.client;

import  java.rmi.Naming;

import  cn.heapstack.rmi.interfaces.IBridge;

public   class  RmiClient
{

    
/**
     * 
@param  args
     
*/

    
public   static   void  main(String[] args)
    
{
        IBridge bridge;
        
try
        
{
            bridge 
=  (IBridge) Naming.lookup( " bridge " );
        
        
            System.out.println( bridge.getDate() );
        }

        
catch (Exception e)
        
{
            e.printStackTrace();
        }


    }


}


      由于在本机上,省略了ip什么的,如果对这段代码不是很懂,建议看后面的参考资料
      测试方法,先运行Server,再运行Client,不出以外,你能看到2008年5月10号。

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章