Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / доступ к переменной из класса / 10 сообщений из 10, страница 1 из 1
05.04.2007, 11:56:29
    #34439890
Tural
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
Хочу инициализировать одну переменную типа DataSource в области видимости приложения, что бы каждый раз при получении соединения не создавать его заново, а использовать уже имеющийся. Нижеследующий код пишу на странице index.jsp

Код: plaintext
1.
2.
3.
<c: if  test="${applicationScope.ds == null}">
   <sql:setDataSource dataSource="java:comp/env/jdbc/ccs_uniutf1" scope="application" var="ds"/>
</c: if >

Как получить доступ к этой переменной из классов?
...
Рейтинг: 0 / 0
05.04.2007, 12:10:03
    #34439961
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
а зачем у тебя бизнеслогика в JSP? сделай это в классе, а не в JSP, а потом используй в бинах, как тебе надо...
...
Рейтинг: 0 / 0
05.04.2007, 12:20:27
    #34440002
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
TuralКак получить доступ к этой переменной из классов?
Через JNDI-контекст :)
...
Рейтинг: 0 / 0
05.04.2007, 13:38:55
    #34440348
Tural
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
Как сделать так чтобы переменная была создана один раз на одном месте, а потом из других мест к ней был доступ? Я поэтому это начал делать на странице index.jsp. Но сейчас сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 public   class  DBHelper
{
    public   static  DataSource ds =  null ;

    public   static  Connection GetNewConnection()  throws  SQLException, NamingException
   {     
       if (ds ==  null )
      {
         InitialContext initialContext =  new  InitialContext();
         DBHelper.ds = (DataSource)initialContext.lookup("java:comp/env/jdbc/ccs_uniutf1");
      }
       return  DBHelper.ds.getConnection();
   }
   ...
}

Из index.jsp убрал тот код. Так как я сейчас сделал правильный подход?

...
Рейтинг: 0 / 0
05.04.2007, 14:27:51
    #34440584
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
почти... во-первых методы надо с маленькой буквы называть...
во-вторых, филд ds надо делать приватным,
в-третьих, вместо return DBHelper.ds.getConnection(); надо написать просто return ds;
в-четвертых, лично я бы не стал делать метод throwable, и обернул внутри него все try catch, и в кетче бы бросал какой-нибудь RuntimeException, т.к. это глобальная проблема, что нет датасоурса, а не локальная...
в-пятых, у тебя не threadsafe метод, нужна синхронизация где-нибудь.
в-шестых, это все называется паттерном проектирования Lazy Initialization - можешь поискать как его правильно надо писать.
...
Рейтинг: 0 / 0
05.04.2007, 14:35:37
    #34440638
Tural
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
y3u
спасибо. учту все.
...
Рейтинг: 0 / 0
05.04.2007, 14:38:54
    #34440659
Tural
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
Вопрос на счет 3-го пункта. Мой метод GetConnection возвращает Connection, а ds это DataSource. Мне в этом методе и нужен Connection, зачем тогда возвращать DataSource?
...
Рейтинг: 0 / 0
05.04.2007, 15:23:28
    #34440850
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
TuralВопрос на счет 3-го пункта. Мой метод GetConnection возвращает Connection, а ds это DataSource. Мне в этом методе и нужен Connection, зачем тогда возвращать DataSource?
Конечно, возвращать надо ds.getConnection(). А вот явное указание класса DBHelper можно выкинуть - метод и так внутри находится.
...
Рейтинг: 0 / 0
05.04.2007, 15:24:53
    #34440858
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
А, да - присваивать полю класса null не обязательно, все поля-референсы и так им инициализируются.
...
Рейтинг: 0 / 0
05.04.2007, 16:27:18
    #34441134
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
доступ к переменной из класса
TuralВопрос на счет 3-го пункта. Мой метод GetConnection возвращает Connection, а ds это DataSource. Мне в этом методе и нужен Connection, зачем тогда возвращать DataSource?

а... это я очепятался...с кем не бывает

ЗашедшийА, да - присваивать полю класса null не обязательно, все поля-референсы и так им инициализируются.

точно, не заметил...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / доступ к переменной из класса / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]