如何在WebLogic应用程序初始化期间获取DataSource

时间:2016-02-16 18:31:21

标签: java spring oracle weblogic javabeans

我正在使用WebLogic和Spring,与Oracle DB交谈。我已经设置了一个实现ServletContextListener的Servlet,并配置了web.xml以将该类添加为监听器。在调用contextInitialized(ServletContextEvent sce)时,我正在尝试获取我在application.xml中的bean中配置的DataSource对象,以便在应用程序启动时我可以使用DB做一些事情。 / p>

  public void contextInitialized(ServletContextEvent sce) {
    try {
      InitialContext enc = new InitialContext();
      Context compContext = (Context) enc.lookup("java:comp/env");
      dataSource = (DataSource) compContext.lookup("dataSource");
      ...

这会在查找时抛出NameNotFoundException。我应该怎么做到这一点? 我的bean看起来像这样:

<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory"
      factory-method="getPoolDataSource">
    <property name="URL" value="jdbc:oracle:thin:@localhost:1521:XE"/>
    <property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource"/>
    <property name="connectionPoolName" value="COS_POOL"/>
    ...
</bean>

1 个答案:

答案 0 :(得分:0)

您可以在其中一个Spring Managed bean中使用@PostConstruct注释来执行应用程序启动期间所需的操作。或者,您可以实施InitializingBean并实施afterPropertiesSet方法。