我有一個使用Http(不是套接字)與servlet通信的小程序。目前,小應用程序的每個實例(即,當每個小應用程序由不同計算機上的不同客戶端運行時),所有實例都與相同的小服務程序通信。我想要的是,小程序的每個實例都與相同的servlet的不同實例進行通信。這可能嗎?小應用程序能否與servlet的實例進行通信
回答
您不希望在webapp的一生中使用相同servlet的實例。通常的做法是使用HttpSession
來區分客戶端。您需要將HttpSession#getId()
傳遞作爲參數傳遞給小程序的問題:
<param name="jsessionid" value="${pageContext.session.id}">
然後,在小程序連接的Servlet如下:
String jsessionid = getParameter("jsessionid");
URL servlet = new URL(getCodeBase(), "servleturl;jsessionid=" + jsessionid);
URLConnection connection = servlet.openConnection();
// ...
這裏servleturl
顯然應該與servlet的url-pattern
在web.xml
。您也可以使用URLConnection.setRequestProperty()
來設置Cookie
請求標頭。
最後,在Servlet中,獲得和存儲客戶端專用數據,請執行以下操作:
// Store:
request.getSession().setAttribute("data", data);
// Get:
Data data = (Data) request.getSession().getAttribute("data");
希望這有助於。
謝謝,你的答案類似於rsp,但更詳細。然而,這個問題是一個子問題:現在的問題是現在在這個環節,以防有人需要更好地理解問題。 http://stackoverflow.com/questions/2567377/how-to-initiate-chatting-between-two-clients-and-two-clients-only-using-applets – mithun1538 2010-04-02 15:14:34
通常的方式來處理實例的具體行動就是有,不是由具有存儲在servlet本身的信息存儲在由servlet容器提供會話範圍的信息。
對於它的工作,你的applet必須正確發送,由Web容器內提供或者小程序必須要求在servlet內部的實例特定URL餅乾或JSESSIONID屬性。
我建議你用Servlet API的規範進一步瞭解,以瞭解更多關於什麼是提供給您。
另外請注意,某些應用服務器支持的「客戶」,這是具有應用服務器代碼內直接訪問與應用服務器提供的代碼中調用程序的概念。實際的通信是由applcation服務器提供的庫處理的,所以這很簡單。 Glassfish和Trifork可以做到這一點。
- 1. WPF +在多個應用程序實例之間進行通信
- 2. 使用OpenThread堆棧進行通信的示例應用程序
- 3. 通過Wifi將Android應用程序與PC應用程序進行通信
- 4. 應用程序的兩個實例如何在Java中進行通信?
- 5. 通過C#應用程序與Web進行通信?
- 6. 用於與arduino進行藍牙通信的Android應用程序
- 7. 在WinForms應用程序運行時與其進行通信
- 8. Java小程序與Rails應用程序的通信
- 9. 獲取iPhone應用程序與Adobe Air桌面應用程序進行通信
- 10. 通過串行端口進行通信的Web應用程序
- 11. Android:如何與Windows桌面應用程序進行通信?
- 12. WinForm應用程序與ASP.NET Mvc或WebService進行通信
- 13. 控制檯應用程序與Windows服務進行通信
- 14. 獲取網頁與C++應用程序進行通信
- 15. 如何從.Net Web應用程序與Outlook進行通信
- 16. 通過RPC從Java應用程序與Windows進程通信
- 17. 黑莓小程序與後臺服務器進行通信
- 18. 是否有可能與Java或Python中的應用程序與WCF TCP服務進行通信?
- 19. 在PC上與Java程序進行通信的Android應用程序
- 20. 是否可以通過subprocess.Popen與子子進程進行通信?
- 21. 獲取GWT應用程序與本地客戶端進程進行通信
- 22. winforms應用程序多個實例之間的通信
- 23. 使用應用程序的多個實例的性能改進
- 24. 我的進程的並行實例數(應用程序)
- 25. 使用JCIFS與遠程Windows實例進行通信時獲取nca_proto_error/DCERPC_FAULT_PROTO_ERROR
- 26. 非應用程序與NFC的通信
- 27. 64位應用程序與32位進程通信
- 28. 大多數iPhone應用程序是否通過網絡服務進行通信?
- 29. android服務與其他類實例進行通信
- 30. 如何從私有云與AWS EC2實例進行通信?
servlet容器很可能會對所有請求使用相同的實例,或者至少在不顯示的情況下最不明顯。什麼在推動對不同實例的需求? – 2010-04-02 12:09:40
我正在嘗試實現聊天服務器。我有一個廣播所有代碼,我想用它來在兩個客戶端之間進行廣播。因此,我在想的是我創建了一個包含廣播所有代碼的servlet的新實例,並要求兩個applet只使用該實例來模擬「聊天」。這樣,2個客戶端組將使用同一個servlet實例。 – mithun1538 2010-04-02 12:28:56
真正的問題是現在在這個環節,以防有人需要更好地理解問題。 http://stackoverflow.com/questions/2567377/how-to-initiate-chatting-between-two-clients-and-two-clients-only-using-applets – mithun1538 2010-04-02 15:15:06