2012-06-19 38 views
0

我有使用Java API编写的客户端服务器程序。我试图向服务器发送一条消息,然后服务器会向Client发送一些回复消息。然后Client向服务器发送一个poisonPill。如果服务器收到poisonpill消息,它必须关闭。下面的代码片段相同。 在ClientActor:发送从客户端poisonpill到服务器在阿卡

remoteActor.tell(poisonPill()); 

在ServerActor:

public void onReceive(Object message) throws Exception {   
    if (message instanceof String) {   
    getSender().tell(message + " got something");  
    } else if (message instanceof PoisonPill) {   
    getContext().system().shutdown();  
    } 
} 

message instanceof PoisonPill线不执行,从而使服务器始终运行。

任何人都可以帮助我吗?为什么这条线路根本没有执行?

+0

该行不执行是,如果消息始终是一个字符串的唯一途径。尝试调试或记录。 – Thilo

+0

如果该消息始终是字符串,然后反正是有检查从客户端poisonpill? – user1442237

+0

您remoteActor被调用poisonPill()方法。它会返回一个PoisonPill对象吗? –

回答

1

它不应该是

remoteActor.tell(new PoisonPill()); 
+0

remoteActor.tell(new PoisonPill());不working..giving编译错误 – user1442237

+0

不,这是PoisonPill.getInstance() –

+0

PoisonPill.getInstance()也抛出编译错误 – user1442237

3

PoisonPill由阿卡自动处理。您不应该在Actor中终止ActorSystem。它相当于在Business Object中调用System.exit(0)。 如果你想停止ServerActor,做到:context.stop(个体经营)

相关问题