2014-02-28 7 views
0

자바 클래스에있는 정적 블록 내부의 데이터에 액세스하려고합니다. 아래 데이터에서 정적 블록의 인스턴스가로드 된 후 액세스 할 수 있습니다.webAppAccess.getModelName() 데이터가 연결된 자바 객체 클래스의 정적 블록으로 전달 될 수있는 방법은 무엇입니까?

공개 최종 정적 org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger (OuterClass.class.getName()); 정적 초기화 자신이 디버그에 더 열심히 일을하게 및/또는 뭔가 특정 코드에서 잘못되면 문제/예외 처리 같은 경우

static String userId= ""; 
public static void getModelName(WebAppAccess webAppAccess) { 
    userId = webAppAccess.getModelName(); 
    logger.info("USERID " + userId); 
} 

정적 {

String PROPERTIES_FILE = "/config/log4j.properties"; 
    logger.info("USERID 2 " + userId); 
    if(userId.equals("qwe")) 
    System.setProperty("balancer.log", "C:\\log_f.out"); 
    else 
     System.setProperty("balancer.log", "C:\\log_f2.out"); 
    File file = new File (BSConfig.getHomedir() + PROPERTIES_FILE); 

답변

0

은 내가 팬이 아니에요.

그 외에도, 위의 코드에 문제가 몇 가지가 있습니다 :

  • WebAppAccess는 사용자의 요청시 상기 요청에 대한 정보에 접근 할뿐 아니라 웹 애플리케이션이며 행동 에서 암시 적으로 전달 된 것 및 webAppAccess.callMethod를 사용하여 오브젝트를 인스턴스화하지 마십시오.
  • getModelName()은 웹 응용 프로그램을 생성하는 데 사용되는 모델의 이름을 반환하지만 userId는 아닙니다 (webAppAccess.getUserInfo(). getUserID()를 참조하십시오).
  • 해당 JVM의 다른 모든 사용자 요청에 영향을 미치기 때문에 사용자의 웹 애플리케이션 인스턴스에서 시스템 (JVM) 전체 속성을 설정하면 안됩니다.

LJO로 한 번 초기화해야하는 코드를 처리하고 WEF 기반 모델에서 해당 초기화를 사용자 정의하는 방법에 관해서는 링크 된 Java의 고급 섹션에있는 "초기화 방법"입력을 살펴보십시오 객체 작성기.

이 정보가 도움이되기를 바랍니다. .. Mike Burati 이 사이트의 게시물은 필자 소개의 글 입니다만, IBM의 위치, 전략 또는 의견을 나타내는 것은 아닙니다.