【问题标题】:How to share a GWT RPC RemoteServiceServlet among multiple client modules / apps如何在多个客户端模块/应用程序之间共享 GWT RPC RemoteServiceServlet
【发布时间】:2012-03-15 19:58:32
【问题描述】:

我有几个 GWT 模块和 Web 应用程序在 Jetty 中运行。他们每个人都想使用我的LoginService RPC 接口,所以我把这个接口和它的servlet 实现放在一个通用模块中。我从我的根 Web 上下文中提供 servlet (LoginServiceImpl),web.xml 在 url "/loginService" 处公开它。在另一个 GWT 模块中,要使用此服务,我必须设置入口点,如下所示...

 LoginServiceAsync loginService = GWT.create(LoginService.class);
 ServiceDefTarget t = (ServiceDefTarget)loginService;
 t.setServiceEntryPoint("/loginService");

现在,尝试使用 loginService 的模块称为 discussions,我在服务器上收到此错误。

ERROR: The serialization policy file  
'/discussions/discussions/7B344C69AD493C1EC707EC98FE148AA0.gwt.rpc' was not found; 
did you forget to include it in this deployment?

所以 servlet 报告了一个提到客户端(讨论模块)的错误。我猜 RPC 管道从客户端传递了这个 .rpc 文件的名称,而 servlet 现在正在寻找它。 (?) 作为实验,我将讨论模块中的 *.gwt.rpc 文件复制到了根 Web 上下文中,以便 servlet 可以找到它们。这确实阻止了错误。但我仍然收到另一个错误:

com.google.gwt.user.client.rpc.SerializationException: Type      
'mystuff.web.shared.User' was not assignable to 
'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field  
serializer. For security purposes, this type will not be serialized.: ...

这个类是可序列化的;它以前在其他模块中工作过,所以现在我迷路了。

在多个客户端模块中使用LoginService 的正确方法是什么?

更新:

此错误在托管开发模式中出现,并在完全编译后消失。也许这与 gwt serialization policy hosted mode out of sync 有关。如果我能更好地重现问题,我会再次更新。

【问题讨论】:

    标签: gwt gwt-rpc


    【解决方案1】:

    查看我的回答here。简短的回答是:您需要在编译时将 mystuff.web.shared.Users 源代码提供给您的 discussions 模块。

    【讨论】:

    • 我不认为是这样。 User 类已经可用,与LoginService 类在同一个包中,它肯定会被选中,因为该服务正在被调用。此外,此错误发生在服务器端,而不是客户端。
    • 您似乎在谈论运行时,但是源代码在编译时可用吗?这意味着它的路径需要在您的“讨论”gwt.xml 文件中作为源路径列出,并且必须使用您用于构建讨论模块的任何机制使其可用。
    • 简短的回答是肯定的,它在编译时可用。我在 devmode 下运行,所以它有点不同,但公共模块在 Discussions.gwt.xml 中作为 inherits 元素。然后 Common.gwt.xml 有正确的路径作为源路径。然后将这个相同的源路径添加到通常的ant devmode 目标的类路径中。这已经工作了数周。改变的是我移动了服务的服务器端实现。
    • 这可能只发生在开发模式下。更新了问题。我需要努力更好地重现它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2010-11-05
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    相关资源
    最近更新 更多