как развернуть приложение GWT на tomcat

#gwt #tomcat7

#gwt #tomcat7

Вопрос:

Я искал на этом сайте ответ на этот вопрос и не смог найти решение. что я сделал, так это то, что я просто сжал каталог war в моем проекте eclipse GWT app, затем переименовал его в .war, а затем переместил его в папку tomcat webapps. когда я запускаю веб-приложение, первый экран успешно отображается, но когда я вызываю сервлет в моем коде src, он выдает мне ресурс, не найденный сервером tomcat. я уверен, что добавил запись для сервлета в web.xml файл и приложение работали хорошо, когда я запускал его в режиме разработки eclipse gwt. что-то мешает тому, чтобы мои сервлеты (стандартные сервлеты, а не сервлеты GWT RPC) были найдены и выполнены tomcat. в чем может быть причина?


Обновить

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <!-- Servlets -->

  <servlet>
        <servlet-name>OAuth</servlet-name>
        <servlet-class>org.goauth.server.OAuthServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>OAuth</servlet-name>
        <url-pattern>/goauth/oauth</url-pattern>
    </servlet-mapping>
     <servlet>
        <servlet-name>OAuthCallback</servlet-name>

        <servlet-class>org.goauth.server.OAuthCallbackServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>OAuthCallback</servlet-name>
        <url-pattern>/goauth/callback</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>service</servlet-name>

        <servlet-class>org.goauth.server.OAuthServiceImpl</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>service</servlet-name>
        <url-pattern>/goauth/service</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>OAuthConfirm</servlet-name>
        <servlet-class>org.goauth.server.OAuthConfirmServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>OAuthConfirm</servlet-name>
        <url-pattern>/goauth/confirm</url-pattern>
    </servlet-mapping>
  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>GOAuth.html</welcome-file>
  </welcome-file-list>    
</web-app>
  

Ошибка

в файлах журналов tomcate ничего нет, единственная ошибка в браузере :

 HTTP Status 404 - /goauth/oauth

type Status report

message /goauth/oauth

description The requested resource (/goauth/oauth) is not available.
Apache Tomcat/6.0.20
  

Комментарии:

1. Можете ли вы показать нам свой web.xml и трассировку стека вы получаете?

2. хорошо, дайте мне немного времени, чтобы вернуться к моему коду на другом компьютере Mac book. я скоро опубликую информацию.спасибо

3. я добавил web.xml файл и ошибка, которую я получаю при нажатии кнопки, вызывающей servlet / goauth / oauth. этот сервлет не удалось найти tomcat, хотя все они существуют в файле war.

Ответ №1:

Я обнаружил проблему: для вызова моего сервлета я вызывал URL-адрес формата: "/goauth/OAuth" это работало с плагином eclipse gwt в режиме разработки, но не при развертывании war на сервере tomcat. решение заключается в том, что мой URL, указывающий на мой сервлет, должен иметь вид :

 String href = GWT.getHostPageBaseURL() "goauth/OAuth";
  

итак, нам нужно сообщить tomcat полный URL-адрес, добавив к URL-адресу сервлета префикс GWT.getHostPageBaseURL().

Комментарии:

1. Привет, спасибо за ответ, я получаю ошибку tomcat UnsatisfiedLinkError либо в GWT.getModuleBaseUrl (), либо в GWT.getHostPageBaseUrl(). Что я делаю не так? java.язык. Ошибка неудовлетворительной ссылки: com.google.gwt.core.client.impl.Impl.getModuleBaseURL()Ljava /lang/String;

2. возможно, вы используете GWT.getHostPageBaseUrl() на стороне сервера. вы не можете этого сделать, поскольку это всего лишь код на стороне клиента и его нельзя использовать на стороне сервера

3. Большое спасибо за ваш ответ, Отман. На самом деле я вызываю его на сервере. Итак, есть ли какой-либо способ найти путь на стороне сервера?

4. в вашем серверном коде у вас будет request объект, а путь — request.getContextPath() .

Ответ №2:

Взгляните на то, как создать GWT .war в eclipse: http://blog.elitecoderz.net/gwt-and-tomcat-create-war-using-eclipse-to-deploy-war-on-tomcat/2009/12/

Комментарии:

1. я сделал то же самое в этом руководстве по ссылке, но у меня такая же ошибка. я обновил свой вопрос с web.xml файл . когда я вызываю servlet / goauth / oauth, сервер возвращает 404.

Ответ №3:

В вашем сопоставлении попробуйте изменить /goauth / oauth на / OAuth

Комментарии:

1. нет, мистер Маниш, ваше решение не работает! -у кого-нибудь еще есть решение?

2. HTTP Status 404 — сообщение о состоянии отчета типа /OAuth /Описание OAuth Запрошенный ресурс (/OAuth) недоступен. Apache Tomcat / 6.0.20