所有,
我正在尝试决定是否将NodeJS或Java用于我的应用程序.我将通过HTTP与CouchDB进行通信,并希望采用异步非阻塞设计,我的应用程序线程可以在等待来自CouchDB的查询响应时处理其他请求.
我更喜欢使用Java,我一直在寻找AsyncHttpClient作为潜在的解决方案.但是,我在理解图书馆方面遇到了一些麻烦,并认为我可能对某些内容存在根本性的误解.
我在这里发布了一个要点:https://gist.github.com/conorgil/5505603
我希望这个要点打印出"请求X发送!" 并为每个请求"响应X:某事".但是,在每个Future调用get()之前,似乎没有进行HTTP调用(因此,处理程序没有执行).取消注释第23行f.get()会使代码按预期工作,但是对Future#get()的调用是阻塞的,对吗?有没有办法只提供一个回调函数,一旦HTTP响应被完全检索而没有阻塞就会被执行?
类似于以下内容:1)请求进入主线程2)异步,非阻塞HTTP调用CouchDB.注册完成处理程序以处理来自CouchDB的响应3)主线程现在可以自由处理下一个请求4)来自CouchDB的HTTP响应到达某个点并且调用注册的处理程序来执行某些业务逻辑5)主线程继续只处理请求(对于不需要访问CouchDB的请求,可以非常快速地响应它们)
我从根本上误解了一些事情吗?是否可以在Java中执行此类操作?是AsyncHttpClient的答案吗?这个问题是相关的,但不确定自2011年以来情况是否发生了变化(使用Java AsyncHttpClient库执行异步连接?)
由于NodeJS运行事件循环,因此这种非阻塞的异步行为是标准的.您只需注册一个回调函数来处理收到的DB响应,并且事件循环在此期间只处理其他事情.
任何和所有的建议表示赞赏.
谢谢,康纳
我正在开发Java的团队项目.一个要求是我们动态填充实现特定接口的所有类的下拉菜单.编译后可以添加新类.为此,我们使用反射.
问题:我的系统上的所有下拉菜单都是空白的.我不能为我的生活弄清楚为什么他们没有人口.所有其他5名团队成员都在使用它们的系统.
我厌倦了不起作用的事情:
1)安装最新的eclipse(galileo)因为休息团队正在使用它
2)重新安装最新的java版本(jdk1.6.0-17和jre6)
3)检查PATH和JAVA_HOME变量
关于我还能尝试什么或者我做了什么的任何想法应该解决它而不是?这让我发疯了.
编辑:我应该更清楚我们正在团队中发展.我们使用SVN进行版本控制,我们都运行完全相同的源代码.我甚至尝试从SVN中检查出整个树的新副本,但是当我为系统工作时,我的系统反射也存在同样的问题.
团队创建了一个可执行的jar,除了我的以外,每个人的系统运行良好.除了反射位之外,一切都适合我.