2014-02-28 34 views
0

我想訪問java類中存在的靜態塊內的數據。在下面的數據中,可以在加載靜態塊的實例後訪問它。webAppAccess.getModelName()數據如何傳遞給鏈接的java對象類中的任何靜態塊?

public final static 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是一個用戶的請求時獲取信息的有關 要求,而不僅僅是Web應用程序,並將其從行動 隱式傳遞和webAppAccess.callMethod,而不是實例化對象。
  • getModelName()返回用於生成WebApp的模型的名稱,它不是userId(請參閱webAppAccess.getUserInfo()。getUserID())。
  • 您不應該從Web應用程序的用戶實例設置System(JVM)寬屬性,因爲它會影響該JVM中的所有其他用戶請求。

在如何處理應該使用LJO初始化代碼以及從基於WEF的模型中定製初始化的方面,請查看鏈接Java高級部分中的「初始化方法」輸入對象構建器。

我希望這可以幫助, ..邁克布拉提 本網站上的帖子是我自己的,並不一定代表IBM的立場,策略或觀點。

相關問題