Активация GWT Dev Mode в приложении GWT, созданном с использованием Maven

TL; DR: для отладки на стороне клиента я запустил gwt:run goal запустил приложение в 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 Dev Mode, и я не смог сделать это независимо от того, что я пробовал.

  1. Я работаю с:

    • SmartGWT 4.0
    • JDK 1.8.0_121
    • GWT Eclipse Plugin 2.8.0
    • GlassFish 4.1
    • Maven 3.3
  2. Я попытался следовать некоторым инструкциям из gwtproject, используя компоновщик по умолчанию xsiframe в gwt.xml файл.

  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 ответ

Я предлагаю запустить ваш серверный код на отдельном сервере (может быть mvn jetty:run), и запускайте GWT Dev Mode только для клиентского кода (используйте <noserver>true</noserver>).

Это решает так много проблем (с запуском веб-приложений на встроенном сервере DevMode), что это рекомендуемая установка в настоящее время.

Другие вопросы по тегам