我有一个使用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. 小程序 - Servlet通信
- 2. WPF +在多个应用程序实例之间进行通信
- 3. Java小应用程序在tomcat服务器上与servlet通信
- 4. 是否有可能让我的应用程序与moodle进行通信?
- 5. UIWebView能与应用程序进行交互(通信)吗?
- 6. 使用OpenThread堆栈进行通信的示例应用程序
- 7. ios应用程序与C#程序进行通信
- 8. 发送JSON数据的Servlet通信应用程序例如
- 9. 通过套接字与Windows应用程序进行Web应用程序通信
- 10. 通过Wifi将Android应用程序与PC应用程序进行通信
- 11. 与来自MVC应用程序的线程进行通信?
- 12. JApplet Form如何与Servlet进行通信?
- 13. 应用程序的两个实例如何在Java中进行通信?
- 14. 实例如何与其实例化器进行通信?
- 15. 通过C#应用程序与Web进行通信?
- 16. 通过USB与Android应用程序进行通信
- 17. 用于与arduino进行蓝牙通信的Android应用程序
- 18. 在WinForms应用程序运行时与其进行通信
- 19. PhoneGap应用程序,与远程数据库进行通信
- 20. 如何与来自JAVA的SAP应用程序进行通信
- 21. 与MySql进行c#.net应用程序通信的问题
- 22. Java小程序与Rails应用程序的通信
- 23. Adobe AIR桌面应用程序与处理应用程序进行通信
- 24. 获取iPhone应用程序与Adobe Air桌面应用程序进行通信
- 25. java应用程序如何与android应用程序进行通信?
- 26. 在应用程序中与Elastic进行通信的最佳实践
- 27. vb.net - 我如何有选择地与程序的两个实例进行通信?
- 28. 小型桌面应用程序如何与ASP.NET网页进行通信?
- 29. 通过串行端口进行通信的Web应用程序
- 30. GTK应用程序主要用于远程实例通信
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