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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataSource, передача имени и пароля, struts-config.xml 
V
    Опции темы
Vassik
Дата 11.5.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всемsmile В общем то пустяковая проблема, искал по форуму вроде нету)
Использую я в своем web приложении DataSource, в struts-config.xml описываю свой источник, вот так вот:
Код

<data-sources>
    <data-source type="org.apache.commons.dbcp.BasicDataSource" key="lecturersDB">
        <set-property property="driverClassName" value="org.firebirdsql.jdbc.FBDriver" />
        <set-property property="url" value="jdbc:firebirdsql://localhost:3050/E:\\MyDB\\УИР\\LECTURER_DB.gdb" />
        <set-property property="username" value="sysdba" />
        <set-property property="password" value="masterkey" />
        <set-property property="validationQuery" value="SELECT * FROM HON_TITLE" />
    </data-source>
</data-sources>  

 собственно проблема в том, каким  образом мне описасть property="username" и property="password", чтобы из экшен класса можно было username и password, динамически задать(методом getConnection(name,password)) smile , т.е например:
Код

DataSource dataSource;
dataSource=(DataSource) servlet.getServletContext().getAttribute("lecturersDB");
String name = ((LoginForm)form).getName();
String password  = ((LoginForm)form).getPassword();
Connection conn = dataSource.getConnection(name,password);

 
Зарание спасибо  smile 

Это сообщение отредактировал(а) Vassik - 11.5.2007, 00:25
PM MAIL   Вверх
Devorior
Дата 11.5.2007, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я не проверял, но думаю что так:

Код

BasicDataSource dataSource;
dataSource=(BasicDataSource) servlet.getServletContext().getAttribute("lecturersDB");
String name = ((LoginForm)form).getName();
String password  = ((LoginForm)form).getPassword();
datasource.setUsername(name);
datasource.setPassword(password);
Connection conn = dataSource.getConnection();

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


Шустрый
*


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

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



Цитата(Devorior @  11.5.2007,  08:33 Найти цитируемый пост)
Я не проверял, но думаю что так:


Я видно не совсем точно поставил вопрос, я имел ввиду каким образом мне описать data-source в struts-config.xml, чтобы мне из кода можно было имя и пороль задать при создании подключения, вот так вот:
Код

Connection conn = dataSource.getConnection(name,password);



Это сообщение отредактировал(а) Vassik - 11.5.2007, 09:38
PM MAIL   Вверх
Devorior
Дата 11.5.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

Код

dataSource.getConnection(name,password)


Это я так понял из javadoc устаревший метод и используется конструкция dataSource.getConnection(), поэтому в своем примере я установил логин и пароль из формы через методы set()
PM MAIL ICQ   Вверх
Vassik
Дата 11.5.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Devorior @  11.5.2007,  09:47 Найти цитируемый пост)
Конфиг остается тем же, просто в коде который я привел ты подменяешь логин и пароль из файла на те, что идут из формы.


Хм..интересно, а если я не хочу светить пароль и имя в конфиге, это как нибудь можно сделать? Просто если на обум значения поставить, т.е несуществующий логин, то ошибка появляется на сколько я помню, просто ща не могу проверить.
PM MAIL   Вверх
eXcile
Дата 11.5.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Vassik @  11.5.2007,  09:38 Найти цитируемый пост)
 я имел ввиду каким образом мне описать data-source в struts-config.xml, чтобы мне из кода можно было имя и пороль задать при создании подключения, вот так вот


Ты что хочешь из кода менять struts-config.xml? Так по-моему это не логично.

Когда загружается твой datasource, то все регистрируется под юзера и его пасс который как раз находится в struts-config.xml. Каким образом ты собираешься это сделать я не понимаю, но если до чего до шаманишься, выложи этот шедевр посмотреть людям.
--------------------
Не становитесь рабом шаблона [Винсент Ван Гог]
PM MAIL   Вверх
Devorior
Дата 11.5.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

Хм..интересно, а если я не хочу светить пароль и имя в конфиге, это как нибудь можно сделать?


Этот конфиг закрыт от внешнего доступа, а внутри сервера и без него куча конфигов с интересными вещами которые админ может посмотреть. Так что это просто бессмыслица какая-то
PM MAIL ICQ   Вверх
Vassik
Дата 11.5.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Devorior @  11.5.2007,  14:05 Найти цитируемый пост)
Этот конфиг закрыт от внешнего доступа, а внутри сервера и без него куча конфигов с интересными вещами которые админ может посмотреть. Так что это просто бессмыслица какая-то


Понятно, т.е я так понимаю, что при описании data-source в struts-config.xml прописывать пользователя с минимальными правами доступа, а потом из кода создавать соединение с необходимым логином? И это общепризнанные способ работы с DataSource в данном случае? Т.е я правильно понимаю, что нельзя поставить какой нить значение вот здесь
Код

<set-property property="username" value="sysdba" />
<set-property property="password" value="masterkey" />

, чтобы data-source знал, что логин нужно получить из вне? Мне просто тогда непонятно, получается, что прямо при старте приложение создается пул соединений, т.е соединения уже созданы, еще при первом обращении к
Код

dataSource.getConnection()

и я так понимаю, что этот метод всего лишь закрепляет за конкретным пользователем этот самый connect. Тогда вообще непонятно каким образом происходи подмен имени и пароля, соответственно и прав уже в существующим соединение. Или я не прав в самой сути работы data-source? Может кто подскажет тогда?

В общем то вопросов много получилосьsmile было замечательно, если бы на них все ответили.

Это сообщение отредактировал(а) Vassik - 11.5.2007, 14:39
PM MAIL   Вверх
tux
Дата 11.5.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(Vassik @  11.5.2007,  14:36 Найти цитируемый пост)
Понятно, т.е я так понимаю, что при описании data-source в struts-config.xml прописывать пользователя с минимальными правами доступа, а потом из кода создавать соединение с необходимым логином?

Нет.

Цитата(Vassik @  11.5.2007,  14:36 Найти цитируемый пост)
И это общепризнанные способ работы с DataSource в данном случае?

Тоже нет.

Цитата(Vassik @  11.5.2007,  14:36 Найти цитируемый пост)
Т.е я правильно понимаю, что нельзя поставить какой нить значение, чтобы data-source знал, что логин нужно получить из вне?

Нельзя.

Цитата(Vassik @  11.5.2007,  14:36 Найти цитируемый пост)
Мне просто тогда непонятно, получается, что прямо при старте приложение создается пул соединений, т.е соединения уже созданы

Все правильно.

Цитата(Vassik @  11.5.2007,  14:36 Найти цитируемый пост)
Тогда вообще непонятно каким образом происходи подмен имени и пароля, соответственно и прав уже в существующим соединение.

Именно в связи с предыдущим поменять имя пользователя и пароль НЕЛЬЗЯ.
PM MAIL Skype GTalk Jabber YIM   Вверх
Vassik
Дата 11.5.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(tux @  11.5.2007,  14:40 Найти цитируемый пост)
Цитата(Vassik @  11.5.2007,  14:36 )Понятно, т.е я так понимаю, что при описании data-source в struts-config.xml прописывать пользователя с минимальными правами доступа, а потом из кода создавать соединение с необходимым логином?Нет.


Тогда как правильно делать, для каждого пользователя создавать свой data-source в struts-config.xml ?
В таком случае зачем нужны методы создания соеденения, где можно установить имя и пароль? Такие как
Код

datasource.setUsername(name);
datasource.setPassword(password);
Connection conn = dataSource.getConnection();

или
Код

dataSource.getConnection(name,password)

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


Опытный
**


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

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



Проверил, действительно не прошло как я думал  smile 

Делать конфиг под пользователя, но это не вариант :(
PM MAIL ICQ   Вверх
tux
Дата 11.5.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(Vassik @  11.5.2007,  15:04 Найти цитируемый пост)
В таком случае зачем нужны методы создания соеденения, где можно установить имя и пароль?

Для того и нужны чтобы установить соединение с заданным именем и паролем. А здесь за тебя это сделал пул соединений. Иначе говоря, зачем ты в struts-config.xml прописываешь источник данных? Для того, чтобы избавиться от геморроя с установкой соединения и чтобы заюзать пул соединений. У тебя две альтернативы - либо устанавливаешь соединение руками и задаешь там все что хочешь либо даешь это сделать пулу соединений, задавая имя и пароль в конфиге. Поменять имя и пароль уже открытого соединения (которые пул соединений в себе и содержит) не получится. 

Это сообщение отредактировал(а) tux - 11.5.2007, 16:09
PM MAIL Skype GTalk Jabber YIM   Вверх
Vassik
Дата 11.5.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Т.е. другими словами возможность идентификации и аутентификация с DataSource у пользователя отсутствует, когда создается пул соединений, точнее она есть, но конечный пользователь на нее повлиять не может, так? Т.е если я хочу с процедурой авторизации работать, то коннект мне надо ручками писать получается....Хотя стоп можно же get методы использовать и просто сравнивать значение username и password. В общем надо до дома добраться и попробовать smile Всем пока спасибо  smile 
PM MAIL   Вверх
tux
Дата 11.5.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(Vassik @  11.5.2007,  16:58 Найти цитируемый пост)
Т.е. другими словами возможность идентификации и аутентификация с DataSource у пользователя отсутствует, когда создается пул соединений, точнее она есть, но конечный пользователь на нее повлиять не может, так?

Так.

Цитата(Vassik @  11.5.2007,  16:58 Найти цитируемый пост)
Т.е если я хочу с процедурой авторизации работать, то коннект мне надо ручками писать получается....

Именно. 5 строчек кода. Правда я никогда не встречал такой задачи, где это нужно.
PM MAIL Skype GTalk Jabber YIM   Вверх
Vassik
Дата 11.5.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(tux @  11.5.2007,  17:01 Найти цитируемый пост)
Именно. 5 строчек кода. Правда я никогда не встречал такой задачи, где это нужно.

Ну а как же, заходит юзверь на страницу, а там ему ввидите Имя\Пароль, ввел правильный получил список чего нить, ввел неправильно пробуешь еще разsmile
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.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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