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