2016-06-25 23 views
0

私はこの時点で私の春のセキュリティ(バージョン4)の問題に直面しています。ここでorg.springframework.security.authentication.InternalAuthenticationServiceException:JDBC接続を取得できませんでした

org.springframework.security.authentication.InternalAuthenticationServiceException: Could not get JDBC Connection 

はのAppConfigクラスである:ここで

@EnableWebMvc 
@Configuration 
    @ComponentScan({ "controller" }) 
@Import({ SecurityConfig.class }) 
    public class AppConfig { 

@Bean(name = "dataSource") 
public DriverManagerDataSource dataSource() { 

    System.out.println("-------- MySQL JDBC Connection Testing ------------"); 
    System.out.println("JDBC Driver Found"); 
    DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); 
     driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
    driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/QSQL"); 
    driverManagerDataSource.setUsername("root"); 
    driverManagerDataSource.setPassword("password"); 
    return driverManagerDataSource; 
} 

@Bean 
    public InternalResourceViewResolver viewResolver() { 
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
    viewResolver.setViewClass(JstlView.class); 
    viewResolver.setPrefix("/WEB-INF/Pages/"); 
    viewResolver.setSuffix(".jsp"); 
    return viewResolver; 
    } 

} 

は私のSecurityConfigクラスです:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

@Autowired 
DataSource dataSource; 

@Autowired 
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception { 
System.out.println("begin Auth Process"); 
    auth.jdbcAuthentication().dataSource(dataSource) 
    .usersByUsernameQuery(
     "select username,password, enabled from QSQL.users where username=?") 
    .authoritiesByUsernameQuery(
     "select username, role from QSQL.user_roles where username=?"); 
} 

    @Override 
protected void configure(HttpSecurity http) throws Exception { 

    http.authorizeRequests() 
    .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')") 
    .and() 
     .formLogin().loginPage("/login").failureUrl("/login?error") 
     .usernameParameter("username").passwordParameter("password") 
    .and() 
     .logout().logoutSuccessUrl("/login?logout") 
    .and() 
     .exceptionHandling().accessDeniedPage("/403") 
    .and() 
     .csrf(); 
} 
} 

私は、次のと一緒に、上記のエラーを取得していますが:

Caused by: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. 

Althoug h SQLエクスプローラプラグインを使用してデータベースに接続できます。

ありがとうございました。

答えて

1

問題は、最新のGAバージョンのmysql javaコネクタ5.1.39を使用した後、使用していたmysqlドライバ(mysqlコネクタバージョン6.0.2)にありました。

0

使用している春と春のセキュリティのライブラリのバージョンを確認してください。 java.lang.NoClassDefFoundError: org/springframework/security/authentication/AuthenticationManager

+0

私は春に4.2.6、春には4.1.0を使用しています...私は春のフレームワークを4.3.0にアップデートしようとします。それが修正されるかどうかわかります。 – nader

+0

実際には、MySQL 6.0.2のバグに関連するエラーが見つかりました......ここでは、サーバーのタイムゾーン値 'EDT'は認識されないか、複数のタイムゾーンを表します。タイムゾーンのサポートを利用する場合は、サーバーまたはJDBCドライバ(serverTimezone構成プロパティ経由)を構成して、より詳細なタイムゾーン値を使用する必要があります。 – nader

関連する問題