Получите ресурсы JNDI программно весной

1

У меня есть контейнер сервлетов Tomcat, который имеет список DataSource управляемый пулом соединений Tomcat. Из моего приложения Spring (Spring 3.2.3) я хотел бы получить один из этих источников данных во время выполнения, что-то вроде:

public class MyService {
    @Autowired 
    private JndiObjectLocator jndiLocator;

    public void myMethod(String jndiName) {
        DataSource myDataSource = jndiLocator.locate(jndiName);
    }
}

Любые идеи о том, как это сделать?

  • 0
    Зачем вам нужен поиск во время выполнения, почему вы не можете сделать это в конфигурации?
  • 0
    В чем проблема?
Показать ещё 4 комментария
Теги:
spring
tomcat
jndi

1 ответ

1
Лучший ответ

Вы всегда можете просмотреть JNDI-код в своем коде, вы можете использовать JndiDataSourceLookup для этого и вызвать метод getDataSource().

public class MyService {
    @Autowired 
    private JndiDataSourceLookup lookup;

    public void myMethod(String jndiName) {
        DataSource myDataSource = lookup.getDataSourcejndiName);
    }
}

Другой вариант - сделать ваш bean-компонент осведомленным о BeanFactory и получить оттуда DataSource.

public class MyService {
    @Autowired 
    private BeanFactory factory;

    public void myMethod(String jndiName) {
        DataSource myDataSource = factory.getBean(jndiName, DataSource.class);
    }
}
  • 0
    JndiDataSourceLookup это именно то, что я искал и работает отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню