我有Java Server Faces Web應用程序需要在網絡計算機上的桌面應用程序中調用方法。這臺機器將在特定的機器上執行一些邏輯。完成後,它應該調用Web應用程序上的方法來報告其狀態。 這兩種方法都是void
,但確實需要參數。Java EE,通信Web應用程序和桌面應用程序
什麼是最好的開發方式? 我已經考慮了一些選擇:
- 套接字:我讀過你不應該在Web應用程序中使用套接字多個帖子。
- Soap:我可以在Web應用程序上設置一個服務器,但不能在桌面應用程序上。
- JCA適配器:我對此沒有任何認識。
的WebApp
class WebAppClient {
public void start(String x, List<String> y) {
// Call DesktopServer.start(x, y);
}
}
interface WebAppServer {
public void reportBack(String info);
}
DesktopApp
class DesktopClient
public void reportBack(String info) {
// Call WebAppServer.reportBack(info);
}
}
interface DesktopServer {
public void start(String x, List<String> y);
}
無論您選擇哪種解決方案,它都必須通信並使用套接字來執行此操作。所以用socket編寫你自己的解決方案並不是一個壞主意,特別是你只需要在兩個方向上都有一條消息。 –
嗯,我怎麼讀過Stackoverflow上的多個帖子,聲明這不應該是要走的路?有沒有任何安全風險? – Aquillo
你只需要明白你在做什麼。當然,如果你直接從請求處理線程中打開很多套接字,然後等待一些消息進入套接字,那麼就會阻止線程被用於服務另一個HTTP請求,並且你可能會很快用完線程和一個完全沒有響應的web應用程序。OTOH,如果您使用單個專用線程來處理單個套接字通信,我不會看到有什麼不好的事情會發生。 –