如题,用java如何实现一个分布式系统,主要问题是,如何实现服务器的透明,就是说,客户端不需要知道服务器端的地址,就能与服务器进行通信,也就是说,怎么样编写一个中间件,用中间件来查询服务器端的地址,并将地址返回给客户端,客户端再利用这个地址来于服务器进行通信

解决方案 »

  1.   

    答:用RMI就是一个选择。另外:建立在RMI或RMI-IIOP之上的任何系统都可以(如:EJB也是建立在RMI-IIOP之上的)。
    以上仅供你参考
      

  2.   

    答:另外,就是基于JXTA的P2P平台也可以。
      

  3.   

    汗,我就是用rmi做了一个系统,但给老师看了之后她说这只是一个半分布式系统,因为我用rmi做的客户端还需要知道服务器的ip地址才能与服务器进行通信
      

  4.   

    答:这不是服务器的IP,是注册表的地址,与真正提供的服务的服务器是不同的。要不你就基于JXTAP2P平台吧。
      

  5.   

    根据老师所说应该是lz的封装也有处理,不知道lz采用了什么模式,可以去看一些文章或书籍借鉴一下,比如《精通EJB》 和spring的rmi封装
      

  6.   

    更正:
    根据老师所说应该是lz的封装没有处理好,不知道lz采用了什么模式,可以去看一些文章或书籍借鉴一下,比如《精通EJB》 和spring的rmi封装 
      

  7.   

    答:你应该知道,RMI就是想通过中间注册表(在另外一台机器),或干脆用JNDI,或你自己的“注册表机器,提供对外查询功能”,通过名字来寻求服务的,目的就是使得“实现服务器的透明”。我不明白,你的RMI客户机怎么还要知道服务器的ip地址才能与服务器进行通信?你的RMI注册表机器哪里去了?它与真正的服务器IP是完全无关的啊。正是通过它或JNDI类似机器不做到“服务器的透明”的。你总得有一个中间类似“注册表”的机器才行啊。就是完全分散的无集中的P2P系统,也还需要一个或若干个特殊的“super p2p Node”进行它的“第一次推动”。
    我不明白,已经有了RMI的注册表机器或J2EE之类当中的JNDI或任何一个类似的“中间查询的注册表”,你还要什么?
    以上仅供你参考
      

  8.   

    糊涂了,但我这里的客户端确实是要知道服务器的Ip地址才能与他进行通信的。服务器确实是将服务与一个名称绑定起来,但客户端查找服务器是通过Ip地址和那个名称两个一起来确定的