Gwt ServiceImpl类中的服务器端侦听器,在每次进行RPC调用时激发

Gwt ServiceImpl类中的服务器端侦听器,在每次进行RPC调用时激发,gwt,servlets,listener,gwt-rpc,Gwt,Servlets,Listener,Gwt Rpc,我需要在每次使用RPC机制调用服务方法时验证会话是否处于活动状态。有没有一种方法可以让我在每个RemoteServiceServlet子类中执行一次,比如使用一个方法调用后就会触发的侦听器接口?您应该使用一个servlet过滤器,它可以在session到达servlet之前验证您的session 检查问题中的示例。 这里有一个更全面的例子 通过添加更多的过滤器映射节,您可以根据需要将servlet过滤器添加到任意多的服务中 <!-- Example servlet loaded int

我需要在每次使用RPC机制调用服务方法时验证会话是否处于活动状态。有没有一种方法可以让我在每个
RemoteServiceServlet
子类中执行一次,比如使用一个方法调用后就会触发的侦听器接口?

您应该使用一个servlet过滤器,它可以在session到达servlet之前验证您的session

检查问题中的示例。

这里有一个更全面的例子

通过添加更多的过滤器映射节,您可以根据需要将servlet过滤器添加到任意多的服务中

<!-- Example servlet loaded into servlet container -->
<filter>
   <description>Requires user to log in as a member</description>
    <filter-name>SecurityFilter</filter-name>
    <filter-class>some.package.SecurityFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>/com.example.foo.Foo/myService</url-pattern>
</filter-mapping>


<servlet>
  <servlet-name>myServiceImpl</servlet-name>
  <servlet-class>
    com.example.foo.server.MyServiceImpl
  </servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>myServiceImpl</servlet-name>
  <url-pattern>/com.example.foo.Foo/myService</url-pattern>
</servlet-mapping>

要求用户以成员身份登录
安全过滤器
some.package.SecurityFilter
安全过滤器
/com.example.foo.foo/myService
myServiceImpl
com.example.foo.server.MyServiceImpl
myServiceImpl
/com.example.foo.foo/myService
对于那些使用,我喜欢使用,所以我有一些自定义注释,如:

@Override
@Authenticated
public void someRPCCall(...) {
}
因此,我根据调用使用了几个自定义注释:

@Override
@Authenticated
@Authorizated(accessRolRequired = AccessRol.Editor)
@Transactional
@LogThis
public Boolean someEditorMethod(...)

拦截这些调用以进行几次检查。

我是否使用GWT-RPC机制并不重要?不,您可以将其与GWT-RPC或请求工厂一起使用。为了更好地查看配置,我添加了一个web.xml示例。是否有任何方法可以向客户端发送自定义错误或警报消息?因为在该示例中,它显示了
resp.senderro(HttpServletResponse.SC_UNAUTHORIZED)这只是一个普通的消息。我想更具体地告诉用户我要说什么。我没有必要这么做,但有几点建议。1您可以尝试将自己的自定义异常与自定义消息一起从筛选器中抛出。在本例中,您将扩展ServletException并将其返回给客户端。您可以尝试的第二件事是使用printwriter发送消息和错误代码。sendError只是将错误代码设置为401,但是您可以使用resp.getWriter()添加文本响应。我不知道gwt rpc机制在发送到异步回调时如何解析消息。让我知道进展如何。