2013-03-02 49 views
0

之间共享RemoteService实现我一直在苦苦挣扎了一会儿,试图重新使用一个GWT项目的实施RemoteService进入一个新的。 以下是大图:2个GWT项目

我有一个正在运行的smartgwt-mobile项目,现在我们决定使用普通的smart-gwt来制作同一个项目的桌面版本。这个新应用程序的GUI显然不同,但服务器端代码将完全相同。

我试图通过链接新源结构中的其他项目中的包文件夹(我正在使用Eclipse与GWT插件)或通过添加新的源文件夹来“借用”RemoteService接口,其异步副本和整个服务器包借用的代码路径作为构建路径的过滤源文件夹,虽然这符合Eclipse依赖检查程序,但GWT编译器无法找到借用代码,这表明我需要在模块.gwt.xml文件中添加“inherit”声明。

当我做到这一点,重新编译它现在预计在借用代码是不能接受的,因为它会影响其他项目的根第二模块.gwt.xml文件。

我一直在阅读了GWT模块文档上,但我看不出如何实现这样的计划。实际上我不可能做到我想要达到的目标。

我愿意,如果能解决问题,创建第三个项目,只是定义,然后将移动和桌面SmartGWT的项目都被继承了GWT RemoteService模块。

是否有人对如何解决这个问题的建议?

回答

1

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

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

而且它总是更好地维护单独的DAO layer以将您的data暴露给services(ex.webservices)

+0

感谢您的输入。我曾希望有一个简单的方法可以在项目之间共享代码,但由于没有其他建议,我将创建一个由两个GWT项目共享的RemoteService项目。 – Gert 2013-03-03 09:00:18

+0

这对代码维护也会更好,在较小的块Upvote中也可以标记为答案,如果您觉得有用。 – 2013-03-03 11:14:42

+0

你基本上通过引用我自己的帖子回答。虽然赞赏我不认为这是我的问题的答案,这是关于链接在现有的RemoteService代码。我显然知道我可以创建一个单独的项目,但对于这种特殊情况,我试图避免再创建一个额外的项目。缺乏其他建议表明我没有简单的方法来做到这一点。我会upvote你的答案。 – Gert 2013-03-03 12:49:37

0

所以这是我如何解决这个问题。 链接到现有的GWT项目源文件夹的问题是,GWT编译器总是(至少看起来是这样的)期望找到GWT模块定义文件(.gwt.xml)。即使Eclipse依赖关系解析器对它没有问题,我也无法以源文件夹的方式链接GWT编译器。

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

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

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

瞧:这是所有有给它。如果您选择“GWT编译项目”,它会编译并在开发模式下运行而不会出现警告。

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

最后,这并不像我想象的那么痛苦,所以我推荐这种方法。