当前位置: 首页 > 知识库问答 >
问题:

如何在shiro中定义初始上下文工厂。伊尼?

翟宾实
2023-03-14

在我的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的jndiUNEP,其中包含Context。INITIAL_CONTEXT_FACTORY属性。但是,我不知道如何在我的shiro.ini中设置此属性:

realmFactory.jndiEnvironment = ?

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

我当前的shiro.ini如下所示:

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

共有1个答案

韦德厚
2023-03-14

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

 类似资料:
  • 我尝试使用 Websphere 8.5 完整配置文件将应用程序转换为 Liberty 配置文件,但我遇到了有关不兼容的问题。 无法找到初始上下文工厂 我知道班级的位置com.ibm.ws.ejb.thinclient_8.0.0.jar在完整的配置文件中,但我不能在Liberty配置文件中找到相关的,还有一件事,因为我正在做维护应用程序,所以班级要看看。 com . IBM . WebSphere

  • 问题内容: 我已经更新了项目(基于Websphere 8.5的Java EE),以使用公司内部框架的新版本(以及Ejb 3.x部署描述符,而不是2.x部署描述符)。从那时起,我的集成测试失败,但出现以下异常: 我可以使用先前的框架版本构建应用程序,并且一切正常。调试时,我注意到ContextFinder(javax.xml.bind)中有两种不同的行为: 先前版本(一切正常):所有地方都没有调出工

  • 我希望使用JMeter在Websphere MQ队列中创建测试负载。我只想将消息放置到队列中--所以我使用JMS Publisher Sampler。我拥有的配置项是:mqhost:port、MQChannel、MQQueueManager、MQQueue 在示例中,我输入了一些设置:Provider URL:tcp://mqhost:port destination:MQQueue 对于MQCh

  • 我有一个工厂,它应该根据名称返回一个实现。 为了让每次调用getMoules方法都不创建实例,有一个映射,其中所有的模块都必须在bootstrap类中初始化。我想摆脱手动操作的需要(也是所有的类都有一个显著的特征)。 我想到的选项列表: 反射(我们可以使用Scala反射API或任何第三方库) 自动化流程 需要在启动时立即初始化 反思是一种痛苦 宏只改变代码,执行稍后发生。 我们能把初始化过程移到编

  • 我使用以下代码在tomcat中设置上下文路径,通过覆盖tomcat的默认路径,我可以使用直接访问应用程序。 现在我将使用WildFly-8.2.0作为运行时环境。我尝试将。war文件直接粘贴到中,我可以在等浏览器中访问我的项目。 我需要像在tomcat中那样为wildfly设置相同的配置,以便通过重写wildfly的默认欢迎页面来访问中的项目。我试图在wildfly中做同样的事情,但我被困在哪里。

  • Tomcat文档列出了定义上下文的三个位置: 实际上,如果我在目录中添加一个空白的文件,那么当我访问相同的JSP文件时,Tomcat将返回一个404。