如何在shiro.ini中定义初始上下文工厂?

时间:2016-12-13 12:28:43

标签: java jndi shiro tomee

在我的Shiro应用程序中,我使用JndiRealmFactory来定义我的领域。我像这样注册我的领域:

Hashtable<String, String> args = new Hashtable<>();
args.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
InitialContext ctx = new InitialContext(args);
ctx.bind("realms/MyRealm", myRealm);

然而,Shiro找不到realms/MyRealm。我认为原因是,我需要定义JndiRealmFactory的jndiEnvironment,其中包含Context.INITIAL_CONTEXT_FACTORY属性。但是,我不知道如何在shiro.ini中设置此属性:

realmFactory.jndiEnvironment = ?

我在TomEE上运行我的应用程序。

我当前的shiro.ini看起来像这样:

realmFactory = org.apache.shiro.realm.jndi.JndiRealmFactory
realmFactory.jndiNames = realms/MyRealm

1 个答案:

答案 0 :(得分:0)

你不应该在运行时绑定EE上下文中的任何东西。您可以在tomcat中将其定义为资源或resources.xml(特定于tomee),然后使用标准查找来读取值(没有传递给InitialContext的特殊属性。