Заранее извините за длинный пост, но проблема, с которой я здесь сталкиваюсь, очень важна для меня, так что мы идем ...
У меня есть веб-приложение Eclipse GWT (2.0), использующее GAE и выполняющее транзакции с его хранилищем данных.
С другой стороны, я хотел бы убедиться, что я могу также развернуть это веб-приложение в другой инфраструктуре, чем Google App Engine. Поэтому я хотел отладить свое веб-приложение, используя другой контейнер сервлетов (Tomcat 6) и другое хранилище данных (mySQL, MSSQL или любое другое, на данный момент это не имеет большого значения.)
Чтобы иметь возможность отладки веб-приложения Eclipse с Tomcat, он должен иметь фасет Dynamic Web Project . Если этого не произойдет, то новый сервер, который я добавлю в Eclipse в Серверы, отказывается выбирать мой модуль GWT в своем списке поддерживаемых приложений. И не только GWT Web Apps его не несут, но они даже не позволяют изменять аспекты проекта!
Однако я обнаружил, что добавление нескольких релевантных тегов в файл .project может сделать его пригодным в Eclipse для добавления новых аспектов проекта. Вот теги, которые я использовал:
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.google.appengine.eclipse.core.gaeNature</nature>
Так что я сделал это, я мог «превратить» проект в динамический веб-проект Eclipse и, тем самым, сделать его совместимым для добавления в список модулей, обрабатываемых, скажем, Tomcat 6 в составе серверов.
Так что это именно то, что я хотел, теперь я могу по желанию переключаться между двумя конфигурациями отладки в Eclipse для отладки моего веб-приложения GWT либо в App Engine, либо в Tomcat.
Проблема в том, что добавление фасета Dynamic Web Project нарушает работу усилителя DataNucleus. По какой-то причине, когда проект стал Dynamic Web Project, кажется, что энхансер больше не вызывается, и я получаю это сообщение об ошибке, в котором говорится, что некоторые классы не были улучшены. Игра с классами Google ... App Engine ... ORM или проверка / снятие флажка Enhancer в Builders ничего не изменит. Обратите внимание, что проблема с энхансером затрагивает обе конфигурации отладки: Tomcat и App Engine.
Так что я думал о двух решениях.
(1) Отключите усилитель DataNucleus для плагина Google и выполните улучшения самостоятельно. Поэтому я установил плагин DataNucleus для настройки специфических для проекта улучшений, следуя их руководству по плагину Eclipse.
Говорят, что щелкнув правой кнопкой мыши по проекту, можно активировать поддержку DataNucleus для файлов данного проекта. К сожалению, после установки последней версии их плагина для Eclipse, такое меню не открывается! Поэтому у меня нет возможности сообщить их плагину, что я хочу активировать улучшения для данного проекта! Насколько это разочаровывает ?? (Я удалил / переустановил плагин, пусть выполняет множество ожидающих обновлений Eclipse ... но все еще нет меню правой кнопки мыши.)
Кто-нибудь знает другой способ активировать расширение DataNucleus? На данный момент я был бы счастлив даже с довольно ручным трюком, поскольку для меня очень важно иметь возможность выполнять эту отладку кросс-сервлет-контейнера в Eclipse.
(2) Используйте этот совет с официального сайта GWT http://code.google.com/webtoolkit/doc/latest/FAQ_DebuggingAndCompiling.html#How_do_I_use_my_own_server_in_hosted_mode_instead_of_GWT%27s
Хорошо, это работает, и сейчас давайте скажем, что это спасает мою жизнь, НО ... это требует режима хоста и поэтому не позволяет использовать GWT 2.0.
Что касается этого обходного пути, я хотел бы знать, есть ли способ сделать что-то подобное в GWT 2.0?
Превращение GWT Web App в Eclipse Dynamic Web Project было бы идеальным решением для разработки моего приложения. Как я уже говорил выше, таким образом, очень удобно переключать с App Engine на Tomcat и наоборот. Поэтому я предпочитаю обходной путь (1), а не обходной (2). Но в любом случае, некоторая помощь или совет относительно любого из этих двух пунктов будут очень и очень приветствоваться.
Спасибо, что прочитали этот очень длинный пост!