2017-09-21 14 views
0

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. 가 (다중 데이터 소스 데이터 소스 사이에로드 밸런싱 및 장애 복구 기능을 제공 데이터 소스의 그룹 주위에 추상화입니다.)

답변

0

그래서, 당신은 두 AdminServers, 나는 믿고있어 말할 때, 당신은 두 도메인을 의미 . AFAIK, AdminServer는 WLS의 도메인을 나타 내기 때문입니다.

데이터 소스에서 AdminServer를 제거하면 응용 프로그램에서 데이터 소스를 찾지 못합니다.

예, 실패합니다. 응용 프로그램이 동일한 도메인 서버에 배포되었으므로 응용 프로그램이 데이터 소스를 찾고 있습니다.

AdminServer를 대상으로 선택해야하는 이유는 여전히 이해할 수 없습니다. AdminServer가 데이터 소스 대상의 일부로 포함되지 않도록하려면 어떻게해야합니까?

그래서 데이터 소스에 대해 대상을 정의하면 해당 도메인 서버에 데이터 소스를 배포하고 동일한 도메인 서버 아래에 배포 된 모든 응용 프로그램에서만 액세스 할 수 있음을 의미합니다.