使用OpenEJB @ApplicationComposer在junit测试中设置测试方法的用户凭据

时间:2012-06-07 22:34:45

标签: java-ee junit ejb openejb

当我使用@ApplicationComposer配置测试时,它不会在具有适当属性的企业bean中创建SessionContext。无论我在配置中放置什么,它总是使用PropertiesLogin。

我总是得到

javax.ejb.EJBException: User not found for login guest

异常。这是我的junit测试类和示例bean。

@RunWith(ApplicationComposer.class)
public class OpenEJBTest {
  @EJB
  UserUtil uu;

   @Configuration
   public Properties properties() {
    Properties p=new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
    p.put(Context.SECURITY_PRINCIPAL, "test");
    p.put(Context.SECURITY_CREDENTIALS, "test");
    p.put("openejb.authentication.realmName", "mylogmodule");
    return p;
   }
   @Test
   public void testSth() {
    uu.getUserlogin();
   }

}

@Stateless
public class UserUtilBean implements UserUtil {
    @Resource
    private SessionContext ctx;

    public String getUserLogin() {
        return ctx.getCallerPrincipal().getName();
    }
}

我尝试使用自定义LogModule(在login.config中定义的mylogmodule),默认模块(PropertiesLogin),在测试方法中使用Properties启动InitialContext,但没有成功。 感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

查看此链接setting custom login config

open ejb security 这可能会有所帮助