如何在jboss上调试GWT客户端代码

时间:2013-05-15 00:06:30

标签: gwt jboss smartgwt

我从GWT和smartgwt开始,我意识到当你的代码在jetty上运行时,不一定能在Jboss上运行。

当客户端的某些东西出现故障时,有没有办法可以调试异常或任何类型的错误,jboss控制台什么也没说。我想知道当它在jboss上运行时是否可以将跳线窗口连接到应用程序。

我正在使用Netbeans,jboss 5.1

更新

感谢您的帮助,我一直在使用com.google.gwt.logging.Logging并且它工作得非常好,但我正在寻找一种方法来调试客户端代码,例如使用netbeans。我知道如何使用set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%调试服务器端代码启动jboss然后我将netbeans调试器连接到8787端口。有没有办法从Jboss做类似的事情来调试客户端?

此外,我知道如何使用gwt:debug调试客户端代码,但在这种情况下,我的应用程序未运行在jboss上运行在jetty上。

3 个答案:

答案 0 :(得分:1)

我假设您已经正确设置了启动配置(将启动环境指向JBoss而不是嵌入式Jetty)。如果您处于开发模式,您应该已经能够调试javacode。如果要在生产中调试客户端代码,请使用浏览器的开发工具。

关于错误处理 有两种方法可以处理GWT客户端异常。

  1. 将它们记录在客户端
  2. 将它们发送到服务器并将其记录在服务器端
  3. 我认为你是在服务器端日志记录之后(实际上这就是我们在生产模式中所需要的)GWT为客户端和服务器端都有一个定义良好的错误处理机制。这些答案/帖子将帮助您正确设置GWT应用程序中的错误处理程序。

    7 Tips for Exception Handling in GWT

    Setup a remoteLoggingServlet in GWT

答案 1 :(得分:0)

我知道这是一个老问题,但由于之前的答案没有被标记为已被接受,所以这就是我的方式:

  1. 您可以使用SDBG,这是一个很好的Eclipse插件,允许您从Eclipse中调试客户端代码。观看该页面上的入门教程以帮助您入门。我使用Glassfish,而不是嵌入式Jetty,我知道它也适用于JBoss。
  2. 如果您使用Eclipse& Maven,我提供了here更完整的列表,您可以在服务器端和客户端代码中调试SmartGWT。

答案 2 :(得分:0)

随着JBoss EAP7和GWT 2.7放弃DevMode而转向SuperDevMode,事情变得更加复杂。相关文章(Super Dev mode in GWT)提供了很好的线索,但没有一个直接用于我的服务器和版本的组合:JBoss EAP 7.0,GWT 2.7,Eclipse的GWT 2.7插件,Eclipse 4.5+和Maven Builds。关键变化是如何使用GWT代码将WAR部署到JBoss EAP 7。

我建议你阅读introduction to GWT Super Dev Mode

  1. 假设您有一个使用Maven构建的现有GWT Eclipse项目,并且您可以部署和执行。除了像myProject / target / myWebInterface-1.0.war这样的压缩WAR存档版本之外,Build还会在myProject / target / myWebInterface-1.0 /中生成一个爆炸的WAR版本。您可能想要检查GWT maven插件是否在myWebInterface-1.0 /./ / p>

  2. 下的GWT模块子目录中构建myModule.devmode.js和myModule.nocache.js。
  3. 忘记打包的.war并通过JBoss控制台将爆炸版本部署到JBoss服务器:部署>添加>创建非托管部署>下一个。填写如下:

    enter image description here

    请务必在" .war"中终止名称字段。虽然您没有从打包存档部署,但是从目录路径部署。这使JBoss能够理解要应用的部署配置文件,即WAR的部署配置文件。您可能确实检查了部署是否正常以及您的界面是否正在运行。

  4. 在Eclipse中,打开项目的Project属性,在左侧树中导航到Google> “Web应用程序”选项卡并确保“此项目具有WAR目录”。检查。还可以导航到Google> Web Toolkit选项卡并确保使用GWT'已经过检查。

  5. 在Eclipse中右键单击您的项目并运行为> GWT Super Dev Mode。由于缺少库依赖性,GWT代码服务器已经启动并且可能会失败(或者至少在告知它准备好之前生成错误)。但是,已经创建了一个易于修复的启动配置。因此,请从Eclipse控制台红色STOP按钮终止当前启动。

  6. 我们需要编辑刚刚创建的默认启动配置,并将所有库依赖项提供给CodeServer,如下所示:

      Eclipse菜单中的
    • :运行>运行配置...>选择刚刚创建的Google Web应用程序
    • 在“服务器”选项卡下,选中“运行内置服务器”' (在端口8888)并点击“应用'
    • 在'论点'选项卡,您必须看到' -noserver'选项
    • 如果需要匹配Eclipse IDE的JDK
    • ,请在JRE选项卡下修复JRE
    • 在Classpath'下选项卡,在'用户条目'下,您必须添加原始WAR构建中的所有库依赖项。最好是创建Eclipse用户库,其中包含从Maven .m2本地存储库中提取的所有依赖项。在我的例子中,我添加了所有Spring Framework库,这些库支持与GWT前端一起部署在同一WAR存档中的后端REST服务器。
    • 点击'应用'然后'运行'此更新配置
    • Eclipse控制台通常显示"代码服务器已在http://127.0.0.1:9876/"准备就绪。检查此跟踪之前没有错误。
  7. 在新的Chrome窗口中打开上面的链接;你会看到

    enter image description here

    并在该页面上显示的Chrome收藏的书签中添加书签

  8. 在已部署(爆炸/非托管)的Web项目主页上打开新的Chrome浏览器标签

  9. 点击'开发模式开启'书签。弹出一个框架,建议编译'你的GWT模块。单击它,框架显示' Compiling yourModuleName'。您还可以在Eclipse控制台中遵循GWT代码服务器活动,并确保在重新编译GWT Java代码时提供了所有必需的库依赖项。

    如果您收到“编译myModule失败”的情况。刷新浏览器窗口可以解决问题,而建议的再次尝试'不会起作用......

  10. 从那时起,您可以在Eclipse中更改GWT java源,然后刷新浏览器窗口以立即查看所做更改的效果。

  11. 调试GWT代码

    1. 您可以通过在Java源代码中设置断点来进一步调试GWT代码,而Java代码在客户端浏览器中编译并作为Java Script执行!这才是神奇的!请按以下步骤操作:
      • 在Chrome中,激活开发人员工具:按ctrl-shift-i或点击设置图标>更多工具>开发人员工具
      • 确保您拥有' JavaScripts源地图'已启用:点击工具设置图标>设置> ...
      • 然后您可以在左侧导航树(树的底部)中导航到GWT java源,或者按ctrl-p快速打开您知道的源文件(例如,当前在Eclipse中编辑的源文件),并设置断点Chrome开发者工具中央面板;当您刷新网页时,调试器将在断点处执行并停止,并允许您检查映射到原始Java代码的JavaScript变量。请注意,断点只能从Chrome Developer Tools中设置,而忘记了Eclipse自己的断点。
    2. 如何运作,非常简短:

      • 由于爆炸/非托管部署,Eclipse构建由JBoss直接使用;没有制作副本需要在每次更改时进行明确的重新部署。
      • 作为Eclipse GWT插件的一部分的GWT代码服务器检测源中的更改并动态地为客户端重新编译Java脚本
      • 客户端浏览器始终从代码服务器获取热重新编译的Javascript,而不是从部署的(静态)WAR存档中获取它们
      • 默认情况下,代码服务器启动一个jetty Web服务器(在端口8888)来部署服务器端代码,但我们将其关闭并使用JBoss服务器代替显式爆炸/非托管部署。