Широ "Невозможно создать экземпляр класса" - PullRequest
0 голосов
/ 01 октября 2018

Это моя проблема: у меня есть веб-приложение, которое работало до субботы.Но тогда он не может загрузить мои права больше.Вот фрагмент кода в моем shiro.ini файле

entityRealm =  com.cagecfi.shiro.EntityRealm 
securityManager.authorizer = $entityRealm
authentif = com.cagecfi.Entities.Utilisateur

и java-классе:

public class EntityRealm extends AuthorizingRealm{

    protected UtilisateurFacadeLocal utifl;
    protected ProfilRoleFacadeLocal prfl;
    protected static Utilisateur utilisateur;
    protected static Profil profil;
    protected static List<ProfilRole> profilRoles;

    public EntityRealm() throws NamingException {
        System.out.println("enter entity realm");
        this.setName("entityRealm");
        CredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher("SHA-256");
        this.setCredentialsMatcher(credentialsMatcher);
        InitialContext context = new InitialContext();
        this.utifl = (UtilisateurFacadeLocal) context.lookup("java:global/DOLEANCESAPPLI/UtilisateurFacade");
        this.prfl = (ProfilRoleFacadeLocal) context.lookup("java:global/DOLEANCESAPPLI/ProfilRoleFacade");
        System.out.println("out entity realm");
    }

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

        final UsernamePasswordToken token = (UsernamePasswordToken) authcToken;

        utilisateur = utifl.getOneBy("login", token.getUsername());

        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo();
        try {
            if (utilisateur != null) {
                simpleAuthenticationInfo = new SimpleAuthenticationInfo(utilisateur.getLogin(), utilisateur.getPassword(), getName());
            } else {
                simpleAuthenticationInfo = null;
                throw new UnknownAccountException("Utilisateur inconnu");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return simpleAuthenticationInfo;
    }

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        String userId = (String) principals.fromRealm(this.getName()).iterator().next();
        utilisateur = utifl.getOneBy("login", userId);
        if (utilisateur != null) {
            final SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            profilRoles = this.prfl.getBy("profil", utilisateur.getProfil());

            final List<String> roles = new ArrayList<>();
            profilRoles.stream().forEach((proRole) -> {
                roles.add(proRole.getRole().getNom());
            });
            info.addRoles(roles);

            return info;
        } else {
            return null;
        }
    }


    public static Utilisateur getUser() {
        Subject currentUser = SecurityUtils.getSubject();
        if (currentUser.isAuthenticated()) {
            return utilisateur;
        }
        return null;
    }

    public static Subject getSubject() {
        return SecurityUtils.getSubject();

    }

    @Override
    public void clearCachedAuthorizationInfo(PrincipalCollection principals) {
        super.clearCachedAuthorizationInfo(principals);
    }

}

на странный путь, shiro отправляет мне это с субботы.

Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.shiro.config.ConfigurationException: Unable to instantiate class [com.cagecfi.shiro.EntityRealm] for object named 'entityRealm'.  Please ensure you've specified the fully qualified class name correctly.

Чтобы уточнить сразу после очистки и сборки он стал присылать мне эту ошибку.Я даже восстановил предыдущую резервную копию проекта и до сих пор ничего.Может кто-нибудь помочь мне и сказать, где я что-то пропустил?Спасибо.

...