使用apache Tapestry注入访问Hibernate

时间:2014-11-18 19:39:59

标签: hibernate tapestry

我试图从shiro AuthorizingRealm扩展类访问一个hibernate实体/数据库。由于挂毯IOC没有注入页面/组件外部,我如何访问Hibernate会话以便访问数据库?

3 个答案:

答案 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模块中的服务。