如何调试在OSGi上运行的GWT应用程序?

时间:2010-06-17 10:09:16

标签: eclipse debugging gwt osgi pax-runner

我正在使用GWT开发Web UI。虽然我只使用小部件工作,但我可以使用Firefox扩展从Eclipse调试,但现在我正在将UI与其他OSGi包集成,我无法使用此解决方案。

为了部署GWT应用程序,我创建.war并使用BND将其转换为OSGi包。然后我使用Pax Runner和Pax Web启动包含所有捆绑包的OSGi容器,并且应用程序正常工作,但是当生成的javascript代码中的某些内容失败时,我没有任何正常的输出错误或调试工具。

有没有办法从OSGi的“调试模式”启动GWT应用程序?

在这种情况下可能有帮助的任何其他想法?

更新:是否可以使用com.google.gwt.dev.DevMode中的浏览器连接器实例化Activator或其部分?

2 个答案:

答案 0 :(得分:1)

我终于设法使用OSGi,GWT和可选的eclipse启动开发模式。解决方案在GWT开发模式的-noserver标志上,它不知道应用程序运行时代码的变化,但它可用于调试已编译的代码并接收异常跟踪。

我还设法在没有eclipse的情况下运行开发shell,但是如果你对这个解决方案不感兴趣,你可以直接跳转到eclipse集成部分。

没有Eclipse (只有例外,没有调试)

您需要了解以下信息:

  • 您的来源($SRC
  • 在哪里?
  • 你在哪里有你的GWT库($GWT_PATH),特别是gwt-user.jargwt-dev.jar
  • (可选)您的HTTP OSGi服务器为该应用程序提供服务的端口($PORT)。
  • 您应用的启动网址($URL
  • 包含应用程序的.gwt.xml文件的包($PACKAGE)。

然后你需要运行:

java -cp $SRC:$GWT_PATH/gwt-user.jar:$GWT_PATH/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port $PORT \
    -startupUrl $URL $PACKAGE

E.g:

java -cp src/:lib/gwt-2.0.3/gwt-user.jar:lib/gwt-2.0.3/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port 8080 \
    -startupUrl httplocalgui.html es.warp.samples.httplocalgui

最后你只需像往常一样部署应用程序,在我的例子中,我使用pax-runner和pax-web,使用默认端口8080。

使用Eclipse

  1. 打开项目的调试配置
  2. 转到“服务器”标签,取消选中“运行内置服务器”
  3. 转到“属性”选项卡并添加“-port 8080”(如果8080是Web容器使用的端口)。我认为没有内置服务器的这个参数仅用于创建开发模式生成的用于调用浏览器的URL(或者elipse用于生成可以在浏览器的地址栏中复制和粘贴的URL)。
  4. 部署您的应用程序。
  5. 从安装了GWT扩展程序的浏览器访问它(不要忘记添加?gwt.codesvr=127.0.0.1:9997

答案 1 :(得分:0)

我最近遇到了同样的问题,不幸的是我没有找到任何好的解决方案。

最终,我在客户端代码中创建了我正在使用的所有GWT服务的模拟实现。当我需要调试客户端代码时,我只是使用下面的OSGi切换到这些服务而不是真正的服务。然后在Eclipse中我可以在调试模式下运行GWT应用程序。这远非完美,需要对模拟进行一些工作,但它适用于我(至少现在)。