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

Поиск:

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


Шустрый
*


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

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



Есть обычний сервлет в нем нужно в модуле init запустить java логику
Код

        HttpClientTest client =new HttpClientTest();
    client.StartReadCurrency();


Где:

Код

import java.io.*;

public class HttpClientTest 
{  
    public void StartReadCurrency() throws UnsupportedEncodingException
    { 
     
        System.out.println("Hello world");    
    }
    
}


Но как обычный класс, init не работает. Как тогда к сервлету подключить логику из другого класса?
PM MAIL ICQ   Вверх
MisterCleric
Дата 11.3.2011, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Привет.
Маловато объяснений.
Может тебе достаточно так:
Код

GenericServlet servlet = new MyServlet();
servlet.init();


Метод init() вызывается автоматически сервлет-контейнером при старте web-приложения.


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
artem_from_minsk
Дата 11.3.2011, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я хотел в сервлете вызвать класс вот так:
Код

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

/**
 * Servlet implementation class servl
 */
@WebServlet("/servl")
public final class servl extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public void init(ServletConfig config) throws ServletException 
       {
        HttpClientTest client =new HttpClientTest();
        client.StartReadCurrency();// в этой строчке у меня ошибка, хотя и предыдущая не правильная тоже 
    }
    public void destroy() {
        // TODO Auto-generated method stub
    }

}


Возможно если мой класс объявить как сервлет, и воспользоватся объявлением как у вас, то возможно что-то и получится. 
Жду еще варианты...
Может можно и обычный класс как-то подключить?
PM MAIL ICQ   Вверх
MisterCleric
Дата 11.3.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



StackTrace в студию!

Добавлено через 2 минуты и 12 секунд
или у тебя ошибка при компиляции?
Ведь UnsupportedEncodingException это не ServletException и даже не RuntimeException


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
artem_from_minsk
Дата 11.3.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



О... это идея. Объявить поток, а потом через StackTrace подключить к сервлету.  Я так вас понял?? У меня просто не как поток, а  просто класс. 
PM MAIL ICQ   Вверх
MisterCleric
Дата 11.3.2011, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



StackTrace это текст Exception, который пишеться в лог при выполнении программы и возникновении такового.
Короче: покажи текст ошибки, пожалуйста


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
artem_from_minsk
Дата 11.3.2011, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



HttpClientTest.java
Код

import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;

public class HttpClientTest 
{
    private static final String DEFAULT_CHARSET = "UTF-8";
    private static final String SITE_CHARSET = "CP1251";
    private static String main_massive[]={
     "usdjpy",//Маска для USD/GPY значение курса
    };
   // Этот кусок кода скачивает страницу и выдает его в string
    public String HttpClientPage(String page) throws UnsupportedEncodingException 
    {
        HttpClient httpClient = new HttpClient();
        httpClient.getParams().setContentCharset(DEFAULT_CHARSET);
        httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
        // Загрузка страницы с запросом методом GET
        GetMethod getMethod = new GetMethod(page);
        getMethod.getParams().setContentCharset(SITE_CHARSET);
        try {
            int result = httpClient.executeMethod(getMethod);
            if (result == HttpStatus.SC_OK) {
                // Выводим страницу на экран и заносим в переменную а
                String inputHTML = getMethod.getResponseBodyAsString();
                return inputHTML;
            } else {
                return "А страничка-то и не загрузилась!!!";
            }
        } catch (IOException e) {
            return "Проблемы со связью";
        } finally {
            getMethod.releaseConnection();
        } 
    }
    public void StartReadCurrency() throws UnsupportedEncodingException
    { 
     String page;
     HttpClientTest client = new HttpClientTest();
     page = client.HttpClientPage("http://finance.yahoo.com/q?s="+main_massive[1].toUpperCase()+"=X");
     System.out.println(page);    
    }    
}

Второй файл это мой сервлет
Код

import java.io.UnsupportedEncodingException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;


/**
 * Servlet implementation class servl
 */
@WebServlet("/servl")
public final class servl extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public void init(ServletConfig config) throws ServletException {
    HttpClientTestt client =new HttpClientTestt();
    try {
        client.StartReadCurrency();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    }
    public void destroy() {
    }

}


А выдает вот что:
Код

11.03.2011 17:50:03 org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
    at httpclient.my.servl.init(servl.java:18)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1133)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:799)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    ... 18 more
11.03.2011 17:50:03 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet httpclient.my.servl
java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at httpclient.my.servl.init(servl.java:18)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1133)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:799)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


PM MAIL ICQ   Вверх
MisterCleric
Дата 11.3.2011, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Как-то у тебя в classpath tomcat не вся commons-httpclient.jar лежит:
java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
artem_from_minsk
Дата 11.3.2011, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Что самое интересное, что commons-httpclient.jar лежит вся. Если создать класс вот  и потом запустить 
HttpClientTest client =new HttpClientTest();
        client.StartReadCurrency();

в нем то работает.
Код

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;

public class index {
    public static void main(String args[]) throws UnsupportedEncodingException, ClassNotFoundException, SQLException, IOException
    {
    HttpClientTest client =new HttpClientTest();
    client.StartReadCurrency();    
    }
}


Если запустить этот класс то ошибок не выдает. В чем прикол?

PM MAIL ICQ   Вверх
artem_from_minsk
Дата 11.3.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А хотя может и не добавлена. У томката свои библиотеки. Как к ним тогда добавить эту библиотеку. У меня в папке Java Resource\Libraries она есть, а вот в папке Java Resource\Libraries\Apache Tomcat v7 ее нет. Только по этому? А как туда эту библиотеку добавить. Не получается что-то.
PM MAIL ICQ   Вверх
artem_from_minsk
Дата 11.3.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И что означает не вся? Чего же не хватает?
PM MAIL ICQ   Вверх
artem_from_minsk
Дата 12.3.2011, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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