CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

两应用服务器的数据传递

楼主xuancao(飞云)2002-11-26 19:30:33 在 Java / Web 开发 提问

我在传递数据的时候,客户端的数据传递到win的websphere,在通过websphere提交给linux的weblogic,请问如何实现  
  因为我们使用的pki验证只支持linux下的weblogic,当然我们的系统是在win的websphere中,所以想通过websphere将pki处理提交给linux的weblogic处理在传递过来·! 问题点数:100、回复次数:16Top

1 楼doli(大夫)回复于 2002-11-26 20:57:01 得分 80

使用rmi,不同系统间的交互Top

2 楼xuancao(飞云)回复于 2002-11-27 13:30:00 得分 0

请问可有列子,谢谢!!!Top

3 楼carion(carion)回复于 2002-11-27 14:36:03 得分 0

是否是要disa的安全平台?Top

4 楼doli(大夫)回复于 2002-11-27 19:31:09 得分 0

rmi可以找一些文章看看,应该可以完成你的任务,例子不好给,下面给出网上的一编文章,可以看看  
  基本是(比如两台主机A与B):在A上执行rmi服务(rmiregistry;java   rmiserver.java),B上执行调用rmi语句,可以访问A主机上方法操作数据库(数据库当然指的是A上的).  
   
  一、Java中的远程方法调用  
    远程方法调用(Remote   Method   Invocation,   RMI)是Java1.1引入的分布式对象软件包,它的出现简化了在多台机器上的Java应用之间的通信。相比CORBA,RMI功能较弱且只能用于Java系统。    
    二、实现一个简单的RMI  
    要使用RMI,必须构造四个主要的类:远程对象的本地接口、RMI客户、远程对象实现和RMI服务器。RMI服务器生成远程对象实现的一个实例,并用一个特殊的URL注册它,RMI客户在远程服务器上查找对象,若找到就把它转换成本地接口类型,然后像一个本地对象一样使用它。下面是一个简单的RMI例子,远程对象只返回一个消息字符串。要使这个例子更有价值,我们需要做的就是完善远程对象实现类。    
    1.远程对象的本地接口类(Rem.java)    
    该类仅仅是一个接口,而不是实现,RMI客户机可以直接使用它,RMI服务器必须通过一个远程对象来实现它,并用某个URL注册它的一个实例。    
    import   java.rmi.*;    
    public   interface   Rem   extends   Remote   {   public   String   getMessage()   throws   RemoteException;}    
    本地接口(Rem)必须是公共的,否则客户机在加载一个实现该接口的远程对象时就会出错。此外,它还必须从java.rmi.Remote继承而来,接口中的每一个方法都必须抛出远程异常java.rmi.RemoteException。    
    2.RMI客户类(RemClient.java)    
    RMI客户使用Naming.lookup在指定的远程主机上查找对象,若找到就把它转换成本地接口Rem类型,然后像一个本地对象一样使用它。与CORBA不同之处在于RMI客户必须知道提供远程服务主机的URL,这个URL可以通过rmi://host/path或rmi://host:port/path来指定,如果省略端口号,就使用1099。Naming.lookup可能产生三个异常:RemoteException、NotBoundException、MalformedURLException,三个寻常都需要捕获。RemoteException、Naming和NotBoundException在java.rmi.*中定义,MalformedURLException在java.net.*中定义。另外,客户机将向远程对象传递串行化对象Serializable,所以还应在程序中输入java.io.*。    
    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]   :   "localhost";   //从命令行读取远程主机名    
    //通过URL在远程主机上查找对象,并把它转化为本地接口Rem类型    
    Rem   remObject=(Rem)Naming.lookup("rmi://"   +   host   +   "/Rem");    
    System.out.println(remObject.getMessage());   //调用远程对象的方法    
    }   catch(RemoteException   re)   {System.out.println("RemoteException:   "   +   re);    
    }   catch(NotBoundException   nbe)   {System.out.println("NotBoundException:   "   +   nbe);    
    }   catch(MalformedURLException   mfe){System.out.println("MalformedURLException:"+   mfe);    
    }}}    
    3.远程对象实现类(RemImpl.java)    
    这个类真正实现RMI客户调用的远程对象,它必须从UnicastRemoteObject继承,其构造函数应抛出RemoteException异常。    
    import   java.rmi.*;    
    import   java.rmi.server.UnicastRemoteObject;    
    public   class   RemImpl   extends   UnicastRemoteObject   implements   Rem   {    
    public   RemImpl()   throws   RemoteException   {}   //构造函数抛出RemoteException异常    
    ublic   String   getMessage()   throws   RemoteException   {    
    return("Here   is   a   remote   message.");   }}   //向RMI客户返回一个消息串    
    4.RMI服务器类(RemServer.java)    
    该类创建远程对象实现RemImpl的一个实例,然后用一个特定的URL来注册它,所谓注册就是通过Naming.bind或Naming.rebind来将RemImpl实例绑定到URL上。    
    import   java.rmi.*;    
    import   java.net.*;    
    public   class   RemServer   {    
    public   static   void   main(String[]   args)   {    
    try   {    
    RemImpl   localObject   =   new   RemImpl();   //生成远程对象实现的一个实例    
    Naming.rebind("rmi:///Rem",   localObject);   //将远程对象实例绑定到rmi:///Rem上      }catch(RemoteException   re){System.out.println("RemoteException:"+re);         }catch(MalformedURLException   mfe)   {System.out.println("MalformedURLException:   "+mfe);    
    }}}    
    三、编译和运行  
    1.   编译RMI客户和服务器,这将自动编译远程对象的本地接口和远程对象实现    
    javac   RemClient.java   //自动编译远程对象的本地接口Rem.java    
    javac   RemServer.java   //自动编译远程对象实现RemImpl.java    
    2.   生成客户承接模块和服务器框架  
    rmic   RemImpl    
    这将构造RemImpl_Stub.class和RemImpl_Skeleton.class。请将Rem.class、RemClient.class和RemImpl_Stub.class拷贝到RMI客户机,将Rem.class、RemImpl.class   、RemServer.class和RemImpl_Skeleton.class拷贝到RMI服务器。    
    3.   启动RMI注册    
    rmiregistry    
    //在服务器上执行。不论有多少个远程对象,本操作只需做一次    
    4.   运行    
    java   RemServer.class    
    //启动RMI服务器(在服务器上执行)    
    java   RemClient.class    
    //启动RMI客户,将输出“Here   is   a   remote   message.”Top

5 楼xuancao(飞云)回复于 2002-11-27 22:38:48 得分 0

to   doli(大夫)请问怎么将客户端的请求通过websphere传递到weblogic,将websphere做rmi客户端,weblogic做服务端??Top

6 楼xuancao(飞云)回复于 2002-11-27 22:40:42 得分 0

wellhope的pki,disa安全平台Top

7 楼doli(大夫)回复于 2002-11-28 17:12:48 得分 0

为什么要传过去,你要处理直接调用rmi主机的方法就行了  
  其实传过去也只是主机地址不同而已,程序可以看作是在同一台主机上处理Top

8 楼moumouren(某某人)回复于 2002-11-29 11:01:08 得分 20

/*最好用sevelet来实现*/  
   
  String   example   =   "http://127.0.0.1:8080/webapp/test";  
  URL   url   =   new   URL(example);  
  URLConnection   urlConn   =   url.openConnection();  
  urlConn.setRequestProperty("Content-Type","text/xml");  
  urlConn.setDoOutput(true);  
  urlConn.setDoInput(true);  
   
  OutputStream   os   =   urlConn.getOutputStream();  
  os.write("我要传送的数据");  
  os.flush();  
  os.close();  
   
    //Receive   result  
    InputStream   is   =   urlConn.getInputStream();Top

9 楼xuancao(飞云)回复于 2002-11-29 17:57:36 得分 0

我们的系统是在websphere下面,可是我们的PKI只能在linux的weblogic下面才能进行验证,加密和签名,所以我们想通过将提交的验证请求通过websphere转到weblogic运行,验证通过后又回到websphere,客户要求不能该为linux+weblogic,所以只有这样了!!Top

10 楼doli(大夫)回复于 2002-11-29 22:15:16 得分 0

本来就是分布式嘛  
  weblogic服务端(rmi服务)  
  websphere客户端  
  其实你只是想验证,加密和签名,只要调用weblogic服务端的wellhope的方法就ok了(当然这些方法要在rmi服务有写),什么disa都通过rmi来验证  
  Top

11 楼doli(大夫)回复于 2002-11-29 22:39:15 得分 0

wellhope只能在weblogic上用吗?  
  你可以咨询wellhope嘛,花钱买的要问清楚@_@  
  (我想class在哪都能用吧)Top

12 楼xuancao(飞云)回复于 2002-12-01 13:51:25 得分 0

请问一下,怎么用server实现rmi的服务端,谢谢!!Top

13 楼xuancao(飞云)回复于 2002-12-01 14:54:10 得分 0

请问一下,怎么用servlet实现rmi的服务端,谢谢!!Top

14 楼doli(大夫)回复于 2002-12-01 15:55:03 得分 0

参考上面贴出的文章Top

15 楼xuancao(飞云)回复于 2002-12-01 20:41:24 得分 0

Naming.rebind("//localhost:8808/SAMPLE-SERVER"   ,   Server);  
  ----------------------和  
  String   url   =   "//localhost:8808/SAMPLE-SERVER";  
  RmiSample   RmiObject   =   (RmiSample)Naming.lookup(url);  
  中的url之间有什么关系,当客户端和服务端不在同一机器上,上面的“localhost”是不是都代表服务器端的ip  
  谢谢!!Top

16 楼doli(大夫)回复于 2002-12-02 19:21:31 得分 0

不错Top

相关问题

  • 如何在客户端和应用服务器端的方法中相互传递参数和数据?
  • DCOMConnection连接数据库应用服务器再讨论?治一治 Interface Not Supported
  • 知道最便宜的应用服务器和数据库服务器吗?
  • sql server 2000 的数据库应用服务器打包的问题
  • MIDAS怎么从客户端向应用服务器传命令和数据
  • 做数据库三层模式,不能连接应用服务器的问题。
  • 多层高手请看:李维的书上在讨论开发三层的应用服务器效率时讲到两个名词:DCOM应用服务器和Socket应用服务器,这个说法对吗?
  • DCOMConnection连接数据库应用服务器,发布时客户端要有哪些特殊文件?
  • 做数据库三层模式时,却不能连接应用服务器的问题!
  • 我写了一个应用服务器,在本地可以连接数据库,放到数据库服务器上,就连不上了?

关键词

  • .net
  • 远程
  • 服务器
  • 接口
  • 客户
  • 主机
  • websphere
  • 验证
  • 客户机
  • 编译

得分解答快速导航

  • 帖主:xuancao
  • doli
  • moumouren

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo