Agile
-
RMI JDK6比JDK5强的地方 - [自写]
2008-01-03
在我们的项目中,RMI应用比较多,RMI远程调用也比较多,我挺喜欢RMI这种RPC方式:)
前几天在做项目的升级改造,测试的时候在RMI Server报出类似以下的异常:
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
.....
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
......
at javaapplication3.RmiHelloClient.main(RmiHelloClient.java:28)
当时很奇怪怎么会有 java.util.concurrent这个包中的类被用到,想了一下认为在JDK6中应该是用到了线程池,不过没有确认。今天和同事讨论了一会儿RMI方面的问题,弄得我对这个问题很好奇,想弄明白 了
下载了jdk6和jdk5的源代码中,在6中使用了concurrent中的线程池来执行请求,而jdk5中还是每个请求由一个新的线程来完成请求。
jdk6的RMI在这方面做得比jdk5要好,不过要是能支持“长连接“就更好了,我看源代码中的实现好像没有实现长连接,留待今后再学习。
随机文章:
HashMap.get() can cause an infinite loop! 2008-07-06Apache MINA竟然源自Netty2 2008-03-05epoll selector 2008-01-18A hash set puzzler 2007-12-24在Linux下重新安装Netbeans6.0 2007-12-23
收藏到:Del.icio.us






