Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу запустить сервлет 
V
    Опции темы
azalia
Дата 14.5.2015, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Доброго времени суток!
Не получается развернуть сервлет на Томкат 7. 
Я пока не использую JSP. Не хочу пока заморачиваться отделением логики от представления.
Сервлет хранится в C:\Tomcat 7.0\webapps\testApp\WEB-INF\classes\test1\web. В папке C:\Tomcat 7.0\webapps\testApp\WEB-INF хранится web.xml
Код


<web-app>
 
  <servlet>
    <servlet-name>DBServlet</servlet-name>
    <servlet-class>test1.web.DBServlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>DBServlet</servlet-name>
    <url-pattern>/DBServlet</url-pattern>
  </servlet-mapping>
 
</web-app>


Запускаю http://localhost:8080/testApp/DBServlet

Возникает ошибка 500.

Код сервлета могу привести позже, если будет нужен.

Я понимаю, что тема уже избитая, но я все равно что-то никак не пойму ЧЯДНТ?
PM   Вверх
azalia
Дата 14.5.2015, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



попробовала запустить типовой сервлет:
Код


import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class NewServlet extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
        // Параметр
        String parameter = request.getParameter("parameter");
 
        // Старт HTTP сессии
        HttpSession session = request.getSession(true);
        session.setAttribute("parameter", parameter);
 
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Заголовок</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Пример сервлета"+parameter+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    } 
 
    @Override
    public String getServletInfo() {
        return "Пример сервлета";
    }
 
}


Добавила в web.xml в C:\Tomcat 7.0\webapps\testApp\WEB-INF

Код

<web-app>
 
  <servlet>
    <servlet-name>DBServlet</servlet-name>
    <servlet-class>test1.web.DBServlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>DBServlet</servlet-name>
    <url-pattern>/DBServlet</url-pattern>
  </servlet-mapping>
 
  <servlet>
    <servlet-name>NewServlet</servlet-name>
    <servlet-class>test1.web.NewServlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>NewServlet</servlet-name>
    <url-pattern>/NewServlet</url-pattern>
  </servlet-mapping>


</web-app>


Запускаю http://localhost:8080/testApp/NewServlet
Тоже ошибка 500.

Код

HTTP Status 500 - test1/web/NewServlet (wrong name: NewServlet)

--------------------------------------------------------------------------------

type Exception report

message test1/web/NewServlet (wrong name: NewServlet)

description The server encountered an internal error that prevented it from fulfilling this request.

exception 

java.lang.NoClassDefFoundError: test1/web/NewServlet (wrong name: NewServlet)
    java.lang.ClassLoader.defineClass1(Native Method)
    java.lang.ClassLoader.defineClass(Unknown Source)
    java.security.SecureClassLoader.defineClass(Unknown Source)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.61 logs.



PM   Вверх
azalia
Дата 14.5.2015, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



добавила package test1.web;
запустился...

а в моем ему тогда что не нравится?

Код

package test1.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class DBServlet extends HttpServlet {

public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
String sql = "SELECT TOP 10 * FROM Person.Contact";

Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
ResultSetMetaData rsm=null;

response.setContentType ("text/html");
java.io.PrintWriter out = response.getWriter();

out.println("<html><head><title>Servlet DB Access</title></head></html>");
out.println("<h2>Database info</h2>");
out.println("<table border='1'>Database info<tr>");

try{
Class.forName ("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433/AdventureWorks";
conn= DriverManager.getConnection(url, "sa","123");

stmt= conn.createStatement();
rs= stmt.executeQuery(sql);
rsm= rs.getMetaData();
int colCount=rsm.getColumnCount();

for (int i=1; i <= colCount; ++i){
out.println ("<th>"+rsm.getColumnName(i)+"</th>");

}
out.println ("</tr>");
while (rs.next()){
out.println ("<tr>");

for (int i=1; i <= colCount; ++i)
out.println ("<td>"+rs.getString(i)+"</td>");
out.println ("</tr>");
}


}
catch (Exception e){ throw new ServletException(e.getMessage());}

 finally {

try {

if (stmt != null) stmt.close();
if (conn !=null) conn.close();
}

catch (Exception sqle){}

}
out.println("</table><br><br>");
out.println("</body>");
out.println("</html>");
}


}


PM   Вверх
AntonSaburov
Дата 15.5.2015, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Так сам сервлет запустился ? Без всяких баз данных - пока просто вернуть просто Hello world. Это получилось ?
PM MAIL WWW ICQ   Вверх
azalia
Дата 15.5.2015, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Цитата(AntonSaburov @  15.5.2015,  09:36 Найти цитируемый пост)
Так сам сервлет запустился ? Без всяких баз данных - пока просто вернуть просто Hello world. Это получилось ? 


Да, получилось.

А с БД пока проблемы.
PM   Вверх
AntonSaburov
Дата 15.5.2015, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Надо смотреть логи в Tomcat - <Tomcat>/logs/ - скорее всего файлы catalina или дщсфдрщые - там можно посмотреть на ошибку. Иначе что-то сказать не получится. Учтите на будущее - без описания ошибки только по коду 500 ничего выяснить не получится - так что смотрите логи. Всегда. Это иногда единственное, что спасает.

Код 500 - это скорее всего какая-то проблема уже внутри сервлета.
PM MAIL WWW ICQ   Вверх
azalia
Дата 15.5.2015, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Цитата(AntonSaburov @  15.5.2015,  12:12 Найти цитируемый пост)
Надо смотреть логи в Tomcat


Я уже пыталась там смотреть... Ничего путного не нашла. Странно, что у меня ничего не выводится. Может есть способ заставить его вывести ошибку на экран?

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

Значит сам сервлет с доступом к БД какой-то неправильный? Я его взяла с книжки. Только в ней была описана попытка доступа к Оракл, а я заменила на Майкрософт.

PM   Вверх
azalia
Дата 15.5.2015, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



нигде не могу найти ответ на свой делитанский вопрос - чем же отличаются http-сервлеты от обычных? или обычных сервлетов не существует? можно ли превратить обычный java-класс с main в http-сервлет просто обернув его в следующую конструкцию?

Код

public class NewServlet extends HttpServlet {
 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

PM   Вверх
Samotnik
Дата 15.5.2015, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Interface ServletClass HttpServlet 
понятно или объяснить?
PM MAIL   Вверх
azalia
Дата 15.5.2015, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Цитата(Samotnik @  15.5.2015,  17:32 Найти цитируемый пост)
понятно или объяснить? 


в общих чертах, да.
PM   Вверх
AntonSaburov
Дата 15.5.2015, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Во-первых - если сервлет без базы выводит Hello World, значит проблема в коде уже внутри сервлета. 
Во-вторых - навставляйте внутрь сервлета System.out.println через каждый оператор и смотрите в логи - Томкат туда все пишет. А так разговор слепого с глухим.
PM MAIL WWW ICQ   Вверх
azalia
Дата 16.5.2015, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Цитата(AntonSaburov @  15.5.2015,  21:38 Найти цитируемый пост)
Во-первых - если сервлет без базы выводит Hello World, значит проблема в коде уже внутри сервлета. 
Во-вторых - навставляйте внутрь сервлета System.out.println через каждый оператор и смотрите в логи - Томкат туда все пишет. А так разговор слепого с глухим. 



все, у меня получилось! спасибо!

PM   Вверх
sergioK1
Дата 19.8.2015, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(azalia @ 14.5.2015,  18:30)
добавила package test1.web;
запустился...

а в моем ему тогда что не нравится?

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

error 500 говорит что у вас нет драйвера к БД jar в папке lib есть? 
Я угадал ?  

Это сообщение отредактировал(а) sergioK1 - 19.8.2015, 09:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0763 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.