2009-08-20 76 views
1

我正在編寫一個程序,啓動另一個運行某些代碼的java進程。 有沒有什麼辦法可以與那個進程「交談」來調用正在運行的類的方法?訪問其他Java進程

回答

7

你將不得不使用某種形式的遠程處理。那可能是:

  • RMI; Web服務(JAX-WS,Spring Web服務等);
  • 插座;
  • 嵌入式Web容器;
1

他們將能夠通過管道或插座進行通信。您可以通過它創建自己的通信協議,或者使用類似RMI的東西。

0

RMI是一種簡單的Java遠程技術。它本身並不能解決在大規模客戶端和服務器方案時傾向於出現的問題,例如發生錯誤時的故障轉移。

因此,當需要一些更強的東西時,通常的模式是在服務器端使用一些「App Server」技術。您可以使用諸如EJB 3或Spring之類的框架快速打開可遠程訪問的服務,也可以使用JMS等技術。

我的推薦是咬緊牙關,立即超越RMI,最近App Server和框架的成熟以及低成本和免費App Server的可用性使得入門成本相當低。

0

另一種方法是Jini

0

有一整套解決方案稱爲IPC,即進程間通信。這些範圍從共享內存和管道到網絡通信和遠程過程框架。在Java中,你有各種各樣的解決方案。如果您已經熟悉網絡,則可以通過這種方式傳遞消息,否則您可能需要設置異步消息隊列或管道,您可能會發現共享內存容易出現錯誤,並且像JINI這樣的遠程過程太複雜而難以設置並保持。

0

另一個解決方案,雖然不是那麼簡單,但是是JMS。如果通信的本質主要是傳遞信息或小物體,這可能是有用的。