在使用Maven构建的GWT应用程序上激活GWT开发模式

时间:2018-07-25 15:03:29

标签: maven debugging gwt gwt-dev-mode

TL; DR :为了调试客户端,我运行了gwt:run目标,在Chrome上启动了该应用程序,并在登录后将其抛出以下异常, GWT开发人员模式未启动(客户端断点均无效)

    javax.el.ELException: /pages/common/gwt/commonLayoutGWT.xhtml: setAttribute: Non-serializable attribute with name sessionBean
        at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:90)
        at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
        at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
        ...

我应该怎么做,或者应该检查什么才能使GWT开发模式正常工作?


某些背景:以前,我们的团队使用了一些ant脚本来进行编译,调试(服务器和客户端代码),运行和部署主应用程序。尽管该过程确实很繁琐且需要人工,但它的工作没有问题。我们决定在几个月前将其制作为Maven应用程序,并且在使用后能够成功执行所有操作/目标 Maven。编译,运行和部署应用程序变得快速,便捷,这是我们的目标。

但是直到现在,我们还没有注意到在此过程中的某个时刻,我们的客户端调试停止了。仅在获得一些错误报告并开始尝试对其进行调试后,我们才注意到该问题。因此,现在我需要设置GWT开发模式,无论我尝试过什么,都无法做到这一点。

  1. 我正在使用:

    • SmartGWT 4.0
    • JDK 1.8.0_121
    • GWT Eclipse插件2.8.0
    • GlassFish 4.1
    • Maven 3.3
  2. 我尝试使用默认链接器xsiframegwt.xml文件中,遵循gwtproject的一些说明。

  3. 但是当我执行gwt:compile目标时,出现了此错误:

    [INFO] Linking into D:\Development\Repos\Git\Java\MyApp\myApp\target\classes\..\..\..\myApp\WebContent\pages\module\gwt\com.myapp.client.gwt.MyAppClient
    [INFO]    Invoking Linker Cross-Site-Iframe
    [INFO]       [ERROR] The Cross-Site-Iframe linker does not support <script> tags in the gwt.xml files, but the gwt.xml file (or the gwt.xml files which it includes) contains the following script tags: 
    
  4. 为解决此问题,我通过错误本身使用了推荐的解决方案之一: “ ...将此属性添加到gwt.xml文件中:<set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>

  5. 我再次运行gwt:compile,并成功完成了

1 个答案:

答案 0 :(得分:3)

我建议在单独的服务器(可以是mvn jetty:run)中运行服务器端代码,并仅对客户端代码(使用<noserver>true</noserver>)运行GWT开发模式。

这解决了很多问题(在DevMode的嵌入式服务器中运行webapps),这是当今推荐的设置。