RPC 的 GWT Servlet 模型是单线程模型,还是如何通过 GWT 实现高可用性?

     2023-02-16     58

关键词:

【中文标题】RPC 的 GWT Servlet 模型是单线程模型,还是如何通过 GWT 实现高可用性?【英文标题】:Is GWT Servlet model for RPC a single threaded model, or how to be Highly Available with GWT? 【发布时间】:2011-09-06 19:48:38 【问题描述】:

我需要实现一个包含在 Tomcat 实例中的高可用性服务。我正在使用带有 RPC 机制的普通 GWT 从我的客户端应用程序调用服务器。我创建的是每个远程服务中的 com.ha.keepAlive() 方法。如果一切正常,RPC 方法除了响应“0”之外什么都不做。目前,如果出现问题,我预计会出现异常。

我正在阅读Java Servlet Specification 3.0,我很担心。 servlet 可以返回 UnavailableException 或 ServletException,但 GWT 已经包装了 HttpServlet 以便吞下异常。我仍然可以从 GWT 获得异常,对于任何类型的异常,我都会假设“服务已关闭”,因为这不应该发生。

此外,如果 servlet 以某种方式崩溃,则 servlet 容器可能会重新启动 servlet,或者它可能有许多 servlet 实例。根据我的阅读(第 2.2 节),我发现通常只有一个实例:

对于不在分布式环境中托管的 servlet(默认),servlet 每个 servlet 声明容器必须只使用一个实例。但是,对于 servlet 实现 SingleThreadModel 接口,servlet 容器可以 实例化多个实例以处理繁重的请求负载并序列化请求 到一个特定的实例。

那么,我是否正确地通过在每个服务(servlet)中创建一个 GWT-RPC 方法来假设我是否遇到异常(或者在某些时候不是“0”)我需要重新启动我的 Web 应用程序容器?我特别担心 servlet 的多实例特性,它可能隐藏真实的服务可用性。

对不起,我不得不这么冗长。非常感谢任何有建议的人!

【问题讨论】:

【参考方案1】:

您不应该重新启动容器。异常没有任何意义 - 它可能是网络出现故障,您的应用程序输入错误(例如来自搜索引擎)等。所以不要对这些异常执行任何操作(除了向客户端返回错误代码并记录它)。

按照规范,一个 servlet 只有一个实例 - 该实例与许多调用 service(..) 方法的线程一起使用。这意味着您的 servlet 中不应包含任何实例变量,以使它们是线程安全的。单线程模型现已弃用。

【讨论】:

实际上,它是一个封闭的应用程序,只能通过 GWT 接口访问,所以任何异常都是不好的迹象。这是一个非时间紧迫的医院应用程序,用户已经收到错误消息。这是一个自动监控软件,它需要知道做某事是否有问题或派人过来。也许我的服务应该“询问”所有服务 servlet 是否一切正常?冒险的主题。

servlet 的 GWT RPC 服务分配异常

】servlet的GWTRPC服务分配异常【英文标题】:GWTRPCServiceAllocateexceptionforservlet【发布时间】:2013-04-0308:02:34【问题描述】:我正在尝试创建一个简单的RPC服务,该服务会出现以下错误消息:[tomcat:launch]Apr3,201312:50:38AMorg.apache.catalina.c... 查看详情

是否可以通过 GWT RPC Servlet 上传文件?

】是否可以通过GWTRPCServlet上传文件?【英文标题】:IsitpossibletouploadafileviaGWTRPCServlets?【发布时间】:2012-02-0613:05:36【问题描述】:是否可以使用Google的GWTRPC机制创建文件上传?现在我正在使用一个简单的HTTPServlet和一个从表单... 查看详情

GWT RPC 警告:servlet 有映射,但 web.xml 没有对应的映射

】GWTRPC警告:servlet有映射,但web.xml没有对应的映射【英文标题】:GWTRPCWarning:servlethasmapping,butweb.xmlhasnocorrespondingmapping【发布时间】:2011-03-3018:25:09【问题描述】:我在使用GWT-RPC时遇到了一个奇怪的问题。我设置了一个工作正... 查看详情

是否可以以编程方式更改 GWT RPC servlet 路径?

】是否可以以编程方式更改GWTRPCservlet路径?【英文标题】:IsitpossibletoprogrammaticallychangeGWTRPCservletpath?【发布时间】:2011-04-0514:38:52【问题描述】:从http://localhost:8080/myapp运行时,我的GWT应用程序运行良好。我需要在本质上是代... 查看详情

gwt javax.servlet.ServletContext 日志:调度传入 RPC 调用创建 mapdb db 时出现异常

】gwtjavax.servlet.ServletContext日志:调度传入RPC调用创建mapdbdb时出现异常【英文标题】:gwtjavax.servlet.ServletContextlog:ExceptionwhiledispatchingincomingRPCcallcreatingmapdbdb【发布时间】:2014-11-2700:16:47【问题描述】:您好,我使用GWT的MyWEbApp并... 查看详情

GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404

】GWTServlet错误com.google.gwt.user.client.rpc.StatusCodeException:Tomcat服务器上的404【英文标题】:GWTServleterrorcom.google.gwt.user.client.rpc.StatusCodeException:404onTomcatserver【发布时间】:2012-03-1320:30:06【问题描述】:1)在Mac上安装GWT和Eclipse 查看详情

GWT Guice + RPC 服务得到 404 Not Found

...404Notfound异常...我正在向GWTGuicewebapp添加一个非常简单的servlet...我正在使用RPC来实现我的servlet。**更新(我的更改仍然遇到以下相同的问题):我意识到我可能需要 查看详情

GWT:客户端过程和 rpc 请求总是被多次调用,具有多个线程 id

】GWT:客户端过程和rpc请求总是被多次调用,具有多个线程id【英文标题】:GWT:Clientprocedureandrpcrequestarealwayscalledseveraltimeswithmultiplethreadid【发布时间】:2020-12-1609:59:26【问题描述】:对于一些客户端程序,我实现了远程日志记录... 查看详情

GWT:分派传入 RPC 调用时出现异常

...目时遇到的异常。我正在使用HSQLDB和Eclipselink。SEVERE:javax.servlet.ServletContextlog:Exceptionwhiledispatchinginco 查看详情

GWT RPC:使用其他服务实现的方法失败

...服务时遇到错误。Eclipse控制台输出如下:SCHWERWIEGEND:javax.servlet.ServletContextlog:Exceptionwhiledispatchinginc 查看详情

gwt - 在继承的模块中访问 servlet 的问题

】gwt-在继承的模块中访问servlet的问题【英文标题】:gwt-problemaccessingservletininheritedmodule【发布时间】:2011-01-1918:12:58【问题描述】:我正在尝试将我的应用程序划分为模块,但我遇到了这个问题:我在一个名为“webvisualisation”... 查看详情

RPC 上的 GWT 序列化

...了大量博客,我也找不到解决此问题的方法。是的,我的模型(POJO)实现了Serializable(也尝试了IsSerializable)我之前在RPC上取得了成功,但我不知道为什么现在会出现此错误:com.google.gwt.user.client.rpc.StatusCodeEx 查看详情

如何使用 servlet 获取图像并使用 GWT Image 类显示它?

】如何使用servlet获取图像并使用GWTImage类显示它?【英文标题】:HowtogetimagewithservletanddisplayitusingGWTImageclass?【发布时间】:2011-06-2709:39:57【问题描述】:我将以下代码用作GWT-RPC的GWT服务器端类(servlet)的一部分。privatevoidgetImage()H... 查看详情

用于 RPC 调用的 Servlet 映射

】用于RPC调用的Servlet映射【英文标题】:ServletMappingforRPCCall【发布时间】:2013-12-0910:23:00【问题描述】:我对GWT编程很陌生,但我已经用Java编程了很长时间!我创建了一个带有RPC调用的小应用程序,但它不起作用。当我点击按... 查看详情

在 GWT RPC 进行时更新/刷新视图

...,我需要更新我的视图。这是我的情况,我必须向我的GWTservlet发送一些数据,然后在我的servlet中,我将它提供给服务器端组件(optaplanner求解器),它会运行一段时间。该组件对每个发布的非最 查看详情

为 Web 和 Android 服务的 AppEngine GWT-RPC 服务

...,当我为此开发Android客户端时,我是否需要一个精简的Servlet来为该客户端提供服务? 查看详情

GWT 单线程异步回调

】GWT单线程异步回调【英文标题】:GWTSinglethreadedasynccallbacks【发布时间】:2013-04-0419:16:00【问题描述】:rpc.call(mycallback);//subsequentcodeblock单线程异步回调如何工作?什么时候调用回调?后续代码块是否总是在回调被允许运行之... 查看详情

GWT 和 XSRF 保护

...XSRF攻击。如果我对GWT\'ssolution的理解正确-它提供了一个Servlet,您可以使用它在客户端(调用RPC端点时)生成令牌并在服务器端验证(当调用到达您的服务)。此解决方案是否仅适用于RPC调用?我们肯定需要它来覆盖所有用户生... 查看详情