很抱歉,很长的帖子,但我在这里面临的问题对我来说非常重要,所以我们开始......
我有一个 Eclipse GWT (2.0) Web 应用程序,它使用 GAE 并与其数据存储进行交易。另一方面,我想确保我也可以将此 Web 应用程序部署在 Google App Engine 之外的另一个基础架构上。因此,我想使用另一个 servlet 容器(Tomcat 6)和另一个数据存储(mySQL 或 MSSQL 或任何其他,现在这并不重要)来调试我的 Web 应用程序。
为了能够使用 Tomcat 调试 Eclipse Web 应用程序,它必须带有动态 Web 项目方面。如果没有,那么我在服务器中添加到 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 应用程序。
问题是添加动态 Web 项目方面会干扰 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 应用程序转变为 Eclipse 动态 Web 项目将是追求我的应用程序开发的理想解决方案。正如我上面所说的那样,从 App Engine 切换到 Tomcat非常方便,反之亦然。所以我更喜欢解决方法(1)而不是解决方法(2)。但无论如何,非常欢迎关于这两点中任何一点的帮助或建议。
感谢您阅读这篇很长的帖子!