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

Поиск:

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


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Каким образом можно создать конфиг для сервлета?


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
tux
Дата 15.3.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



В каком смысле? Чем стандартные средства описания параметров сервлета в web.xml не устраивают?
PM MAIL Skype GTalk Jabber YIM   Вверх
Maksym
Дата 15.3.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



ShurikA
расширю ответ tux:
что то типа такого в web.xml подойдет... ? :
Код

    <servlet>
        <servlet-name>Servlet Name</servlet-name>
        <servlet-class>mypackage.MyServlet</servlet-class>
        <init-param>
            <param-name>config_param_1_name</param-name>
            <param-value>config_param_1_value</param-value>
        </init-param>
    </servlet>



Это сообщение отредактировал(а) Maksym - 15.3.2007, 12:57
PM MAIL   Вверх
ShurikA
Дата 15.3.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Понял, спасибо!


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
superVad
Дата 15.3.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



to Maksym: а как эти параметры в сервлете доставать?
PM MAIL   Вверх
ShurikA
Дата 15.3.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(superVad @  15.3.2007,  14:48 Найти цитируемый пост)
to Maksym: а как эти параметры в сервлете доставать? 

Если я не ошибаюсь, то:
getInitParameter("param_name");


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
superVad
Дата 15.3.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



спасиба
PM MAIL   Вверх
ShurikA
Дата 15.3.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(ShurikA @  15.3.2007,  15:22 Найти цитируемый пост)
Если я не ошибаюсь, то:
getInitParameter("param_name"); 

но цчего то у менйа у самого это не работает...


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
AntonSaburov
Дата 15.3.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Код хорошо бы посмотреть.
PM MAIL WWW ICQ   Вверх
ShurikA
Дата 15.3.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Код

package apisserver;

import dataclasses.DataClasses.PageSubmission;
import java.io.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

import apisserver.DBMgr.*;
import dataclasses.DataClasses.AlbumDetails;
import dataclasses.DataClasses.DesignTemplate;
import dataclasses.DataClasses.TemplateData;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */


public class ApisServer extends HttpServlet {
    private static final String TEXT_CONTENT_TYPE = "text/html";
    private static final String OBJECT_CONTENT_TYPE =
            "application/x-java-serialized-object";
    private static final String GET_TMPL_INDEXES = "get_tmpl_indexes";
    private static final String GET_TMPL = "get_tmpl";
    private static final String GET_TEMPLATE = "get_template";
    private static final String GET_ALBUM_DETAILS = "get_album_details";
    
    private Config cfg = null;
    
    //Initialize global variables
    public void init() throws ServletException {
        //load all needed params
        ServletConfig sc = getServletConfig();
        cfg = new Config(sc.getInitParameter("db_url"), 
                sc.getInitParameter("db_user"), sc.getInitParameter("db_pass"));
    }
    
    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        String act = request.getParameter("act");
        
        //check the message
        if(act != null){
            if (act.equals(GET_TMPL_INDEXES)) {
                SendTmplIndexList(request, response);
            } else if (act.equals(GET_TMPL)) {
                SendTemplatePreview(request, response);
            } else if (act.equals(GET_TEMPLATE)) {
                this.SendTemplate(request, response,
                        Integer.parseInt(request.getParameter("tId")));
            } else if(act.equals(GET_ALBUM_DETAILS)){
                this.SendAlbumDetails(request, response, request.getParameter("oId"));
            }
        }else {
            Object obj = GetObject(request);
            if(obj instanceof PageSubmission){
                SendPageSubmissionConfirmation(response, (PageSubmission) obj);
            }
        }
    }
    
    //Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        doGet(request, response);
    }
    
    //Clean up resources
    public void destroy() {
    }
    
    private Object GetObject(HttpServletRequest req){
        ObjectInputStream fromApplet = null;
        Object obj = null;
        try {
            fromApplet = new ObjectInputStream(req.getInputStream());
            obj = fromApplet.readObject();
            fromApplet.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
        return obj;
    }
    
    private void SendObject(HttpServletResponse response, Object obj) {
        ObjectOutputStream outToApplet;
        try {
            response.setContentType(OBJECT_CONTENT_TYPE);
            outToApplet = new ObjectOutputStream(response.getOutputStream());
            outToApplet.writeObject(obj);
            outToApplet.flush();
            
            outToApplet.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    private void SendPageSubmissionConfirmation(HttpServletResponse response, PageSubmission pageSubmission) {
        try {
            
        } catch (Exception ex) {
            ex.printStackTrace();
            pageSubmission.setException(ex);
        }
        
        this.SendObject(response,pageSubmission);
    }
    
    private void SendAlbumDetails(HttpServletRequest request, HttpServletResponse response, String oid){
        AlbumDetails aTmpl = null;
        DBMgr dbMgr = new DBMgr(request, cfg);
        try {
            aTmpl = dbMgr.GetAlbumDetails(oid);
        } catch (Exception ex) {
            ex.printStackTrace();
            aTmpl.setException(ex);
        }
        
        this.SendObject(response,aTmpl);
    }
    
    private void SendTemplate(HttpServletRequest request, HttpServletResponse response, int id) {
        DesignTemplate tmpl = null;
        StringBuffer str = new StringBuffer();
        DBMgr dbMgr = new DBMgr(request, cfg);
        try{
            tmpl = dbMgr.BuildTemplate(id, str);
        }catch (Exception e){
            tmpl.setException(e);
        }
        
        this.SendObject(response, tmpl);
    }
    
    private void SendTemplatePreview(HttpServletRequest request, HttpServletResponse response) {
        DBMgr dbMgr = null;
        Object obj = null;
        TemplateData td = null;
        
        try{
            obj = GetObject(request);
            if(obj instanceof TemplateData){
                dbMgr = new DBMgr(request, cfg);
                td = dbMgr.getTmplPreview(((TemplateData)obj).GetTmplID());
            } else {
                throw new Exception("Class type don't match");
            }
        } catch (Exception ex){
            if(td == null)
                td = new TemplateData();
            td.setException(ex);
        }
        
        
        dbMgr = null;
        obj = null;
        
        SendObject(response, td);
    }
    
    private void SendTmplIndexList(HttpServletRequest request, HttpServletResponse response) {
        ArrayList tmplIndexes = null;
        DBMgr dbMgr = null;
        Object obj = null;
        
        try {
            obj = GetObject(request);
            if(obj instanceof TemplateData){
                dbMgr = new DBMgr(request, cfg);
                tmplIndexes = dbMgr.GetTmplIndexList((TemplateData) obj);
            } else {
                throw new Exception("Class type don't match");
            }
        } catch (Exception e) {
            e.printStackTrace();
            tmplIndexes.add(e);
        }
        
        dbMgr = null;
        obj = null;
        
        SendObject(response, tmplIndexes);
    }
}



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
AntonSaburov
Дата 15.3.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



И ты хочешь сказать, что тебе параметры в init() не приходят ? 
Может проверить наименование параметров внимательнее ?

Или что-то другое не получается ?
PM MAIL WWW ICQ   Вверх
ShurikA
Дата 15.3.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(AntonSaburov @  15.3.2007,  17:33 Найти цитируемый пост)
И ты хочешь сказать, что тебе параметры в init() не приходят ?

Именно так.

Кстати вот web.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>ApisServer</servlet-name>
        <servlet-class>apisserver.ApisServer</servlet-class>
        <init-param>
            <param-name>sql_driver</param-name>
            <param-value>com.mysql.jdbc.Driver</param-value>
        </init-param>
        <init-param>
            <param-name>db_url</param-name>
            <param-value>jdbc:mysql://localhost:3306/apisdb</param-value>
        </init-param>
        <init-param>
            <param-name>db_user</param-name>
            <param-value>user</param-value>
        </init-param>
        <init-param>
            <param-name>db_pass</param-name>
            <param-value>pass</param-value>
        </init-param>
        </servlet>
    <servlet-mapping>
        <servlet-name>ApisServer</servlet-name>
        <url-pattern>/ApisServer</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
    <welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
</web-app>




--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Maksym
Дата 15.3.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



ShurikA
looks right.. Управление в init() попадает в дебаге? Что за контейнер? Нет ли warn и выше сообщений в логе? Попробуй добавить 
Код
<load-on-startup>1</load-on-startup>
, чтобы инициализация происходила при запуске приложения.
PM MAIL   Вверх
ShurikA
Дата 15.3.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(Maksym @  15.3.2007,  18:05 Найти цитируемый пост)
Попробуй добавить 
Разметка XML
<load-on-startup>1</load-on-startup>


Куда?


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Maksym
Дата 16.3.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Код

    <servlet>
        <servlet-name>Servlet Name</servlet-name>
        <servlet-class>mypackage.MyServlet</servlet-class>
        <init-param>
            <param-name>config_param_1_name</param-name>
            <param-value>config_param_1_value</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

Но параметры должны браться и без этого, при первом обращении к сервлету.
PM MAIL   Вверх
rrrookie
Дата 18.3.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 21.6.2006
Где: Rīga

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



На самом деле проблема в том, что ты переписал инит метод, а оригиналЬный инит метод как раз считывает 
конфиг парапетры при загрузке сервлета... 

если сделаеш так
Код


public void init(ServletConfig sc) throws ServletException {
        //load all needed params
   
        //ServletConfig sc = getServletConfig();
        super.init(sc);
        cfg = new Config(sc.getInitParameter("db_url"), 
                sc.getInitParameter("db_user"), sc.getInitParameter("db_pass"));
    }


всё заработает


Это сообщение отредактировал(а) rrrookie - 18.3.2007, 13:27
PM MAIL   Вверх
Maksym
Дата 19.3.2007, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



rrrookie
стоп, у ShurikA переопределен init() без параметров, который ничего не читает и вызывается уже после загрузки всех параметров:
Код

public abstract class GenericServlet
    implements Servlet, ServletConfig, Serializable {
...
    public void init(ServletConfig config)
        throws ServletException
    {
        this.config = config;
        init();
    }
    public void init()
        throws ServletException {
    }
...
}


Это сообщение отредактировал(а) Maksym - 19.3.2007, 02:38
PM MAIL   Вверх
ShurikA
Дата 19.3.2007, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



уже всё заработало.  
Код

public void init() throws ServletException {
        //load all needed params
        ServletConfig sc = getServletConfig();
        cfg = new Config(sc.getInitParameter("sql_driver"), sc.getInitParameter("db_url"), 
                sc.getInitParameter("db_user"), sc.getInitParameter("db_pass"));
    }



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1173 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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