2017-06-03 1 views
0

Ich versuche, Datenbank zu Spring OAuth Server-Beispielcode hinzuzufügen. Hier ist die Konfiguration der dataSource.Spring OAuth Server JBDCTokenStore Fehler

@Bean(name = "dataSource") 
public DriverManagerDataSource dataSource() { 
    DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); 
    driverManagerDataSource.setDriverClassName("org.mariadb.jdbc.Driver"); 
    driverManagerDataSource.setUrl("jdbc:mariadb://localhost:3306/OAuth"); 
    driverManagerDataSource.setUsername("root"); 
    driverManagerDataSource.setPassword("password"); 
    return driverManagerDataSource; 
} 

Und EndpointConfig

@Autowired 
    private DataSource dataSource; 

    @Bean 
    public JdbcClientDetailsService clientDetailsService() { 
     return new JdbcClientDetailsService(dataSource); 
    } 

    @Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
     clients.withClientDetails(clientDetailsService()); 
    } 
    @Bean 
    public TokenStore tokenStore() { 
     //return new InMemoryTokenStore(); 
     return new JdbcTokenStore(dataSource); 
    } 
    @Override 
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { 
     endpoints.tokenStore(tokenStore); 
     endpoints.userApprovalHandler(userApprovalHandler); 
     endpoints.authenticationManager(authenticationManager); 
    } 

Aber ich bekomme Fehler auf JbdctokenStore, JdbcClientDetailsService funktionieren.

Fehlermeldung:

Verursacht durch: java.lang.IllegalArgumentException: Datasource

erforderlich

Verursacht durch: org.springframework.beans.factory.BeanCreationException: Fehler Bean mit dem Namen zu schaffen 'tokenStore' im Klassenpfad definiert Ressource [org/springframework/Sicherheit/oauth/Beispiele/Sparklr/config/OAuth2ServerConfig $ AuthorizationServerConfiguration.class]: Instanziierung von Bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanDefinitionStoreException: Fabrik Methode [public org.springframework.security.oauth2.provider.token.TokenStore org.springframework.security.oauth.examples.sparklr.config.OAuth2ServerConfig $ AuthorizationServerConfiguration.tokenStore()] hat Ausnahme ausgelöst; verschachtelte Ausnahme ist java.lang.IllegalArgumentException: Datasource erforderlich

Ich konnte nicht herausfinden, was passiert. Datenbank und Tabelle ist alles in Ordnung. (Ich benutze die SQL-Datei der Probe ergab.)


 @Bean 
    public TokenStore tokenStore() { 
     //return new InMemoryTokenStore(); 
     return new JdbcTokenStore(dataSource()); 

    } 

    @Bean 
    public DriverManagerDataSource dataSource() { 
     DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); 
     driverManagerDataSource.setDriverClassName("org.mariadb.jdbc.Driver"); 
     driverManagerDataSource.setUrl("jdbc:mariadb://localhost:3306/OAuth"); 
     driverManagerDataSource.setUsername("root"); 
     driverManagerDataSource.setPassword("a89019"); 
     return driverManagerDataSource; 
    } 

ich nur hinzufügen, eine neue Bean unter ihm und Änderung Datasource Datasource(), und es funktioniert. Ich kann nicht verstehen, warum JdbcClientDetailsService mit orignal arbeitet. JdbcTokenStore benötigt jedoch einen neuen. Wie kann ich diesen Teil des Codes ändern, sieht der Code chaotisch wegen doppelten Code.

+0

Haben Sie '@ Configuration' Annotation auf' JdbcTokenStore' Klasse? – harshavmb

+0

Nein, aber ich löse den Fehler, indem ich den doppelten Code darunter hinzufüge. Ich weiß nicht, warum es funktioniert. –

Antwort

0

Versuchen Sie, Ihre Datenquelle Bean mit @Primary zu markieren. Weitere Details finden Sie hier: 77. Data Access

+0

Immer noch der gleiche Fehler. seltsam... –

Verwandte Themen