2017-06-28 17 views
0

私はJBoss 6.4 EAP上で動作し、Spring Securityを使用するJava EEアプリケーションを持っています。明らかにすべてのMaven依存関係がマップされています。しかし、ステートレスBeanがロードされた瞬間に、次のメッセージが表示されますステートレスBeanをSpringにマッピングする際のエラー

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'autenticacaoBO': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: ajg2/AutenticacaoBO -- service jboss.naming.context.java.app."ajg2-0.0.1-SNAPSHOT".ajg2.AutenticacaoBO 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1514) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) [spring-beans-3.2.13.RELEASE.jar:3.2.13.RELEASE] 
    ... 26 more 
Caused by: javax.naming.NameNotFoundException: ajg2/AutenticacaoBO -- service jboss.naming.context.java.app."ajg2-0.0.1-SNAPSHOT".ajg2.AutenticacaoBO 
    at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104) 
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:197) 
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:174) 
    at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:245) 

ファイルの春-のsecurity.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:sec="http://www.springframework.org/schema/security" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> 


    <jee:local-slsb id="autenticacaoBO" jndi-name="java:app/ajg2/AutenticacaoBO" business-interface="br.jus.ajg.bo.IAutenticacaoBO"/> 

    <bean id="appInternetAuthenticationProvider" class="br.jus.ajg.seguranca.AppInternetAuthenticationProvider"> 
     <property name="autenticacaoBO" ref="autenticacaoBO"/> 
    </bean> 
    <bean id="appIntranetAuthenticationProvider" class="br.jus.ajg.seguranca.AppIntranetAuthenticationProvider"> 
     <property name="autenticacaoBO" ref="autenticacaoBO"/> 
    </bean> 

</beans> 

ファイルAppInternetAuthenticationProvider.java:

package br.jus.ajg.seguranca; 

import java.io.IOException; 
import java.io.Serializable; 

import org.springframework.security.authentication.AuthenticationProvider; 
import org.springframework.security.authentication.AuthenticationServiceException; 
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; 
import org.springframework.security.core.Authentication; 
import org.springframework.security.core.AuthenticationException; 
import org.springframework.stereotype.Component; 

import br.jus.ajg.bo.IAutenticacaoBO; 
import br.jus.ajg.modelo.Profissional; 
import br.jus.ajg.util.VerifyRecaptcha; 

@Component 
public class AppInternetAuthenticationProvider implements AuthenticationProvider, Serializable { 

    private IAutenticacaoBO autenticacaoBO; 

    /** 
    * Este set é usado para injeção do EJB 
    */ 
    public void setAutenticacaoBO(IAutenticacaoBO autenticacaoBO) { 
     this.autenticacaoBO = autenticacaoBO; 
    } 

    public AppInternetAuthenticationProvider() { 

    } 

    @Override 
    public Authentication authenticate(Authentication authentication) throws AuthenticationException { 
     if (!autenticacaoBO.isSistemaEmManutencao()) { 

      AppWebAuthenticationDetails webAuthDetail = (AppWebAuthenticationDetails) authentication.getDetails(); 

      String gRecaptchaResponse = webAuthDetail.getRecaptcha_response(); 
      boolean validouRecaptcha = false; 
      try { 
       validouRecaptcha = VerifyRecaptcha.verify(gRecaptchaResponse); 
      } catch (IOException e) { 
       new AuthenticationServiceException("Problema na validação do recaptcha", e); 
      } 

      if (validouRecaptcha) { 
       String login = authentication.getName(); 
       String senha = authentication.getCredentials().toString(); 
       String infoNavegador = ((AppWebAuthenticationDetails) authentication.getDetails()).getHeaderRequest(); 

       Profissional p = autenticacaoBO.getProfissionalBO().autenticaProfissional(login, senha, infoNavegador); 
       if (p != null) { 
        return autenticacaoBO.geraTokenProfissional(p, senha); 
       } else { 
        throw new AuthenticationServiceException("CPF ou senha inválidos"); 
       } 
      } else { 
       throw new AuthenticationServiceException("O desafio reCAPTCHA foi respondido incorretamente!"); 
      } 

     } else { 
      throw new AuthenticationServiceException("Sistema em manutenção. Tente mais tarde."); 
     } 
    } 

    @Override 
    public boolean supports(Class<?> authentication) { 
     return authentication.equals(UsernamePasswordAuthenticationToken.class); 
    } 

} 

ことができる人助けて?

+0

JBossでJNDIツリーをチェックして、java:app/ajg2/AutenticacaoBOが利用できることを確認しましたか? –

答えて

0

ありがとうございました。実際、私はこのプロジェクトのオリジナル開発者から送られたヒントを忘れていました。 'Open laucnh configuration' JBossオプションのclasspathタブにプロジェクトライブラリを追加しました。

JBossはエラーなしで起動し、アプリはうまく動作しています。

関連する問題