WebLogic에서 Spring 웹 응용 프로그램을 배포하고 실행하고 있습니다. JNDI DataSource를 통해 데이터베이스에 연결해야합니다.Weblogic AdminServer 데이터 소스 연결이 오버로드 됨
post을 따른 후, 내 응용 프로그램은 jndi 데이터 소스를 찾을 수 있습니다. 단일 데이터 소스로 테스트했는데 정상적으로 작동합니다. 그러나 데이터 소스가 다중 데이터 소스 인 경우 응용 프로그램이 시작되면 두 AdminServer가 즉시 과부하 상태가됩니다.
AdminServer에서 과부하 상태의 원인은 무엇입니까? 내가 사용하는 웹 로직 버전은 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가 데이터 소스 대상의 일부가되지 않도록하려면 어떻게해야합니까?
P. 가 (다중 데이터 소스 데이터 소스 사이에로드 밸런싱 및 장애 복구 기능을 제공 데이터 소스의 그룹 주위에 추상화입니다.)