【问题标题】:Weblogic AdminServer DataSource Connection OverloadedWeblogic AdminServer 数据源连接重载
【发布时间】:2017-09-21 08:01:41
【问题描述】:

我在 WebLogic 中部署并运行了一个 Spring Web 应用程序。它需要通过 JNDI DataSource 连接到数据库。

在关注post 之后,我的应用程序能够找到 jndi 数据源。我使用单个数据源进行了测试,它工作正常。但是,当数据源是多数据源时,一旦我的应用程序启动,两个 AdminServer 立即处于过载状态。

知道是什么导致了 AdminServer 上的过载状态吗?我使用的 weblogic 版本是 12.2.1.2.0。

如果我从数据源中删除 AdminServer,我的应用程序将无法查找数据源。

以下是我查找 JNDI 数据源的代码。

@Bean
public DataSource dataSource()  {
  String jndiDs = 
  dbProperties.getProperty(DB_DATASOURCE_JNDI_NAME_OPTION);
  LOGGER.info("Lookup jndi datasource {}", jndiDs);

  JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
  try {
    Properties jndiEnvironment = new Properties();
    jndiEnvironment.setProperty("lookupOnStartup", "false");
    jndiEnvironment.setProperty("proxyInterface", "javax.sql.DataSource");
    dsLookup.setJndiEnvironment(jndiEnvironment);

    JndiTemplate jndiTemplate = new JndiTemplate();
    Properties environment = new Properties();
    String namingProviderUrl = dbProperties.getProperty(DB_DATASOURCE_JNDI_NAMING_PROVIDER_URL, "t3://localhost:8301");
    environment.setProperty("java.naming.provider.url", namingProviderUrl);
    environment.setProperty("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
    jndiTemplate.setEnvironment(environment);
    dsLookup.setJndiTemplate(jndiTemplate);

    DataSource ds = dsLookup.getDataSource(jndiDs);
    LOGGER.info("Use jndi datasource {}", jndiDs);
    return ds;
  } catch (Exception e) {
    LOGGER.error("Failed to load jndi datasource {}", jndiDs, e);
    throw e;
  }
}

我仍然不明白为什么需要选择 AdminServer 作为目标之一。怎样做才能使 AdminServer 不作为数据源目标的一部分?

附: (多数据源是围绕一组数据源的抽象,提供数据源之间的负载平衡和故障转移。)

【问题讨论】:

    标签: spring weblogic datasource jndi


    【解决方案1】:

    所以,当您说两个 AdminServers 时,我假设您的意思是两个域。因为,AFAIK,AdminServer 代表 WLS 中的域。

    如果我从数据源中删除 AdminServer,我的应用程序将失败 查找数据源。

    是的,那将失败。因为您的应用程序将部署在同一域服务器上,并且它会寻找数据源。

    我还是不明白为什么要选AdminServer 的目标。可以做什么 AdminServer 不会成为 数据源目标?

    因此,当您为任何数据源定义 Target 时,意味着您正在将该数据源部署在该域服务器上,并且只能被部署在同一域服务器下的所有应用程序访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2020-11-10
      • 2016-02-22
      • 2017-11-24
      • 2016-09-13
      相关资源
      最近更新 更多