【问题标题】:datasource get lost on WebLogic 12.2 without any reason数据源在 WebLogic 12.2 上无故丢失
【发布时间】:2019-09-29 03:14:21
【问题描述】:

我们想在 WebLogic 12.2.1.3 上部署一个基于 Spring 的应用程序。它使用带有 jdbc/payeshws 数据源的 JDBC 数据源。

当我部署应用程序(使用控制台或自动部署文件夹)并启动应用程序时一切正常,但如果我停止然后在 WebLogic 控制台中启动应用程序,则会引发异常,根本原因如下:

Caused by: javax.naming.NameNotFoundException: Unable to resolve 'jdbc.payeshws'. Resolved 'jdbc'
    at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1292)
    at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:354)
    at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:227)
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
    at weblogic.jndi.internal.ServerNamingNode.lookup(ServerNamingNode.java:527)
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:228)
    at weblogic.jndi.internal.ServerNamingNode.lookup(ServerNamingNode.java:527)
    at weblogic.jndi.internal.RootNamingNode.lookup(RootNamingNode.java:84)
    at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:307)
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:435)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at org.springframework.jndi.JndiTemplate.lambda$lookup$0(JndiTemplate.java:156)
    at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:91)
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:156)
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)
    at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:105)
    at org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup.getDataSource(JndiDataSourceLookup.java:45)

如果我启动,再次停止 WebLogic,它会再次正常。

我什至尝试重新启动数据源(通过在 AdminServer 上启用和禁用它),但问题仍然存在。

我们的应用程序在 WebLogic 12.1 + Java 7 上运行没有任何问题。

附:我不确定它是否有帮助,但该应用程序使用 MyBatis 进行数据访问。

【问题讨论】:

    标签: java spring weblogic mybatis weblogic12c


    【解决方案1】:

    我找到了答案here。我认为这是 Spring 5.1.x 的错误,因为使用 Spring 4.2.x 没有这样的问题。

    我应该将 destroyMethod="" 添加到数据源定义 bean,如

    @Bean(destroyMethod = "")
    public DataSource jndiDataSource() {
        JndiDataSourceLookup lookup = new JndiDataSourceLookup();
        return lookup.getDataSource(datasourceJndi);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 2020-08-14
      相关资源
      最近更新 更多