Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > как хранить connection к базе....?


Автор: xoma 21.2.2008, 13:41
Добрый день!

Вопрос вот такой.....есть некий сервлет....который обрабатывает все запросы....так же этот сервлет создает коннект к базе.....
После этого в зависимости от запроса - сервлет перенаправляет пользователя на нужную страничку....
Вопрос...как и где правльно хранить коннект к базе - что бы он был доступен целевой страничке(ну или сервлету)....я нашел несколько вариантов...
1) в контексте всего приложения...
2) как атрибут запроса, при редиректе на целевую страничку(или сервлетик)...


Автор: Llucas 21.2.2008, 15:39
А фреймворки не думал использовать ?

Автор: xoma 21.2.2008, 15:46
нельзя....по заданию можно только "чистые" сервлеты и jsp.....

p.s. а какой фреймворк подойдет???

Автор: v2v 21.2.2008, 16:09
не надо фреймворки.!
конекшины например можно хранить в server.xml 
Код


    <Context path="/yourapplication" docbase="/yourapplication"" reloadable="true" >
        <Resource name="jdbc/yuorDB" auth="Container" type="javax.sql.DataSource"
                    driverClassName="com.pom.bom.Driver"
                    maxActive="50" maxIdle="60" maxWait="10000"
                    username="********" password="*****" 
                    url="jdbc:somedb://somserver:port/yourDB"/>
    </Context>

Автор: Llucas 21.2.2008, 23:14
Цитата

не надо фреймворки.!


Это почему же не надо?
Подойдет например Spring.

Автор: v2v 21.2.2008, 23:16
А ЗАЧЕМ?

Добавлено через 1 минуту и 5 секунд
может быть человеку надо получить доступ к базе достать оттуда одну табличку и разместить это на одной jsp  страничке. для этого надо использовать фреймворк!?

Автор: Kangaroo 21.2.2008, 23:24
Цитата(v2v @  21.2.2008,  22:16 Найти цитируемый пост)
может быть человеку надо получить доступ к базе достать оттуда одну табличку и разместить это на одной jsp  страничке. для этого надо использовать фреймворк!? 

+1


Llucas, фреймворки не всегда помогают  smile 

Автор: VSergeyV 22.2.2008, 07:10
Цитата(v2v @  21.2.2008,  16:09 Найти цитируемый пост)
конекшины например можно хранить в server.xml 

т.е. саму инфу о коннекшинах так хранить, чуть дополню - под тем как правильно хранить коннекшины автором топика видимо подразумевалось что-то типа Database Connection Pool - http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

Автор: xoma 22.2.2008, 16:40
Собственно говоря задача вот какая.....есть (как я и писал контроллер, который все обрабатывет)......и есть странички....так вот....я хочу что бы коннект....к базе был доступен на каждой из страничек....я не хочу его каждый раз там создавать.....(аналогичная задача на перле - решалась так....был так же некий контроллер который при каждом обращении к нему создавал коннект как глобальную переменную.....и все последующие скрипты использовали эту глобальную переменную для коннекта)......

Автор: Llucas 25.2.2008, 10:48
Не понял, а я что говорил что нужно всегда использовать фреймворки? С чего это вы взяли, что я такое говорил? Я просто предложил, мало ли как потом разрастется проект, я же не могу знать полную картину того, что хочет xoma. Вы абсолютно не правильно меня закритиковали...

Автор: Eustace 25.2.2008, 21:03
xoma, ничего страшного не случится, тягай коннект каждый раз. Твой сервлет может и не дожить до следующего запроса пользователя, так что не факт, что переменная будет должным образом проинициализирована (если, конечно, метод init() не заоверрайдить).
На самом деле, App-сервер создаёт пул коннекшенов, так что при запросе на коннект он просто отдаёт тебе уже созданный коннекшн. Это достаточно дёшево по перфомансу, любое исполнение SQL-кода стоит дороже такого коннекта.
Как вариант решения могу предложить синглетонный класс, который инкапсулирует логику "взять коннект", а ты просто на каждой страничке будешь вызывать этот метод.

Автор: xoma 26.2.2008, 09:50
Цитата(Eustace @ 25.2.2008,  21:03)
xoma, ничего страшного не случится, тягай коннект каждый раз. 

Так вот как раз и стоит задача в том что бы при разработке страничек - разработчик не задумывался над тем как и с какой базой ему создать коннект.....Разработчик должен знать что коннект уже есть и он может просто его использовать....

Автор: tux 26.2.2008, 10:01
Цитата(xoma @  26.2.2008,  09:50 Найти цитируемый пост)
Разработчик должен знать что коннект уже есть и он может просто его использовать.... 

А пул соединений в таком случае почему не устраивает? Разработчик может получить источник данных по JNDI-имени, взять у него соединение и просто использовать. Что-то еще нужно?

Автор: ProgMaster 27.2.2008, 10:48
Use managed beans for example.

Автор: xoma 27.2.2008, 13:06
Цитата(tux @ 26.2.2008,  10:01)

А пул соединений в таком случае почему не устраивает? Разработчик может получить источник данных по JNDI-имени, взять у него соединение и просто использовать. Что-то еще нужно?

Да наверное вариант с пулом соединений подойдет.....(просто сделаю какой-то класс обертку - для более удобного извлечения коннектов....)

Спасибо всем!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)