JASPIC ServerAuthModule中的CDI注入不起作用

时间:2018-05-16 13:07:20

标签: java-ee wildfly cdi jaspic

在Java 10上使用Wildfly 11 Final。

我有JASPIC实现,它本身可以正常工作。我需要将它挂钩到数据库,以便我可以在public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject, Subject serviceSubject) throws AuthException {...}中进行身份验证。但@Resource(mappedName="java:jboss/datasources/someDB") javax.sql.DataSource db;的{​​{1}}始终为null

CDI按预期在同一个WAR归档中的任意Servlet类中工作 - 如果我在Servlet类中放置该行,它会给出一个db对象。

我通过DataSource进行手动查询来解决这个问题但我需要CDI来处理其他全局事务。有人遇到过这样的问题吗? private static InitialContext ic;WEB-INF/beans.xml元素中有bean-discovery-mode="all"个属性。

beans

1 个答案:

答案 0 :(得分:1)

这是预料之中的。 JASPIC比资源注入或CDI更旧,并且不支持。

在Java EE 7中,您可以使用类似

的内容
CDI.current().select(MyBean.class).get()

在非托管上下文中获取CDI bean。

另一个选项是Soteria,它是Java EE 8安全API的参考实现,也适用于WildFly 11。