2016-10-25 1 views
-4

버튼을 클릭하여 관리 빈에서 응용 프로그램 모듈 구성 속성 (jbo.ampool.timetolive) 값을 설정하려면 adf 페이지에서 다음 코드로 시도했지만 속성 값 설정되지 않습니다.안녕하세요, 프로그래밍 방식으로 속성에 액세스하는 중

public Object getInfo(String string, Object environment) { 
    Hashtable envHashtable = (Hashtable)environment;  
    envHashtable.put(ApplicationModule.PROPERTY_LABEL.equals("jbo.ampool.timetolive"),"7200000"); 
    return null; 
} 

친절하게 내가 시도 할 것입니다 무슨이 여기에 까다로운 물건이지만,이

+0

귀하의 질문을 잠깐 투자하고 질문을 수정하고 읽기 쉽고 답변 할 수 있도록 개선하십시오. 나는이 [Jon Skeet의 체크리스트] (https://codeblog.jonskeet.uk/2012/11/24/stack-overflow-question-checklist/)를 따르는 것이 좋습니다. – RealSkeptic

+0

왜 모든 downvotes 모르겠어요. 모델 질문이 아니라는 점에 동의합니다. 그러나 ADF를 아는 것만 큼 분명합니다. –

답변

0

OK 날입니다 도와 : 당신의 구성 (bc4j.xcfg 파일)에서

을 가리 키도록 jbo.ampool.sessioncookiefactoryclass 설정 사용자가 제공하는 클래스에

<BC4JConfig ...> 
    <AppModuleConfigBag ...> 
     <AppModuleConfig ...> 
     <AM-Pooling jbo.ampool.sessioncookiefactoryclass="mypackage.MySessionCookieFactory"/> 

클래스, MySessionCookieFactory는를 확장해야합니다 (의이 MySessionCookieFactory를 호출하자)및 createSessionCookie을 재정 의하여 사용자 지정 EnvInfoProvider를 다시 전달하십시오.

public SessionCookie createSessionCookie(String applicationId, String sessionId, ApplicationPool pool, 
             Properties properties) { 
    final SessionCookie cookie = mFactory.createSessionCookie(applicationId, sessionId, pool, properties); 
    final EnvInfoProvider provider = new MyEnvInfoProvider(); 
    cookie.setEnvInfoProvider(provider); 
    return cookie; 
} 

MyEnvInfoProvideroracle.jbo.common.ampool.EnvInfoProvider를 확장하고 다시 전달하고 원하는 jbo.ampool.timetolive의 값을 가지고 환경에 getInfo()를 재정의해야합니다. 당신이 모든 것을 할 경우

그래서, 그래서

@Override 
public Object getInfo(String infoType, 
         Object configurationEnvironmentObject) { 
    // NOTE: Watch logging in this method. It gets called for *every request* and it can really clutter up a log. 
    // Cast the configuration environment passed in to it's correct type. It's really lame that Oracle's signatures include Object types 
    // instead of the correct classes or interfaces. 
    final Hashtable<String, String> configurationEnvironmentHashtable = 
            (Hashtable<String, String>) configurationEnvironmentObject; 

//  if (EnvInfoProvider.INFO_TYPE_SESSION_ENVIRONMENT.equals(infoType)) { 
     configurationEnvironmentHashtable.put(PropertyConstants.ENV_AMPOOL_TIME_TO_LIVE, (String) MyClass.getTTL()); 
//  } 
    return configurationEnvironmentHashtable; 
} 

... MyEnvInfoProvider에, 당신은 MyClass.getTTL()에 의해 반환됩니다 무엇이든 할 jbo.ampool.timetolive을 제어 할 수 있습니다. 따라서 변수를 업데이트하면 MyClass.getTTL()이되고 jbo.ampool.timetolive으로 사용됩니다.

나는이 접근 방식 환경 설정을 수행했지만, 특히 jbo.ampool.timetolive이 아닙니다. 따라서이 방법이 당신에게 적합하다는 것을 보장 할 수 없습니다.

왜 동적으로 설정해야합니까? 왜 bc4j.xcfg 파일에 720000을 넣고 끝내야합니까?

관련 문제