Настройте сервер Jetty в режиме разработки GWT для выполнения php-скриптов.

Я пробовал несколько примеров, которые я нашел в Интернете, чтобы иметь PHP-скрипт, вызываемый веб-приложением, разработанным с помощью GWT (через Eclipse) с использованием HTTP-запросов. Я полагаю, что как только я заставлю это работать, я смогу применить методы к своему собственному приложению. Тем не менее, у меня ужасное время, когда я пытаюсь заставить это работать. Ближе всего к успеху я подошел к приложению StockWatcher, которое можно найти по адресу https://developers.google.com/web-toolkit/doc/2.1/tutorial/gettingstarted (я также работал над примером, начиная с реализации JSON-PHP, здесь https://developers.google)..com/web-toolkit/doc/2.1/tutorial/JSONphp)

В примере StockWatcher вы помещаете PHP-скрипт в каталог «war». Когда я начинаю с базового примера, со следующим фрагментом, определяющим строку URL-адреса (Примечания: значение для q добавляется после фрагмента кода ниже XXX = localhost и YYY = 127.0.0.1:8888)

private static final String JSON_URL = GWT.getModuleBaseURL() + "stockPrices?q=";
String url = JSON_URL;

который дает URL как

"http://_YYY_/stockwatcher/stockPrices?q=";

Я получаю код ошибки 404, даже если я перемещаю PHP-скрипт в каталог .../war/stockwatcher.

Если я жестко закодирую URL:

url = YYY/stockPrices.php?q=">http://YYY/stockPrices.php?q=;

PHP-скрипт найден, но файл скрипта просто возвращается в клиентскую процедуру. Впоследствии это приводит к исключению, поскольку клиентская процедура ожидает JSON.

Теперь, если я изменю URL-адрес на

url = http://_XXX_/StockWatcher/stockPrices.php?q=;

обновите проект, скопируйте содержимое каталога "war" в C:\wamp\www\StockWatcher и введите XXX/stockwatcher/stockwatcher.html">http://XXX/stockwatcher/stockwatcher. .html в моем браузере (я использую Chrome), тогда все работает как часы (на моем ПК работает Wampserver).

Хотя я мог бы использовать Wampserver в производственной системе, я все же хотел бы отлаживать в Eclipse. Встроенный сервер Jetty, поставляемый с Eclipse и подключаемым модулем GWT, не работает с PHP?

Заранее большое спасибо, Билл


person Bill Doss    schedule 13.02.2013    source источник
comment
+1. Вам нужно будет попробовать настроить причал для PHP. Просто ради интереса попробую. Вы можете найти что-то полезное здесь - stackoverflow.com/questions /5107684/jetty-server-run-php-код   -  person appbootup    schedule 13.02.2013
comment
Режим разработки GWT с параметром -noserver @ stackoverflow.com/questions/2084103/gwt-with-noserver   -  person appbootup    schedule 13.02.2013
comment
@SSR ... Я принял ответ Томаса ниже. Я рассмотрю ваше предложение по настройке причала для PHP. Спасибо!!   -  person Bill Doss    schedule 13.02.2013


Ответы (1)


Если вы не собираетесь развертывать свое приложение в контейнере сервлетов, то нет абсолютно никаких причин пытаться запускать PHP-скрипт в контейнере сервлетов DevMode.

Что нужно сделать:

  1. укажите ваш сервер WAMP в вашей папке war или, альтернативно, укажите DevMode и Compiler -war в какой-либо папке, обслуживаемой вашим сервером WAMP.
  2. запустите DevMode без встроенного Jetty: передайте -noserver и используйте http:// URL-адрес вашего сервера WAMP в качестве -startupUrl (из Eclipse используйте Запуск от имени → Веб-приложение (работает на внешнем сервере))

См. https://developers.google.com/web-toolkit/doc/latest/DevGuideCompilingAndDebugging#How_do_I_use_my_own_server_in_development_mode_instead_of_GWT%27s

person Thomas Broyer    schedule 13.02.2013
comment
Хорошо... Итак, я добавил -war "C:\wamp\www\StockWatcher" к дополнительным параметрам в меню компиляции веб-приложения GWT. Затем я создал новую конфигурацию запуска с отключенным встроенным сервером запуска (который добавил -noserver), добавил -startUrl и добавил -war ... в список аргументов. Затем я скопировал каталог изображений StockWatcher.html (& .css) в каталог wamp\www\StockWatcher. Когда я использую новую конфигурацию запуска, она работает!! Спасибо @Томас Бройер - person Bill Doss; 13.02.2013