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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение xml файла из сервлета, xml лежит в /WEB-INF 
V
    Опции темы
newbie2
Дата 29.4.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



JDK 6.0, Tomcat 5.5, iBATIS, newbie2 smile

Пытаюсь прочитать xml-файл, который лежит в папке /WEB-INF:
В строчке:
Reader reader = Resources.getResourceAsReader("/WEB-INF/SqlMapConfig.xml");
Вылетает с исключением:
java.io.IOException: Could not find resource /WEB-INF/SqlMapConfig.xml
Код:
Код

import java.io.Reader;
import java.sql.SQLException;
import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.common.resources.Resources;
import ru.fka.struts.OrganizationForm;

public class OrganizationDao {
    private static final SqlMapClient sqlMapClient;

    static {
        try {
            Reader reader = Resources.getResourceAsReader("/WEB-INF/SqlMapConfig.xml");
            sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("Unable to create iBATIS sql map client.", e);
        }
    }

    public List getAllOrganizations( ) throws SQLException {
        return sqlMapClient.queryForList("getAllOrganizations", null);
    }
    public void insertOrganization(OrganizationForm organization) throws SQLException {
        sqlMapClient.insert("insertOrganization", organization);
    }
}


Подскажите, как считывать xml-файлы, лежащие в папке WEB-INF?
PM MAIL   Вверх
tux
Дата 30.4.2007, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



В твоем случае проще всего будет положить SqlMapConfig.xml в WEB-INF/classes и читать так:
Код

Reader reader = Resources.getResourceAsReader("/SqlMapConfig.xml");

Если нужно все-таки WEB-INF, то так:
Код

String path = request.getSession().getServletContext().getRealPath("/WEB-INF/SqlMapConfig.xml");
Reader reader = new FileReader(path);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);

PM MAIL Skype GTalk Jabber YIM   Вверх
newbie2
Дата 30.4.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Второй вариант предпочтительней, конечно...
Попробовал, теперь SqlMapConfig.xml читает.
Но тут дело в том, что внутри этого xml файла есть обращение к другому(им) xml:
Код

<sqlMap resource="OrganizationSqlMap.xml"/>

Он их не находит... Что можно сделать, чтобы можно было доставать OrganizationSQlMap.xml из папки WEB-INF?

Ещё, хотелось бы в xml файле ссылаться на локально сохранённый tld, а не через http://etc
Как это можно сделать?
PM MAIL   Вверх
newbie2
Дата 30.4.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так как времени мало, решил делать первым способом.
Но вопрос про tld в силе.
Также хотелось бы на будущее понять, как указывать xml-ки внутри других xml-ок (относительно какой папки ищется путь? И как брать xml-ки из web-inf?)
PM MAIL   Вверх
tux
Дата 30.4.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(newbie2 @  30.4.2007,  10:21 Найти цитируемый пост)
Он их не находит... Что можно сделать, чтобы можно было доставать OrganizationSQlMap.xml из папки WEB-INF?

Судя по документации IBatis никак. Он всегда пытается читать конфигурацию из ресурсов. Следовательно, только один вариант - положить всю конфигурацию куда-нибудь в дерево WEB-INF/classes.

Цитата(newbie2 @  30.4.2007,  10:21 Найти цитируемый пост)
Ещё, хотелось бы в xml файле ссылаться на локально сохранённый tld, а не через http://etc

А это зачем надо? Если заглянешь внутрь ibatis-*.jar, то сможешь там обнаружить два dtd, вот их IBatis и использует. В любом случае если хочешь использовать в XML локальный DTD, придется писать абсолютный путь: file://c:/ibatis...
PM MAIL Skype GTalk Jabber YIM   Вверх
newbie2
Дата 30.4.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всё понял, спасибо за разъяснения.
Цитата(tux @  30.4.2007,  12:08 Найти цитируемый пост)
А это зачем надо?

Просто если в xml указать неправильный адрес, приложение выдаёт exception, вот я и подумал, что в локальной сети без выхода в Интернет, тоже будет вылетать с exception-ом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.4059 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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