GWT с -noserver - PullRequest
       23

GWT с -noserver

3 голосов
/ 18 января 2010

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

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

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

Удаленный вызов процедуры - сбой

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

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

Кто-нибудь может мне помочь? Спасибо!

Ответы [ 2 ]

4 голосов
/ 18 января 2010

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

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

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

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

0 голосов
/ 12 октября 2011

Для решения проблемы 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, но у меня его не было установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...