Мой GWT RPC AsyncCallback не работает: InvocationException

Я разработал приложение GWT и сделал AsyncCallback jfreechart, созданным на стороне сервера. Но есть ошибка, возвращающая InvocationException. Подробное сообщение об ошибке находится здесь 404 html com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:209) callback.onResponseReceived(this, response);

Я использовал GWT 2.5.1, jre7 и eclipse juno 4.2. Коды My Service Interface, Asynchronous Interface и Implementing Service такие же, как в этом примере http://www.jfree.org/phpBB2/viewtopic.php?t=19080&sid=f627bee2b70f0f512009d737957b8eee

Я добавил сервлет в свой web.xml

<servlet>
<servlet-name>ChartGenerator</servlet-name>
<servlet-class>com.test.server.ChartGeneratorImpl</servlet-class>
</servlet>

<servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ChartGenerator</servlet-name>
    <url-pattern>/comp/ChartGenerator</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/comp/DisplayChart</url-pattern>
</servlet-mapping>

Я проверил документацию RPC, и там сказано, что InvocationException может произойти по многим причинам: сеть может быть отключена, DNS-сервер может быть недоступен, HTTP-сервер может не прослушиваться и так далее. Мой интернет работает хорошо. Любое предложение?
Большое спасибо! Хелен


person user3314759    schedule 20.02.2014    source источник
comment
Зарегистрирована ли ваша реализация RPC как сервлет в файле web.xml?   -  person Gilberto Torrezan    schedule 20.02.2014
comment
Да, я добавил их в файл web.xml.   -  person user3314759    schedule 20.02.2014
comment
... а ваш интерфейс RPC содержит аннотацию @RemoteServiceRelativePath("comp/ChartGenerator")? (Примечание: в зависимости от конфигурации вашего веб-сервера вам может понадобиться использовать вместо него @RemoteServiceRelativePath("../comp/ChartGenerator").)   -  person Gilberto Torrezan    schedule 20.02.2014
comment
Спасибо, Жилберто. Я не использовал @RemoteServiceRelativePath(comp/ChartGenerator) в своем интерфейсе RPC. Только что я добавил этот относительный путь и снова протестировал свое приложение, ошибка все та же. Любое предложение?   -  person user3314759    schedule 20.02.2014
comment
Я пробовал обе версии @RemoteServiceRelativePath(../comp/ChartGenerator) и @RemoteServiceRelativePath(comp/ChartGenerator). То же сообщение об ошибке в звонилке. Как проверить конфигурацию моего веб-сервера? Я тестирую свое приложение в режиме разработки. Итак, это 127.0.0.1:8888/comp/chartGenerator . Это выглядит нормально? Большое спасибо!   -  person user3314759    schedule 20.02.2014
comment
Это странно. Попробуйте отладить ваш клиент (обратите особое внимание на то, какие URL-адреса вызываются при выполнении RPC) и ваш сервер (проверив, нет ли ошибок при запуске или где-либо еще).   -  person Gilberto Torrezan    schedule 20.02.2014
comment
вы можете забыть перекомпилировать свой код Java: я имею в виду код на стороне сервера и обновить или перезапустить сервер.   -  person timmz    schedule 21.02.2014


Ответы (1)


  1. Префикс «/context_root» в шаблоне URL, определенном в web.xml. В вашем случае шаблон URL будет "/comp/ChartGenerator".
  2. Используйте аннотацию @RemoteServiceRelativePath("ChartGenerator") в интерфейсе RemoteService.
person Braj    schedule 20.02.2014
comment
Большое спасибо! Как узнать мой context_path? Должно ли это быть что-то вроде /C:/SERVERS/x/y/x/yourApp/WEB-INF/classes? - person user3314759; 21.02.2014
comment
Обычно контекстный путь — это имя вашего приложения. Пожалуйста, прочитайте об этом на основе вашего веб-контейнера. Попробуйте эту ссылку, чтобы понять контекстный путь для tomcat. [ссылка] (mulesoft.com/tcat/tomcat-context) - person Braj; 21.02.2014
comment
Здравствуйте, Брай! Большое спасибо за оперативную помощь! Имя моего приложения — comp. Я добавил @RemoteServiceRelativePath(comp/ChartGenerator) в свой интерфейс RemoteService. Для шаблона URL-адреса в web.xml я пробовал 3 разные версии контекстного пути в шаблоне URL-адреса (1) ‹url-pattern›/C:/*/workspace/comp/war/WEB-INF/classes/comp/ChartGenerator ‹/ URL-шаблон› (2) ‹URL-шаблон›/C:/*/workspace/comp/ChartGenerator ‹/URL-шаблон› (3) ‹URL-шаблон›/C:/*/workspace/comp/war/WEB -INF/classes/com/test/client/ChartGenerator‹/url-pattern›, но ни один из них не работает. Я получил такое же сообщение об ошибке. - person user3314759; 22.02.2014
comment
Подробное сообщение об ошибке: com.google.gwt.user.client.rpc.StatusCodeException: 404 ‹html› ‹head› ‹meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1/› ‹body›‹h2›ОШИБКА HTTP: 404‹/h2›‹pre›NOT_FOUND‹/pre› ‹p›RequestURI=/comp/chartGenerator‹/p›‹p›‹i› ‹small›‹a href=jetty.mortbay.org/›Powered от Jetty://‹ /a›‹/small›‹/i›‹/p›‹br/› Любое предложение? Большое спасибо! - person user3314759; 22.02.2014
comment
Контекстный путь не представляет собой абсолютный путь к приложению. В tomcat это имя файла войны. Пожалуйста, прочтите его еще раз [Ссылка] tomcat.apache.org/tomcat-5.5 -doc/config/context.html Теперь из сообщения об ошибке ясно, что URI запроса — это /comp/chartGenerator, а в соответствии с вашими комментариями comp — это имя вашего приложения. Шаблон URL учитывает регистр. В соответствии с сообщением об ошибке и web.xml chartGenerator может быть не в одном и том же случае в шаблоне URL и аннотации. - person Braj; 22.02.2014
comment
Пожалуйста, подтвердите это еще раз: 1. ‹url-pattern›/comp/chartGenerator‹/url-pattern› в web.xml и аннотацию @RemoteServiceRelativePath(chartGenerator) в интерфейсе RemoteService 2. ‹url-pattern›/comp/displayChart‹/url -pattern› в web.xml и аннотация @RemoteServiceRelativePath(displayChart) в интерфейсе RemoteService - person Braj; 22.02.2014
comment
Большое спасибо Брадж! Я решил эту проблему. Да, это проблема корпуса. Я перешел на небольшой случай, такой как chartGenerator и displayChart в шаблоне URL-адреса и @RemoteServiceRelativePath. Он работает идеально! Потрясающий! Вы мне очень помогли! - person user3314759; 24.02.2014