我试图从shiro AuthorizingRealm扩展类访问一个hibernate实体/数据库。由于挂毯IOC没有注入页面/组件外部,我如何访问Hibernate会话以便访问数据库?
答案 0 :(得分:2)
尝试将此添加到AppModule(MongoDB示例):
@Contribute(WebSecurityManager.class)
public static void addRealms(Configuration<Realm> configuration, @Autobuild MongoRealm realm)
{
configuration.add(realm);
}
并提供您的AuthorizingRealm:
public class MongoRealm extends AuthorizingRealm
{
@Inject
private SomeDAO someDAO;
...
}
答案 1 :(得分:0)
如果您可以访问Tapestry注册表(例如,它存储在Servlet上下文中),那么您可以访问Tapestry内部的必要服务,最终访问Hibernate会话。
答案 2 :(得分:0)
Tapestry IOC只能@Inject
进入自己创建的服务。如果您使用new
构建了AuthorizingRealm,那么该实例不受IOC控制,并且不会被注入。
@Autobuild
AuthorizingRealm实例或将其声明为IOC模块中的服务。