Java和事件驱动编程

我正在使用javaeventing编写一个偶数驱动的shell来访问数据库。所以,我的用例是: 在命令行中打开shell。 现在,shell连接到数据库并侦听进来的命令。 当它获得一个命令时,它会执行它并返回所需的输出。 现在,我怎么能在这里避免
while(!exit){ //do stuff }
种循环?如何正确使用Java事件? 直截了当的方式可以是:
while(!exit)
{
   exit = myClass.execute("command"); //when command is exit, return true.
}
但是,我正在寻找java事件是否可以提供更好的解决方案。 UPDATE1: 这是我想要实现的: 1我的应用程序是一个shell(如mongodb shell)来试用一个键值数据库。 2简单的代码:
init(); //Initialize the connection with database
while(!exit)
{  
    //exit = myClass.execute("put(5)"); //This returns false  
    exit = myClass.execute("exit"); //returns true, i.e. the user wants to exit the shell
}
现在,在这里我没有看到java事件的使用,我解决了我的问题,请你告诉我,如何在这里看到java事件?我希望用户触发事件。     
已邀请:
我发现很难理解你正在尝试做什么,但我有javaEventing的经验,我会尽力帮助你。 Will Hartung是正确的,你需要在某个地方创建你的活动。因此,如果我理解正确,您希望从命令行启动您的java-app,然后您想要连接到数据库并观察要插入的命令,并且在插入时,您想要创建一个事件。它是否正确? 在这种情况下,您可能需要对数据库进行一些轮询,因为普通数据库在某些条件为真时无法通知您的应用程序。这意味着您可能需要while {}子句,在该子句中,您对数据库执行查询,等待包含您要查找的命令的结果集。找到后,您可以创建如下事件:
Class ReceivedCommandEvent extends EventManager.EventObject {}   // define your event   

while (command==null) {
  command = pollDataBaseForCommand();  //poll your databae for commands
  waitForSomePeriod(); 
}

EventManager.triggerEvent(this, new ReceivedCommandEvent(command));     //trigger your event, with the command as payload
现在,侦听事件的任何其他线程(ReceivedCommandEvent)将接收事件,并可以从事件有效负载中检索命令。 现在,问题是,为什么要使用数据库来传递命令呢?你只是用它来在应用程序之间进行通信吗?如果您的其他应用程序也是用Java编写的,您可以考虑使用分布式事件,允许一个Java应用程序将事件发送到在网络中其他计算机上的其他JVM中运行的Java应用程序。您可能希望查看JED(http://code.google.com/p/jed-java-event-distribution),它就是这样做的。 我希望这有帮助, 短发     
事件库所做的就是向侦听器发送事件。除此之外,你需要一些东西来实际创建事件。 在这种情况下,您需要代码来读取控制台并生成事件,您可能需要其他东西来“监听”数据库并从中生成事件(假设您有正在寻找的异步数据库事件,例如表或行更改)。 该代码仍然需要编写。 除非该框架为您提供了这样的实用程序类,否则您必须自己编写,这些类可能就像您描述的那样。 但是这些类都处于系统的边缘,驱动数据。其余代码都可以完全基于事件。     

要回复问题请先登录注册