2011-02-01 94 views
1

Folk如何在OpenEJB Embedded配置中指定UsersFile,GroupsFile和conf/login.config?

我在Netbeans中設置了OpenEJB,以便我們可以運行它並使用嵌入式配置進行調試。它工作正常,直到我們嘗試添加身份驗證。

當我們運行它作爲一個獨立的服務器,我們可以編輯安全用戶和組列表和它的工作原理:

${openejb.base}/conf/login.config 
${openejb.base}/conf/users.properties 
${openejb.base}/conf/groups.properties 

然而,在使用的時候,我們無法找到一個方法來指定這些3個文件OpenEJB嵌入式配置(Netbeans項目)。看來OpenEJB在任何地方都看不到它們。在嵌入式模式運行時

*javax.security.auth.login.FailedLoginException: User does not exist* 

有誰知道如何指定用戶和組OpenEJB的應該用什麼:該方法調用總是失敗?

這裏是NetBeans項目結構

PROJECTNAME/src目錄 - 所有源文件 PROJECTNAME/lib目錄 - 罐子:數據庫驅動程序,所有OpenEJB的庫 PROJECTNAME/lib中/ conf目錄 - 安全文件

謝謝,

路易斯

回答

1

您應該使用LocalInitialContext屬性來告訴OpenEJB的其中配置文件。在我們的設置中,我們配置了ant腳本編譯項目後,將下列文件複製到項目名稱/編譯:

conf/users.properties 
conf/openejb.xml 
conf/logs 
conf/logs/logs.txt 
conf/groups.properties 

然後你要告訴OpenEJB的哪裏可以找到他們:

Properties properties = new Properties(); 
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); 

//Here are the important properties that you were missing 
properties.setProperty("openejb.home", "../build"); 
properties.setProperty("openejb.configuration", "conf/openejb.xml"); 

//User and password for tests 
properties.put(Context.SECURITY_PRINCIPAL, "userName"); 
properties.put(Context.SECURITY_CREDENTIALS, "thePassword"); 

InitialContext initialContext = new InitialContext(properties); 

EJBRemote ejb = (EJBRemote) initialContext.lookup("EJBRemote"); 

現在你可以在NetBeans,Eclipse或任何IDE中運行OpenEJB。此外,您也可以使用ant腳本從命令行運行所有單元測試。

相關問題