Jboss 如何在war层中实现Picketlink验证器

Jboss 如何在war层中实现Picketlink验证器,jboss,jboss7.x,wildfly,Jboss,Jboss7.x,Wildfly,正如标题所说,我在war层中创建了一个用@Picketlink注释的类。注意,我有一个ear部署结构(ejb,war) 自定义身份验证器: @PicketLink public class PicketlinkAuthenticator extends BaseAuthenticator { } 如果我将该类放在ejb层,身份验证就可以了,但是当我将其放在war层时,项目似乎找不到它,因为它抛出: 20:49:46,027 INFO [org.picketlink.common] (defa

正如标题所说,我在war层中创建了一个用@Picketlink注释的类。注意,我有一个ear部署结构(ejb,war)

自定义身份验证器:

@PicketLink
public class PicketlinkAuthenticator extends BaseAuthenticator { }
如果我将该类放在ejb层,身份验证就可以了,但是当我将其放在war层时,项目似乎找不到它,因为它抛出:

20:49:46,027 INFO  [org.picketlink.common] (default task-10) Using logger implementation: org.picketlink.common.DefaultPicketLinkLogger
20:49:46,043 INFO  [org.picketlink.idm] (default task-10) PLIDM001000: Bootstrapping PicketLink Identity Manager
20:49:46,068 WARN  [org.picketlink.idm] (default task-10) PLIDM001101: Working directory [\tmp\pl-idm] is marked to be always created. All your existing data will be lost.
20:49:46,111 INFO  [org.picketlink.idm] (default task-10) PLIDM001100: Using working directory [\tmp\pl-idm].
20:49:46,127 DEBUG [org.picketlink.idm] (default task-10) No partitions to load from \tmp\pl-idm\pl-idm-partitions.db
20:49:46,152 DEBUG [org.picketlink.idm] (default task-10) Initializing Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436] with id [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
20:49:46,153 DEBUG [org.picketlink.idm] (default task-10) Loaded Agents for Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
20:49:46,154 DEBUG [org.picketlink.idm] (default task-10) Loaded Credentials for Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
为什么不把验证器移到ejb端呢? ->因为我抛出自定义错误,如用户过期等。我需要jsf发布这些错误消息

为什么不在web层中移动picketlink依赖项? ->因为扩展picketlink帐户的我的帐户绑定到我的服务

正如这里所建议的,我已经在war项目中添加了picketlink模块:


错误的

不管怎么说,关于这个?我只想显示一些自定义错误:-(

我无法解决此问题,但我有一个变通解决方案,即将picketlink模块移动到web层,并将标识实例传递给需要它的服务。

我也有一段时间没有解决相同的问题(现在是2016年…)。似乎有效的方法是添加以下CDI注释:

@PicketLink
@名字
@请求范围
公共类PicketlinkAuthenticator扩展BaseAuthenticator{}
我希望核心身份验证管理器仅基于
@PicketLink
注释来获取此信息,但如果没有CDI注释,自定义
身份验证程序
类甚至从未加载。也许还有其他方法需要我们引导PicketLink,但我找不到任何引用。

可能副本
<jboss-deployment-structure>
  <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
  <sub-deployment name="THE-WAR-MODULE-THAT-REQUIRES-PICKETLINK.war">
    <dependencies>
      <module name="org.picketlink" />
    </dependencies>
  </sub-deployment>
</jboss-deployment-structure>