Как я могу превратить приложение Eclipse GWT / GAE в приложение Eclipse Tomcat / mySQL? - PullRequest
3 голосов
/ 16 мая 2010

Заранее извините за длинный пост, но проблема, с которой я здесь сталкиваюсь, очень важна для меня, так что мы идем ...

У меня есть веб-приложение 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). Но в любом случае, некоторая помощь или совет относительно любого из этих двух пунктов будут очень и очень приветствоваться.

Спасибо, что прочитали этот очень длинный пост!

Ответы [ 2 ]

0 голосов
/ 01 июня 2013

Я столкнулся с точно такой же проблемой, я мог отредактировать свойства своего проекта и увидеть контекстное меню datanucleus, чтобы плагин определенно работал. Моя проблема заключалась в том, что я использовал перспективу «Java EE» в затмении. (Юнона кстати). Я переключился на контекст «Java», и мое меню datanucleus вернулось, и я смог включить поддержку и включить автоматическое улучшение.

Window -> Show perspective -> Other -> Java
0 голосов
/ 27 ноября 2011

Я всегда использую Google Plugin (GPE) для разработки GWT, даже когда я развертываюсь в Tomcat, где я просто отключаю опцию GAE.

Возможно, я не понимаю вопроса - но у меня не было проблем с отладкой приложения, работающего на пристани, и последующей передачей приложения в Tomcat. Есть ли какие-либо проблемы, которые мне нужно изучить?

На самом деле, даже когда мое приложение представляет собой простой jsp или сервлеты, без каких-либо GWT, я все еще использовал GPE. Но GPE откажется запускать причал без GWT или GAE. Поэтому я просто создаю фиктивное приложение GWT. За все мои годы мне никогда не приходилось беспокоиться о различиях между молом и котом. И если бы мне пришлось написать приложение, в котором мне пришлось бы использовать различия в tomcat по сравнению с Jetty, я бы считал себя паршивым программистом.

Единственная причина, по которой я толкаю сервер JEE на внешний сервер, - это профилирование приложения, работающего на tomcat.

JEE - это JEE, будь то Tomcat или Jetty. Я слышал, что некоторые люди склонны к использованию Jetty, например, предпочитая Starbucks, а не кафе по соседству. Кофе есть кофе.

Я не понимаю. Возможно, вы могли бы написать еще один тезис, объясняющий, почему вы не можете отладить на пристани, а затем развернуть на tomcat.

...