如何调试在 OSGi 上运行的 GWT 应用程序?
我正在使用 GWT 开发 Web UI。虽然仅使用小部件,但我可以使用 Firefox 扩展从 Eclipse 进行调试,但现在我将 UI 与其他 OSGi 包集成,我无法使用此解决方案。
为了部署 GWT 应用程序,我创建了 .war 并使用 BND 将其转换为 OSGi 包。然后,我使用 Pax Runner 和 Pax Web 启动包含所有捆绑包的 OSGi 容器,并且应用程序可以正常工作,但是当生成的 javascript 代码中出现故障时,我没有任何像样的输出错误或调试工具。
有没有办法从 OSGi 以“调试模式”启动 GWT 应用程序?
在这种情况下还有其他可以帮助的想法吗?
更新:是否可以通过 Activator
com.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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我终于设法使用 OSGi、GWT 和可选的 eclipse 启动开发模式。解决方案是在 GWT 开发模式的
-noserver
标志上,它不知道应用程序运行时代码的变化,但它可以用于调试编译后的代码并接收异常痕迹。我还设法在没有 Eclipse 的情况下运行开发 shell,但如果您对此解决方案不感兴趣,可以直接跳到 Eclipse 集成部分。
没有 Eclipse(仅例外,无调试)
您需要知道以下信息:
$SRC
)gwt-user.jar
和gwt-dev.jar
。$PORT
)。$URL
)$PACKAGE
)。然后你需要运行:
例如:
最后你只需要像往常一样部署你的应用程序,在我的示例中,我使用默认端口 8080 使用 pax-runner 和 pax-web 进行部署。
使用 Eclipse
-port 8080
”(如果 8080 是您的 Web 容器使用的端口) 。我认为这个没有内置服务器的参数仅用于创建开发模式生成的用于调用浏览器的 url(或者 elipse 用于生成可以复制并粘贴到浏览器地址栏中的 url)。?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:
$SRC
)$GWT_PATH
), speciallygwt-user.jar
andgwt-dev.jar
.$PORT
).$URL
)$PACKAGE
).Then you need to run:
E.g.:
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
-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).?gwt.codesvr=127.0.0.1:9997
)我最近遇到了同样的问题,不幸的是我没有找到任何好的解决方案。
最终,我创建了我在客户端代码中使用的所有 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).