0

Iam не в состоянии понять, как получить соединение в других классах (IAM с использованием пула соединений с использованием ГСБДА)Как получить статический объект соединения в случае объединения?

MyServlet // НЕ полным сводом

class MyServlet extends HttpServlet { 

    public Datasource getDatasource(){ 

    Class.forName(driver).newInstance(); 

       ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectUri, username, password); 

       PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, new GenericObjectPool(null), null, "SELECT null", false, true); 

       connectionPool = new GenericObjectPool(poolableConnectionFactory); 
       connectionPool.setMaxActive(10); 
       connectionPool.setMaxIdle(4); 

return new PoolingDataSource(connectionPool); 

    } 

Теперь у меня есть что-то вроде метода GetConnection внутри MyServlet

public static Connection getConnection() { 


    } 

A) Как я использовать источник данных внутри getConnection() static ethod? Я не хочу, чтобы сделать GetDataSource(), как статический метод, а затем использовать, так как я чувствую, используя статический опасно, когда мы используем Объединив механизм

B) Пожалуйста, покажите мне путь, чтобы получить в конечном счете статический GetConnection(), а также удовлетворяет объединяющие merchanism отлично ..

ответ

0

Я предлагаю, чтобы это предназначалось для шаблона Singleton.

1) Make a private static final PoolingDataSource reference in your 
Servlet class 

2) Make your getDataSource() method static. Construct the 
PoolingDataSource instance when the PoolingDataSource reference in 
the Servlet class is null and return it to the calling method. 
Otherwise, just return the already initialized instance of 
PoolingDataSource 

3) Get the DataSource in the calling method and create new 
connections from it 

4) Close the Connection objects after use, in finally block 
+0

Невозможно ли получить объект соединения внутри метода getConnection()? – user3128668

+0

Да, это возможно. вот что я упомянул в своем ответе. т.е. метод вызова getConnection() здесь – Keerthivasan

+0

Я не получил вас. Моя основная проблема: я могу получить объект подключения, выполнив datasource.getConnection() внутри статического метода getCOnnection(), но, сделав это, сделал меня make 'datasource' as static. попробуйте понять мою проблему. – user3128668

 Смежные вопросы

  • Нет связанных вопросов^_^