java rmi服务器客户端_使用Java RMI,为什么远程方法调用产生客户端的时区而不是服务器?...

的想法是具有两个单独的过程运行,各由一个单独的主在两个类中的一个引物:

Client运行作为客户端

Server作为服务器运行

第三类Document充当共享对象(它是一个简单的收集器Strings),其方法addTimestamp()保存当前的Timestamp在控制台中进一步打印。该方法也可以作为远程方法使用,如DocumentInterface中所定义。

执行在两个不同的cmd窗口两个电源产生一个充分发挥功能的系统:

Server:java -cp rmi.jar Server

Client:java -cp rmi.jar Client

如所预期的客户端的输出是:

CLIENT - 看的:2016年9月30日01.53.01

服务器 - 上看到:2016年9月30日01.53.01

当我启动服务器根据不同的时区,但:

Server:java -Duser.timezone=PST -cp rmi.jar Server

Client:java -cp rmi.jar Client

我仍然得到原始客户端输出:

CLIENT - 看的:2016年9月30日01.53.01

服务器 - 看的:2016年9月30日01.53.01

我希望第二行有服务器的基于PST的Timestamp。我检查了标志是否正确设置,它是由服务器的主要直接打印的,并且确实是不同的:

2016.09.29 16.55。57

从我到目前为止的理解,远程调用远程对象上addTimestamp()方法时:

当前Document是通过复制传递到服务器

的Timezone追加由服务器使用Document类的实例

将返回的Document通过拷贝回客户端

的Document是由客户端

显示在这种情况下,我会因此想到Timezone是基于服务器的设置,而不是客户的。为什么不是这种情况?

下面是四班的一些代码片段:

Document.java:

public Document addTimestamp(Document document) throws RemoteException

{

String timestamp = new SimpleDateFormat("yyyy.MM.dd HH.mm.ss").format(new Date());

document.strings.add("Viewed on: "+timestamp);

return document;

}

DocumentInterface.java:

public interface DocumentInterface extends Remote

{

public Document addTimestamp(Document document) throws RemoteException;

}

Server.java - main:

Registry registry = LocateRegistry.createRegistry(1099);

Document document = new Document();

Naming.bind("rmi:///Document", document);

Client.java - main:

Document document = new Document();

DocumentInterface remoteDocument;

try

{

remoteDocument = (DocumentInterface) Naming.lookup("rmi:///Document");

document.addString("USER - ");

document.addTimestamp(document);

document.addString("\n");

document.addString("SERVER - ");

document = remoteDocument.addTimestamp(document);

System.out.println(document.toString());

}

catch (Exception except)

{

}

2016-09-30

Gliptal

+1

你可以打印addTimestamp里面的时间,并检查它是否在客户端或服务器上运行(通过打印哪个窗口)? –

+0

它被印在客户的窗口中!这是为什么? –

+0

因为它在客户端上运行。现在,我不知道*为什么*它在客户端上运行... –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值