【发布时间】:2014-07-01 04:40:58
【问题描述】:
正如标题所说,我在战争层中创建了一个用@Picketlink 注释的类。请注意,我有一个耳朵部署结构(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 模块: https://docs.jboss.org/author/display/PLINK/JBoss+Modules
<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>
无论如何?我只想显示一些自定义错误:-(
【问题讨论】: