2013-07-15 95 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来设置属性。