0

My Application will not start. gives me an error creating a bean with the name of my file. I've searched and found similar posts to this question but they didnt seem to pertain to my error so I am hoping someone can find what may be causing this file to fail. Also, I am at a cross between two methods. Do I use the FlatFileReader or MomgoItemreader? I just need to retrieve two things from the DB firstname and lastname. I need to read the db and then write it to a file which I havent done yet. Any help would be greatly appreciated.

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

Here is my class

@Configuration
@EnableBatchProcessing
public class PaymentPortalJob {
private static final Logger LOG = 
LoggerFactory.getLogger(PaymentPortalJob.class);

@SuppressWarnings("unused")
@Autowired
private JobBuilderFactory jobBuilderFactory;
@SuppressWarnings("unused")
@Autowired
private StepBuilderFactory stepBuilderFactory;





@Autowired
private PaymentAuditRepository paymentAuditRepository;

 // @Bean
 // public FlatFileItemReader<PaymentAudit> PaymentPortalReader() {
 //     LOG.info("Inside PaymentPortalReader Method {}", "");
 //     return new FlatFileItemReaderBuilder<PaymentAudit> 
 ().name("PaymentPortalReader")
 //             .delimited().names(new String[] { "rxFname", "rxLname" })
 //             .fieldSetMapper(new BeanWrapperFieldSetMapper<PaymentAudit> 
    () {
 //                 {
 //                     setTargetType(PaymentAudit.class);
 //                 }
 //             }).build();
 //
 // }
@Bean
public ItemReader<PaymentAudit> reader() {
    LOG.info("inside of ItemReader");
    MongoItemReader<PaymentAudit> reader = new MongoItemReader<PaymentAudit>();

    try {
        reader.setTemplate(mongoTemplate());
    } catch (Exception e) {
        LOG.error(e.toString());
    }
    reader.setCollection("local");
    return reader();
}



@Bean
public ItemProcessor<PaymentAudit, PaymentAudit> processor() {
    return new PaymentPortalNOSQLProcessor();

}

@Bean
public ItemWriter<PaymentAudit> writer() {
    MongoItemWriter<PaymentAudit> writer = new MongoItemWriter<PaymentAudit>();
    try {
        writer.setTemplate(mongoTemplate());
    } catch (Exception e) {
        LOG.error(e.toString());
    }
    writer.setCollection("paymentPortal");
    return writer;
}

@Bean
Job job(JobBuilderFactory jbf, StepBuilderFactory sbf, ItemReader<? extends PaymentAudit> ir,
        ItemWriter<? super PaymentAudit> iw) {

    Step s1 = sbf.get("file-db").<PaymentAudit, PaymentAudit>chunk(100).reader(ir).writer(iw).build();

    return jbf.get("etl").incrementer(new RunIdIncrementer()).start(s1).build();
}

@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(), "local");
}

@Bean
public MongoTemplate mongoTemplate() throws Exception {
    MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
    return mongoTemplate;
}

}

appplication.yml

 mongodb:

databasePort: xxxxx
databaseName: local
 spring:
   data:
    mongodb:
      host: localhost
      port: xxxxx
  profiles:
   active: local
   batch:
    job:
      enabled: true

Processor:

package com.spring_batchjob.job.item;

import org.springframework.batch.item.ItemProcessor;

import com.spring_batchjob.bean.PaymentAudit;




public class PaymentPortalNOSQLProcessor implements 
ItemProcessor<PaymentAudit, PaymentAudit> {


@Override
public PaymentAudit process(PaymentAudit bean) throws Exception {
    return bean;

}

}

repo:

package com.spring_batchjob.repository;

import java.time.LocalDateTime;
import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import com.spring_batchjob.bean.PaymentAudit;

@Repository
public interface PaymentAuditRepository extends 
MongoRepository<PaymentAudit, String> {

//  List<PaymentAudit> findByCreateDttmBetween(LocalDateTime createStart, 
   LocalDateTime createEnd);
   List<PaymentAudit> findByRxFNameAndRxLName(String rxFName, String 
   rxLName);

}

Error after running app:

2018-10-26 13:26:34.256  WARN 16376 --- [  restartedMain] 
ConfigServletWebServerApplicationContext : Exception encountered during 
context initialization - cancelling refresh attempt: 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
creating bean with name 'paymentPortalJob': Unsatisfied dependency expressed 
through field 'jobBuilderFactory'; nested exception is 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
creating bean with name 

'org.springframework.batch.core.configuration.annotation.
 SimpleBatchConfiguration': Unsatisfied dependency expressed through field 
'dataSource'; nested exception is 
 org.springframework.beans.factory.BeanCreationException: 
 Error creating bean 
 with name 'dataSource' defined in class path resource 

[org/springframework/boot/autoconfigure/jdbc/
DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method 
failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw 
exception; nested exception is 
org.springframework.boot.autoconfigure.jdbc.
DataSourceProperties$DataSourceBeanCreationException: Failed to determine a 
suitable driver class
want2learn
  • 2,471
  • 2
  • 20
  • 37
Edsel
  • 35
  • 9
  • its complaining about driver not being on classpath. Do you have driver specified ? Not same but may be you can get idea from this https://stackoverflow.com/questions/50215936/failed-to-bind-properties-under-to-com-zaxxer-hikari-hikaridatasource-spring – want2learn Oct 26 '18 at 19:35
  • 1
    Possible duplicate of [Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified](https://stackoverflow.com/questions/49475177/failed-to-auto-configure-a-datasource-spring-datasource-url-is-not-specified) – Martin Zeitler Oct 27 '18 at 02:05
  • Martin Zeitler, thank you, it was the link I was looking for. – Edsel Oct 27 '18 at 02:51
  • `it was the link I was looking for`. So, is your issue solved? – Mahmoud Ben Hassine Oct 29 '18 at 08:50
  • I am still getting an erro:Description: Parameter 1 of method batchConfigurer in org.springframework.boot.autoconfigure.batch.BatchConfigurerConfiguration$JdbcBatchConfiguration required a bean of type 'javax.sql.DataSource' that could not be found. – Edsel Oct 29 '18 at 14:43
  • Action: Consider revisiting the entries above or defining a bean of type 'javax.sql.DataSource' in your configuration. – Edsel Oct 29 '18 at 14:43

0 Answers0