3

很抱歉,很长的帖子,但我在这里面临的问题对我来说非常重要,所以我们开始......

我有一个 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)。但无论如何,非常欢迎关于这两点中任何一点的帮助或建议。

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

4

2 回答 2

0

即使我部署到 Tomcat 时,我也总是使用 Google 插件 (GPE) 进行 GWT 开发,我只是在其中禁用了 GAE 选项。

也许,我不明白这个问题 - 但我在调试我在码头上运行的应用程序然后将应用程序传输到 Tomcat 时没有问题。有什么问题需要我学习吗?

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

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

JEE就是JEE,不管是Tomcat还是Jetty。我听说有些人对使用 Jetty 有偏见,比如喜欢星巴克而不是附近的咖啡馆。咖啡就是咖啡。

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

于 2011-11-27T05:47:05.340 回答
0

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

Window -> Show perspective -> Other -> Java
于 2013-06-01T18:12:02.387 回答