草庐IT

Java RMI tcp 连接内存问题

我有一个可以在探查器中找到的问题,但我不知道如何解决它。加载应用程序后,我得到这个锯齿波模式,程序空闲但消耗内存,如您在此处看到的。当我检查采样器线程内存分配时,我看到RMITCP连接到我的eth0(172.16.20.51)以每秒半兆字节(413,213)的速度消耗内存,这导致生产记录“停止世界”GC:-(我无法追踪这个问题的原因,因为我不知道它是哪个线程的哪个端口,另一方面我试图用-com.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false标志,但没有帮助。任何想法将

java rmi -Djava.rmi.server.hostname=localhost 仍然打开一个监听 0.0.0.0 的套接字

我使用-Djava.rmi.server.hostname=localhost选项让rmi只监听本地主机,但netstat显示套接字正在监听0.0.0.0.奇怪的是,RMIRenewClean线程显示它正在使用本地主机。例如。RMIRenewClean-[localhost:59357]我假设如果我设置-Djava.rmi.server.hostname=localhost它应该只监听127.0.0.1我是不是误解了java.rmi.server.hostname控制的是什么? 最佳答案 IassumedthatifIset-Dja

java - 最高效 - 性能明智 - 用于 JVM 间通信

我有一个Java应用程序需要不同进程之间的通信。进程可以运行在相同的JVM或不同的JVM中,但运行在同一台机器上。我的应用程序需要向另一个进程(相同或不同的JVM)提交“消息”,但忘记了它。类似于IBM“MQ”之类的消息队列,但是简单,并且只使用内存,没有硬盘的IO以提高性能。我不确定性能规范的最佳方法是什么。我想知道RMI在性能方面是否高效,我认为它需要一些开销。使用本地主机的TCP/IP套接字怎么样?还有什么想法吗? 最佳答案 IwonderifRMIisefficientintermsofPerformance,Ithinki

java - 为什么我应该使用 JMS 而不是 RMI+Queue?

目前我正在使用RMI或hessianlibrary在我的服务器和客户端之间进行通信(通过LinkedBlockingQueue)。现在我读到了JMS这也可以用在这个领域。这个对吗?如果是,您介意给我一个简单的优点/缺点列表,因为它似乎是一个相当复杂且“成熟的企业”领域。有什么好处?与RMI+Queue相比性能如何?JMS能打败RMI+Queue吗?PS:我知道有similarquestions,但我希望JMS与RMI+Queue相比。 最佳答案 一个简化的比较是(不是特定于JMS,更像是与一般MQ的比较)...自动重试如果您是对服务

java - 从纯客户端调用远程 EJB(RMI over IIOP)时如何传播 JAAS Subject

我正在测试JAASSubject的传播用customPrincipal从运行在原始Java运行时上的独立EJB客户端到JavaEE服务器。我同时针对JBoss和WebSphere实现。根据thisforumthread我曾预计它会很容易地与JBoss一起工作。这是我的EJB客户端代码片段:Subjectsubject=newSubject();PrincipalmyPrincipal=newMyPrincipal("meImyself");subject.getPrincipals().add(myPrincipal);PrivilegedExceptionActionaction=n

java - RMI 服务器自行关闭

我正在编写一个使用RMI进行通信的Java客户端-服务器应用程序。我的问题是,出于某种原因,RMI服务器自行关闭,没有任何异常或错误。我正在使用Netbeans,我运行了一个配置文件来查看线程。您可以在附图中看到应用程序应该在GC守护进程和RMIReaper线程结束时完成执行的时间点。然而,即使在应用程序结束后,RMITCPAccept-1099线程仍在运行。更让我困惑的是,在信息消息弹出后(你可以在屏幕截图中看到)告诉我服务器已停止,图中的线程继续更新,所以我再次尝试与客户端连接.虽然它失败了,但我可以看到正在创建一个新的RMI线程(连接18)。我不知道如何调试这个问题,我无法弄清楚

java - 是否可以在 RMI 中通过引用传递?

我阅读了各种关于使用RMI传递变量的文章。有人说在RMI中不可能通过引用传递变量。例如:thisone和thisone虽然其他人说这是可能的。例如。:thisone,thisone和thisone谁能解决这个问题?:) 最佳答案 重要说明:如果通过引用传递意味着在方法内修改参数值并在调用者中更改原始变量,则不能。如果您想要做的是传递对对象的引用的副本,以允许该方法与您的某个对象交互...是的,您可以。答案探讨了第二个选项。是的。但它必须是一个RMI对象。在这种情况下,RMIstub将通过副本传递。RMI以两种方式传递参数和返回值:复

java - 如何用 Java RMI 实现观察者模式?

我有一个客户端在服务器上启动一个长时间运行的进程。每隔一段时间,我想向用户展示后台发生的事情。最简单的方法是轮询服务器,但我想知道是否没有办法为此实现观察者模式。不幸的是,我正在使用RMI与服务器对话,我担心我必须为此将我的客户端变成RMI服务器。还有其他我想念的方法吗? 最佳答案 http://sites.google.com/site/jamespandavan/Home/java/sample-remote-observer-based-on-rmi 关于java-如何用JavaR

Java RMI 连接异常 : Connection refused to host/timeout

我正在开发一个RMI命令行游戏,但是每当我尝试使用我的服务时,我都会收到这样的错误:java.rmi.ConnectException:Connectionrefusedtohost:192.168.56.1;nestedexceptionis:java.net.ConnectException:Connectiontimedout:connect这是我的Server的主类:publicclassRMIWar{publicstaticvoidmain(String[]args)throwsRemoteException,MalformedURLException{try{Control

java - RMI 线程阻止 JVM 在 main() 完成后退出

长话短说,在我的应用程序不再需要RMI后,我无法关闭几个JavaRMI的非守护线程。这可以防止JVM在main()完成时退出。我知道导出UnicastRemoteObject会导致RMI保持线程打开,直到您成功调用UnicastRemoteObject.unexportObject(Objecto,booleanforce)。下面是一个示例(无需修改即可运行,JVM将正常退出-删除对unexportObject的调用,JVM将永远不会退出):importjava.rmi.registry.LocateRegistry;importjava.rmi.registry.Registry;i