Intereting Posts
PHP – одинарные кавычки или двойные кавычки вокруг SQL-запроса? Маршруты Laravel не работают? CodeIgniter: как получить вход от View и использовать его в контроллере Войдите в систему программно и оставайтесь в системе SabreDAV + Nginx + PUT (создает 0 байтовый файл) jQuery AJAX получает данные MySQL, возвращает целое число index.html XML-файл Parse RDF для получения всех rdf: о значениях Force Загрузить через Ajax и PHP php – file_get_contents – Загрузка файлов с пробелами в имени файла не работает Для чего используются session_id, session_regenerate_id и session_name? CakePHP3 пользовательский метод поиска, содержащий и не работает при попытке отобразить связанное поле модели отправить массив значений через сообщение ajax Любая причина, по которой этот фрагмент кода не будет устанавливать cookie правильно? Сравнение String с Integer дает странные результаты Ошибка DOM – идентификатор «someAnchor», уже определенный в Entity, строка X

GWT с -noserver

Я делаю проект GWT, который использует PHP для подключения к базе данных DB2. Когда я компилирую проект и развертываю его на сервере (копируйте содержимое каталога WAR), он отлично работает, очевидно, в режиме размещения. Я запускаю проблему SOP, поскольку GWT находится на порту 8888, в то время как php-скрипт работает на порту 80.

Я пытаюсь запустить параметр -noserver, но мне что-то не хватает. Я вернулся и создал базовое примерное приложение из командной строки (webApplicationCreator -out / home / mike / gwt / sample1). Я редактировал сборку .xml для включения аргументов -noserver и -port 80 для devmode. Я хочу, чтобы мое приложение размещалось в localhost / sample1, поэтому я редактировал -startupUrl для всего URL-адреса, который я хочу использовать: http: //localhost/sample1/sample1.html

Я скомпилировал (ant), скопировал над sample1.html, sample1.css из war в каталог webserver sample1 и файлы (md5) .gwt.rpc, clear.cache.gif, sample1.nocache.js и hosts.html из каталога war / sample1 в sample1 / sample1, как описано в документации GWT (файл history.html не был создан). Затем я запускаю ant devmode из каталога проекта (/ home / mike / gwt / sample1). Я могу перейти на страницу sample1.html, но когда я нажимаю кнопку, чтобы отправить имя на сервер, он возвращается с

Удаленный вызов процедур – отказ

Ответы сервера: Произошла ошибка при попытке связаться с сервером. Проверьте подключение к сети и повторите попытку.

Я включил firebug, и он возвращает 404 для http: // localhost / sample1 / sample1 / greet . Вот где я застрял .. этот файл, очевидно, не существует на моем веб-сервере .. но почему? Разве это не то, что должно собирать GWT?

Может ли кто-нибудь дать мне руку? Благодаря!

Solutions Collecting From Web of "GWT с -noserver"

Таким образом, в основном вы скопировали клиентскую часть клиент-серверного приложения. Когда ваше клиентское приложение GWT пытается сделать удаленный вызов процедур (RPC) на сервер для службы приветствия, которая является частью исходного образца, он не может найти эту службу.

Если вы хотите скопировать эту службу, вам нужно иметь сервер приложений Java, скопировать поверх GreetingService, web.xml, который ссылается на него, и, возможно, на несколько других вещей (мне нужно будет проверить более подробно). Это не похоже на то, что вы на самом деле хотите, поэтому либо вы захотите создать службу GWT-RPC в PHP, которая отвечает на этот URL, либо удалить ссылку в коде GWT на вызов RPC в службу приветствия.

С исходным кодом PHP вы, вероятно, не собираетесь использовать GWT-RPC, я предполагаю, что вы, скорее всего, используете JSON или XML, и если это так, то я бы пошел с удалением RPC звоните вообще сейчас.

Все это имеет смысл? Не стесняйтесь спрашивать о дальнейших разъяснениях.

Чтобы решить проблему SOP, я использовал HttpProxyServlet для проксирования HTTP-запросов на мой веб-сервер через сервер разработки.

Загрузите httpProxyPackage.jar , скопируйте его в WEB-INF/lib/ и настройте его так же в WEB-INF/web.xml (это для учебника StockWatcher, предполагая, что ваш веб-корень – это папка, содержащая каталог StockWatcher):

 <servlet> <servlet-name>jsonStockData</servlet-name> <servlet-class>com.jsos.httpproxy.HttpProxyServlet</servlet-class> <init-param> <param-name>host</param-name> <param-value>http://localhost/StockWatcher/war/stockPrices.php</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>jsonStockData</servlet-name> <!-- http://127.0.0.1:8888/stockPrices.php in dev mode http://gwt/StockWatcher/war/stockPrices.php in prod mode --> <url-pattern>/stockPrices.php</url-pattern> </servlet-mapping> 

Затем переопределите URL-адрес JSON следующим образом:

  GWT.getHostPageBaseURL() + "stockPrices.php?q="; 

вместо:

  GWT.getModuleBaseURL() + "stockPrices.php?q="; 

Возможно, это не самый лучший способ, но если он может заставить кого-то начать … Был другой способ использования php-cgi , но у меня его не было.