2013-07-15 94 views
3

我試圖在我的arquillian測試中使用ProgrammaticLogin類在嵌入式glassfish中模擬登錄。 我的代碼如下:ProgrammaticLogin在arquillian測試中不起作用

System.setProperty("java.security.auth.login.config","path/login.config") 
com.sun.appserv.security.ProgrammaticLogin loginP = new ProgrammaticLogin(); 
    try{ 
     loginP.login("user1","password","fileRealm",true); 
    } 
    catch (Exception e){ 
     System.out.println(e.getMessage()); 
    } 

,我發現了以下異常:包含登錄名和密碼

SEVERE: SEC9050: Programmatic login failed 
com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Failed file login for user1. 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:394) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:240) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:153) 
    at com.sun.appserv.security.ProgrammaticLogin$1.run(ProgrammaticLogin.java:174) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:168) 
    at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:239) 
    at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:211) 

我添加了一個屬性文件users.properties。

+0

你可以發佈你的login.config的內容嗎? – bmurauer

回答

0

如果glassfish容器運行在它自己的進程中,則使用System.setProperty()定義的屬性不可用。它只能在測試中使用,測試在不同的過程中運行。也許你應該添加一個bean到你的部署中,使用@PostConstruct來設置屬性。