在2个GWT项目之间共享RemoteService实现

时间:2013-03-02 10:03:15

标签: gwt smartgwt

我现在一直在努力尝试将RemoteService实现从一个GWT项目重用到一个新项目中。 这是大局:

我有一个有效的smartgwt-mobile项目,我们现在决定使用常规的smart-gwt,我们想要同一个项目的桌面版。这个新应用程序的GUI显然会有所不同,但服务器端代码将完全相同。

我试图通过链接新源结构中的另一个项目中的包文件夹(我使用带有GWT插件的Eclipse)或者通过添加“借用”RemoteService接口,其异步对应和整个服务器包。借用代码路径作为构建路径的过滤源文件夹,虽然这满足了Eclipse依赖检查器,但GWT编译器无法找到借用的代码,表明我需要在模块.gwt.xml文件中添加“inherit”声明。

当我这样做并重新编译时,现在需要在借用代码的根目录中使用第二个模块.gwt.xml文件,这是不可接受的,因为它会影响另一个项目。

我一直在阅读GWT模块文档但我没有看到如何实现这样的方案。实际上,我可能无法做到我想要实现的目标。

如果能解决问题,我愿意创建第三个项目,该项目只是定义一个GWT RemoteService模块,然后由移动和桌面smartgwt项目继承。

有人有关于如何解决这个问题的建议吗?

2 个答案:

答案 0 :(得分:1)

我同意"third project that simply defines a GWT RemoteService module that then will be inherited by both the mobile and desktop smartgwt projects"

为什么因为,我已经这样做了。是的,显然是一个DAO项目(数据库层),它有我所有的数据库业务逻辑方法。

最好保持单独的DAO layerdata展示给services(ex.webservices)

答案 1 :(得分:0)

所以这就是我如何解决这个问题。 链接到现有GWT项目源文件夹的问题是GWT编译器始终(至少它看起来像这样)期望找到GWT模块定义文件(.gwt.xml)。我无法在源文件夹中链接GWT编译器很满意,即使Eclipse依赖解析器没有问题。

所以我使用GWT Eclipse插件创建了第三个项目。我取消选中“创建示例代码”选项,因此我最终得到了一个空的GWT项目。然后我选择了“添加”> '新'> '其他'> 'Google'> '模块',输入模块名称,例如'myModule',一个包名,例如'com.myCompany.myModule'并点击'完成'。 GWT New Module向导创建了一个包和一个名为'com.myCompany.myModule.client'的子包,我自己创建了'com.myCompany.myModule.server'。

现在我复制了RemoteService和相关类(实现和异步版本),以及RemoteService代码从我想借用的原始项目中调用的所有服务器端代码,并将其粘贴到新项目中。很快我就满足了所有依赖项,并在新的Smart-GWT Web应用程序项目上打开了Build Path对话框,并在项目选项卡中包含了GWT RemoteService Module Project。最后要做的是在.gwt.xml文件中添加一个inherit元素:

<inherits name='com.myCompany.myModule.MyModule'/>

Voilá:这就是它的全部。如果选择“GWT Compile Project”,它将以开发模式编译并运行,不会发出警告。

我现在仍然需要从第一个项目中删除共享代码并从模块继承,bat只是重复我已经做过的事情。

最后,这比我想象的要少得多,所以我推荐这种方法。