如何将Eclipse GWT / GAE应用程序转换为Eclipse Tomcat / mySQL应用程序?

时间:2010-05-15 21:46:05

标签: google-app-engine tomcat gwt datanucleus

很抱歉提前发了很长的帖子,但我面临的问题对我来说非常重要,所以我们走了......

我有一个使用GAE的Eclipse GWT(2.0)Web应用程序,并与其数据存储区进行交易。 另一方面,我想确保我还可以在除Google App Engine之外的其他基础架构上部署此Web应用程序。因此,我想使用另一个servlet容器(Tomcat 6)和另一个数据存储区(mySQL或MSSQL或任何其他数据存储区来调试我的Web应用程序,现在它并不重要。)

为了能够使用Tomcat调试Eclipse Web应用程序,它必须携带 Dynamic Web Project 方面。如果没有,那么我在服务器中添加到Eclipse的新服务器拒绝在其支持的应用程序列表中选择我的GWT模块。而且不仅GWT Web Apps不支持它,而且它们根本不允许改变项目的方面! 但是,我发现在.project文件中添加少量相关标签可以使其符合Eclipse标准,以允许添加新的项目方面。以下是我使用的标签:

<nature>org.eclipse.jdt.core.javanature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.google.appengine.eclipse.core.gaeNature</nature>

所以我这样做了,我可以将项目“转”为Eclipse的动态Web项目,并通过这样做使其符合被添加到由服务器中的Tomcat 6处理的模块列表中。 这正是我想要的,我现在可以在Eclipse中随意切换两个调试配置,以便在App Engine或Tomcat上调试我的GWT Web应用程序。

问题是添加Dynamic Web Project构面会干扰DataNucleus增强器。出于某种原因,一旦项目成为动态Web项目,似乎再也不会调用增强器,并且我收到此错误消息,指出某些类尚未得到增强。使用Google ... App Engine ... ORM类或检查/取消选中Builders中的Enhancer不会改变任何内容。请注意,增强器问题会影响调试配置:Tomcat以及App Engine。

所以我想到了两个解决方案。

(1)禁用Google插件的DataNucleus增强器并自行执行增强功能。因此,我按照他们关于Eclipse插件的指南安装了DataNucleus插件来配置项目特定的增强功能。 他们说,通过右键单击项目,可以激活给定项目文件的DataNucleus支持。不幸的是,在为Eclipse安装最新版本的插件后,没有出现这样的右键菜单!因此,我没有办法告诉他们的插件我想激活给定项目的增强功能!这有多令人沮丧? (我卸载/重新安装了插件,让我们执行大量待定的Eclipse更新......但仍然没有右键菜单。) 有谁知道激活DataNucleus增强的另一种方法?现在,即使有一个漂亮的手工技巧,我也会很高兴,因为能够在Eclipse中执行这种跨servlet容器调试非常关键。

(2)使用官方GWT网站http://code.google.com/webtoolkit/doc/latest/FAQ_DebuggingAndCompiling.html#How_do_I_use_my_own_server_in_hosted_mode_instead_of_GWT%27s的提示 好的,但现在让我们说它节省了我的生命但是......它需要托管模式,因此不允许使用GWT 2.0。 因此,关于这种解决方法,我想知道是否有办法在GWT 2.0下做类似的事情?

将GWT Web App转变为Eclipse动态Web项目将是实现我的应用程序开发的理想解决方案。正如我上面所说的那样,从App Engine切换到Tomcat是非常非常方便,反之亦然。所以我赞成解决方法(1)而不是解决方法(2)。但无论如何,关于这两点中的任何一点的一些帮助或建议将非常受欢迎。

感谢您阅读这篇很长的帖子!

2 个答案:

答案 0 :(得分:0)

我总是使用谷歌插件(GPE)进行GWT开发,即使我部署到Tomcat,我只是禁用了GAE选项。

也许,我不明白这个问题 - 但我在调试我在jetty上运行的应用程序然后将应用程序转移到Tomcat时没有遇到任何问题。我需要学习哪些问题?

事实上,即使我的应用程序是普通的jsp或servlet,没有任何GWT,我仍然使用GPE。但是如果没有启用GWT或GAE,GPE将拒绝运行码头。所以我只是创建一个虚拟GWT应用程序。在我这些年里,我从来不必担心码头和tomcat之间的差异。如果我不得不写一个应用程序,我必须利用tomcat在码头上的差异,我会认为自己是一个糟糕的程序员。

我看到将JEE服务器推送到外部服务器的唯一原因是在tomcat上运行时分析应用程序。

JEE是JEE,无论是Tomcat还是Jetty。我听说有些人反对使用Jetty,比如喜欢星巴克而不是邻居咖啡馆。咖啡是咖啡。

我不明白。也许你可以写另一篇论文来解释为什么你不能在jetty上调试然后在tomcat上部署。

答案 1 :(得分:0)

我遇到了完全相同的问题,我可以编辑项目的属性,并在上下文中查看datanucleus菜单,以便插件绝对正常工作。我的问题是我在eclipse中使用了“Java EE”视角。 (朱诺顺便说一句)。我切换到“Java”上下文,我的datanucleus菜单又回来了,我能够启用支持并启用自动增强功能。

Window -> Show perspective -> Other -> Java