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

发布于 2024-09-06 04:17:53 字数 519 浏览 6 评论 0原文

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

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

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

在这种情况下还有其他可以帮助的想法吗?

更新:是否可以通过 Activatorcom.google.gwt.dev.DevMode 或其部分>?

I'm developing a web UI using GWT. While working only with the widgets I could debug from Eclipse using the Firefox extension, but now that I'm integrating the UI with other OSGi bundles I cannot use this solution.

For deploying the GWT application I create the .war and convert it to an OSGi bundle using BND. Then I launch the OSGi container with all the bundles using Pax Runner and Pax Web and the application works correctly, but when something fails in the generated javascript code I don't have any decent output error or debugging facility.

Is there any way to launch the GWT application in "debug mode" from OSGi?

Any other idea that could help in this scenario?

Update: Could it be possible to instantiate com.google.gwt.dev.DevMode or its part with the browser connector from the Activator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

奢欲 2024-09-13 04:17:53

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

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

没有 Eclipse(仅例外,无调试)

您需要知道以下信息:

  • 您的源代码在哪里 ($SRC)
  • 您的 GWT 库在哪里 (< code>$GWT_PATH),特别是 gwt-user.jargwt-dev.jar
  • (可选)HTTP OSGi 服务器为应用程序提供服务的端口 ($PORT)。
  • 应用程序的启动 url ($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

例如:

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

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

使用 Eclipse

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

I've finally managed to launch development mode using OSGi, GWT and optionally eclipse. The solution was on the -noserver flag of the GWT dev mode, it's not aware of the changes in code while the application is running, but it can be used for debugging the compiled code and to receive the exception traces.

I also managed to run the development shell without eclipse, but if you are not interested on this solution you can directly jump to the eclipse integration section.

Without Eclipse (only exceptions, no debug)

You need to know the following information:

  • Where do you have your source ($SRC)
  • Where do you have your GWT libraries ($GWT_PATH), specially gwt-user.jar and gwt-dev.jar.
  • (Optionally) the port from wich your HTTP OSGi server serves the application ($PORT).
  • The startUp url of your application ($URL)
  • The package containing the .gwt.xml file for your application ($PACKAGE).

Then you need to run:

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

And finally you only need to deploy your application as usual, in my example I do it with pax-runner and pax-web, using the default port 8080.

With Eclipse

  1. Open the debug configuration for your project
  2. Go to Server tab and uncheck "Run built-in server"
  3. Go to Attributes tab and add "-port 8080" (if 8080 is the port used by your web container). I think that this argument without the built-in server is only used to create the url that the development mode generates to invoke the browser (or that elipse uses to generate an url you can copy and paste in your browser's address bar).
  4. Deploy your application.
  5. Access it from a browser with the GWT extension installed (and don't forget to add ?gwt.codesvr=127.0.0.1:9997)
林空鹿饮溪 2024-09-13 04:17:53

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

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

I had the same problem lately and unfortunately I haven't found any good solution.

Eventually I created mock implementations of all GWT services I am using in my client side code. When I need to debug client side code I am just switching to these services instead of real services using OSGi underneath. Then in Eclipse I can run GWT application in debug mode. This is far from perfect and requires some work with mocks but it works for me (at least now).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文