CDI @Inject在AuthorizingRealm

时间:2015-06-14 11:50:43

标签: osgi cdi shiro glassfish-4

我尝试在OSGI环境中使用Apache Shiro。 为了在MyAuthorizingRealm类上使用CDI bean,我有pax-shiro-cdi扩展名。 我的简单AuthorizingRealm就在这里:

    @ShiroIni
    public class MyAuthorizingRealm extends AuthorizingRealm {

        @Inject // will return null always
        private SimpleUserStorage userStorage;


        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)
                throws AuthenticationException {


            System.out.println(" BEAN " + userStorage);

            UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) authenticationToken;


            return new SimpleAccount(usernamePasswordToken.getPrincipal(),
                    "123456".toCharArray(), super.getName());

   }

我的SimpleUserStorage就在这里:

public class SimpleUserStorage {

    private List<String> users = new ArrayList<String>();

    public List<String> getUsers(){
        users.add("user");
        users.add("user1");
        return users;
    }
}

但奇怪的是我可以在我的RESTService类中注入SimpleUserStorage并且它运行良好..

SimpleUserStorage in RestService and it work well.
For example :

@Path("/user")
public class UserRestService {

    @Inject
    private SimpleUserStorage userStorage;

    @GET
    @Produces("text/html")
    public String getDataToDisplay() {
        return "<strong>Hehe)</strong>" + userStorage.getUsers().size() ;
    }
}

为什么在MyAuthorizingRealm中我得到null而不是SimpleUserStorage的参考?

我是用户Glassfish 4并尝试编写纯Java EE应用程序。

0 个答案:

没有答案