CommandLineRunner overridden run() method not executing - java

The problem: overridden run() method from CommandLineRunner class is not being executed.
Folder structure:
Code:
Main class:
package com.diplproj.api;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
#SpringBootApplication
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
CommandLineRunner class:
package com.diplproj.api.config;
import com.diplproj.api.repository.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.sql.*;
#Component
public class DbInitialization implements CommandLineRunner {
#Autowired
CropYieldRepository cropYieldRepository;
#Autowired
CultureRepository cultureRepository;
#Autowired
LocationRepository locationRepository;
#Autowired
MicroclimateNameRepository microclimateNameRepository;
#Autowired
MicroclimateValueRepository microclimateValueRepository;
#Override
public void run(String... args) throws Exception {
System.out.println("THIS IS NOT PRINTING");
}
As it says in the println() method, this is not printing anything, only this startup logs:
2021-12-12 17:51:09.371 INFO 17832 --- [ restartedMain] com.diplproj.api.ApiApplication : Starting ApiApplication using Java 1.8.0_291 on DESKTOP-6IFP1I4 with PID 17832
2021-12-12 17:51:09.373 INFO 17832 --- [ restartedMain] com.diplproj.api.ApiApplication : No active profile set, falling back to default profiles: default
2021-12-12 17:51:09.452 INFO 17832 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-12-12 17:51:09.452 INFO 17832 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-12-12 17:51:10.706 INFO 17832 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-12-12 17:51:10.835 INFO 17832 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 111 ms. Found 5 JPA repository interfaces.
2021-12-12 17:51:11.819 INFO 17832 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-12-12 17:51:11.830 INFO 17832 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-12-12 17:51:11.831 INFO 17832 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.55]
2021-12-12 17:51:11.971 INFO 17832 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-12-12 17:51:11.971 INFO 17832 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2518 ms
2021-12-12 17:51:12.215 INFO 17832 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-12-12 17:51:12.278 INFO 17832 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.6.1.Final
2021-12-12 17:51:12.468 INFO 17832 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-12-12 17:51:12.676 INFO 17832 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
There are couple existing questions on this topic on Stackoverflow, but nothing helped.
Does anyone have an idea what might be causing the problem?
Thanks in advance.

This is weird to be honest. For me it works without problem.
Does your Spring project start successfully though?
Started Application in 4.728 seconds (JVM running for 5.885)
This message is missing in your log. CommandLineRunner will be executed after that message.
Another thing to note is you should declare all dependency injection variables as private but that shouldn't block Commandlinerunner anyways. Also #AutoWired is discouraged to use so try constructor dependency injection instead to see if that is causing problem.

#moze
Did you try annotating the main class as below?
#ComponentScan(basePackages = {"com.diplproj.api"})
If that works I would expect there is an issue in the package hierarchy that spring unable to scan your CommandLiner class.

Related

Why did the PostConstruct execute twice in Spring

I'm using Spring to develop a web application. I just used the mechanism #PostConstruct and #Bean to invoke a function while starting up.
public class MyCache<T> {
#PostConstruct
public void init() {
System.out.println("inittttttttttt");
// something
}
}
#Configuration
#EnableScheduling
public class AppConfig {
#Bean
public MyCache<MyData> myCache() {
return new MyCache<MyData>();
}
}
public class TextFilter {
private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
private MyCache<MyData> cache;
public TextFilter() {
this.context.scan("com.sensitive_words.utils");
this.context.refresh();
this.cache = this.context.getBean(MyCache.class);
}
public String filter(String originalText) {
return this.cache.get().filter(originalText);
}
}
As you see, I created a Bean and use the Bean in the class TextFilter.
However, I found that the function init() is executed twice. Here is the log:
2022-10-30 13:53:38.837 INFO 106994 --- [ main] y.c.s.SensitiveWordsApplication : Starting SensitiveWordsApplication using Java 11.0.16 on yves-Inspiron-5488 with PID 106994 (/home/yves/java_ws/sensitive_words/target/classes started by yves in /home/yves/java_ws/sensitive_words)
2022-10-30 13:53:38.839 INFO 106994 --- [ main] y.c.s.SensitiveWordsApplication : No active profile set, falling back to 1 default profile: "default"
2022-10-30 13:53:39.545 INFO 106994 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8090 (http)
2022-10-30 13:53:39.559 INFO 106994 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-10-30 13:53:39.560 INFO 106994 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.68]
2022-10-30 13:53:39.654 INFO 106994 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-10-30 13:53:39.654 INFO 106994 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 763 ms
inittttttttttt
2022-10-30 13:53:39.769 INFO 106994 --- [ main] s.a.ScheduledAnnotationBeanPostProcessor : No TaskScheduler/ScheduledExecutorService bean found for scheduled processing
inittttttttttt
2022-10-30 13:53:40.080 INFO 106994 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8090 (http) with context path ''
2022-10-30 13:53:40.096 INFO 106994 --- [ main] y.c.s.SensitiveWordsApplication : Started SensitiveWordsApplication in 1.64 seconds (JVM running for 2.341)
Could you help me?
As I see you are setting up two different application contexts of spring
SensitiveWordsApplication does it for you
AnnotationConfigApplicationContext context you created manually in code.
This seems to be the reason, singleton bean is created one per container by default.

My h2 working, but i cant connect inside of h2-console

Yoo coder, have one issue with h2-console.When i created some entitys on start,my h2 worked and i could open my h2-console and saw there tables ,but after some time i want connect again and doesn't work now.Meanwhile i added some lines and classes,but idk why doesn't work my h2-console,cause i don't touch application properties.
After lick on conect or testconect i got this error
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Mon Mar 14 19:12:33 CET 2022
There was an unexpected error (type=Forbidden, status=403).
My github project: https://github.com/Wynnyy/bookingdoctor-project.git
logs
2022-03-14 19:12:16.222 INFO 23108 --- [ main] s.w.b.BookingdoctorApplication : Starting BookingdoctorApplication using Java 17.0.2 on DESKTOP-K3O8I67 with PID 23108 (C:\Users\Patrik Severín\IdeaProjects\bookingdoctor\target\classes started by Wynny in C:\Users\Patrik Severín\IdeaProjects\bookingdoctor)
2022-03-14 19:12:16.224 INFO 23108 --- [ main] s.w.b.BookingdoctorApplication : No active profile set, falling back to 1 default profile: "default"
2022-03-14 19:12:16.928 INFO 23108 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-03-14 19:12:16.986 INFO 23108 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 47 ms. Found 2 JPA repository interfaces.
2022-03-14 19:12:17.670 INFO 23108 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-03-14 19:12:17.682 INFO 23108 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-03-14 19:12:17.682 INFO 23108 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.58]
2022-03-14 19:12:17.780 INFO 23108 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-03-14 19:12:17.780 INFO 23108 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1503 ms
2022-03-14 19:12:17.829 INFO 23108 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-03-14 19:12:18.068 INFO 23108 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2022-03-14 19:12:18.080 INFO 23108 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:wynny'
2022-03-14 19:12:18.277 INFO 23108 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-03-14 19:12:18.331 INFO 23108 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.6.5.Final
2022-03-14 19:12:18.497 INFO 23108 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2022-03-14 19:12:18.627 INFO 23108 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2022-03-14 19:12:19.225 INFO 23108 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-03-14 19:12:19.232 INFO 23108 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2022-03-14 19:12:19.540 WARN 23108 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2022-03-14 19:12:19.708 INFO 23108 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will not secure any request
2022-03-14 19:12:20.112 INFO 23108 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-03-14 19:12:20.211 INFO 23108 --- [ main] s.w.b.BookingdoctorApplication : Started BookingdoctorApplication in 4.362 seconds (JVM running for 4.745)
2022-03-14 19:12:24.415 INFO 23108 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-03-14 19:12:24.415 INFO 23108 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-03-14 19:12:24.417 INFO 23108 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms
By default, spring-security will protect each and every end-point - So, for /error you need to manually configure like the following -
#EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {
#Override
public void configure(HttpSecurity auth) {
auth.csrf().disable()
.authorizeRequests()
.antMatchers("/error/**").permitAll() // permit-all for /error page
.anyRequest().authenticated();
}
}
For future reference:
In Spring Boot 3.0 / Spring Security 6.0 http.antMatcher() is not longer available and was replaced with http.securityMatcher().
So Subham's answer would look like that:
#Configuration
public class SecurityConfiguration {
#Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authz) -> authz.anyRequest().permitAll())
.csrf().disable()
.securityMatcher("/error/**")
.httpBasic(withDefaults());
return http.build();
}
}

#SqsListener doesn't work but AmazonSqs client work

My SQS Listener cannot find queue with name and url.
But AmazonSqsAsync Client can find list of queues and queue url.
I can't understand why only #SqsListener cannot find queue.
Could you give me some knowledge what I missed?
Here's my code, application-local.yml and Error message.
I'm running sqs with localstack
Error message
SimpleMessageListenerContainer : Ignoring queue with name 'test-availability-queue': The queue does not exist.; nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: AWS.SimpleQueueService.NonExistentQueue; see the SQS docs. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: 00000000-0000-0000-0000-000000000000; Proxy: null)
application-local.yml
cloud:
aws:
region:
auto: false
static: ap-northeast-2
credentials:
access-key: aws_access_key_id
secret-key: aws_secret_access_key
sqs:
endpoint: http://localhost:4566
availability:
queue:
name: test-availability-queue
SqsListener
I used value with queue-name and queue-url but both didn't work.
#Component
public class AvailabilitySqsListener {
#SqsListener(value = "${availability.queue.name}", deletionPolicy = SqsMessageDeletionPolicy.NO_REDRIVE)
public void onMessage(#Payload AvailabilityMessage message) {
doSomething();
}
}
Sqs Configuration
#Configuration
public class SqsConfiguration {
private static final String AWS_ENDPOINT = "${cloud.aws.sqs.endpoint}";
private static final String AWS_REGION = "${cloud.aws.region.static}";
#Bean
public AwsClientBuilder.EndpointConfiguration endpointConfiguration(
#Value(AWS_ENDPOINT) String endpoint,
#Value(AWS_REGION) String region) {
return new AwsClientBuilder.EndpointConfiguration(endpoint, region);
}
#Bean
#Primary
public AmazonSQSAsync amazonSQSAsync(final AwsClientBuilder.EndpointConfiguration endpointConfiguration) {
String endpoint = endpointConfiguration.getServiceEndpoint();
if (endpoint == null || endpoint.isEmpty()) {
return AmazonSQSAsyncClientBuilder.standard()
.withRegion(endpointConfiguration.getSigningRegion())
.withCredentials(new DefaultAWSCredentialsProviderChain())
.build();
}
return AmazonSQSAsyncClientBuilder.standard()
.withEndpointConfiguration(endpointConfiguration)
.withCredentials(new DefaultAWSCredentialsProviderChain())
.build();
}
#Bean
public QueueMessagingTemplate queueMessagingTemplate(
AmazonSQSAsync amazonSQSAsync,
MessageConverter messageConverter,
ResourceIdResolver resourceIdResolver) {
return new QueueMessagingTemplate(amazonSQSAsync, resourceIdResolver, messageConverter);
}
#Bean
public MessageConverter messageConverter(ObjectMapper objectMapper) {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setObjectMapper(objectMapper);
converter.setSerializedPayloadClass(String.class);
return converter;
}
}
Success case with AmazonSqsAsync client
// When I called this API
#GetMapping("/test")
public void test() {
System.out.println(amazonSQSAsync.listQueues());
System.out.println(amazonSQSAsync.getQueueUrl("test-availability-queue"));
}
# response
{QueueUrls: [http://localhost:4566/queue/test-availability-queue],}
{QueueUrl: http://localhost:4566/queue/test-availability-queue}
FYI, full of my console logs
2021-11-20 16:26:18.297 INFO 34014 --- [ restartedMain] c.d.s.v.m.LogVendorMonitorApplication : The following profiles are active: local
2021-11-20 16:26:18.342 INFO 34014 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-11-20 16:26:18.343 INFO 34014 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-11-20 16:26:19.206 INFO 34014 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2021-11-20 16:26:19.208 INFO 34014 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2021-11-20 16:26:19.260 INFO 34014 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 43 ms. Found 1 Redis repository interfaces.
2021-11-20 16:26:19.400 INFO 34014 --- [ restartedMain] o.s.cloud.context.scope.GenericScope : BeanFactory id=d7c2eb3d-42ea-35c3-8d4c-ab542b183924
2021-11-20 16:26:19.447 INFO 34014 --- [ restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'credentialsProvider' of type [com.amazonaws.auth.AWSCredentialsProviderChain] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-11-20 16:26:19.836 INFO 34014 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-11-20 16:26:19.843 INFO 34014 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-11-20 16:26:19.843 INFO 34014 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.52]
2021-11-20 16:26:19.908 INFO 34014 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-11-20 16:26:19.908 INFO 34014 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1565 ms
2021-11-20 16:26:20.326 INFO 34014 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.amazonaws.util.XpathUtils (file:/Users/a202107057/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.951/aws-java-sdk-core-1.11.951.jar) to method com.sun.org.apache.xpath.internal.XPathContext.getDTMManager()
WARNING: Please consider reporting this to the maintainers of com.amazonaws.util.XpathUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2021-11-20 16:26:21.436 WARN 34014 --- [ restartedMain] i.a.c.m.l.SimpleMessageListenerContainer : Ignoring queue with name 'test-availability-queue': The queue does not exist.; nested exception is com.amazonaws.services.sqs.model.QueueDoesNotExistException: AWS.SimpleQueueService.NonExistentQueue; see the SQS docs. (Service: AmazonSQS; Status Code: 400; Error Code: AWS.SimpleQueueService.NonExistentQueue; Request ID: 00000000-0000-0000-0000-000000000000; Proxy: null)
2021-11-20 16:26:21.588 INFO 34014 --- [ restartedMain] o.s.b.a.e.web.EndpointLinksResolver : Exposing 4 endpoint(s) beneath base path ''
2021-11-20 16:26:21.655 INFO 34014 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-11-20 16:26:21.672 INFO 34014 --- [ restartedMain] c.d.s.v.m.LogVendorMonitorApplication : Started LogVendorMonitorApplication in 3.724 seconds (JVM running for 4.378)
2021-11-20 16:26:24.822 INFO 34014 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-11-20 16:26:24.823 INFO 34014 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2021-11-20 16:26:24.824 INFO 34014 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms

A component required a bean named 'dataSource' that could not be found

I am developing a simple Spring Batch jar using Spring Boot. I have used Configuration class to create dataSource bean and also annotated with #Component. But when I run the application using CommandLine Runner, it throws bean not found exception while reading the ABPBatchInfrastructure.xml.
I have did a little research of this error in google and found a solution, I have added below line in my ABPBatchInfrastructure.xml
<context:component-scan base-package="com.abp.printbatch"></context:component-scan>
Adding this line has fixed the issue but has other side effects
Spring is loading twice and all the spring core beans are getting instantiated twice.
I found this by checking the logs. Below logs for reference which shows same lines twice .
Spring JPA SQL statements are not showing up in the console even after adding spring.jpa.properties.hibernate.format_sql=true in the application-dev.properties.
is there a way to instantiate spring only once by removing the component scan in the xml and also fix the datasource bean not found issue. Please guide me. below log for your reference which clearly shows spring is loading twice.
2020-05-23 16:04:06.976 INFO 90732 --- [ main] c.a.p.FileUploadApplication : Starting FileUploadApplication on MW7CH1-FZXX with PID 90732 (C:\gitforABP\SpringBatch\target\classes started by cac6584 in C:\gitforABP\SpringBatch)
2020-05-23 16:04:06.979 INFO 90732 --- [ main] c.a.p.FileUploadApplication : The following profiles are active: dev
2020-05-23 16:04:07.672 INFO 90732 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-05-23 16:04:07.752 INFO 90732 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 69ms. Found 1 JPA repository interfaces.
2020-05-23 16:04:08.161 INFO 90732 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2020-05-23 16:04:08.165 WARN 90732 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation.
2020-05-23 16:04:08.819 INFO 90732 --- [ main] com.zaxxer.hikari.pool.PoolBase : HikariPool-1 - Driver does not support get/set network timeout for connections. (Receiver class oracle.jdbc.driver.T4CConnection does not define or inherit an implementation of the resolved method abstract getNetworkTimeout()I of interface java.sql.Connection.)
2020-05-23 16:04:08.870 INFO 90732 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2020-05-23 16:04:08.923 INFO 90732 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-05-23 16:04:09.006 INFO 90732 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.12.Final
2020-05-23 16:04:09.152 INFO 90732 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-05-23 16:04:09.312 INFO 90732 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
2020-05-23 16:04:10.351 INFO 90732 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-05-23 16:04:10.364 INFO 90732 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-05-23 16:04:10.771 INFO 90732 --- [ main] c.a.p.FileUploadApplication : Started FileUploadApplication in 4.167 seconds (JVM running for 5.839)
2020-05-23 16:04:10.772 INFO 90732 --- [ main] c.a.p.FileUploadApplication : Local
2020-05-23 16:04:11.186 INFO 90732 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-05-23 16:04:11.206 INFO 90732 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 19ms. Found 1 JPA repository interfaces.
2020-05-23 16:04:11.298 INFO 90732 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting...
2020-05-23 16:04:11.298 WARN 90732 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation.
2020-05-23 16:04:11.663 INFO 90732 --- [ main] com.zaxxer.hikari.pool.PoolBase : HikariPool-2 - Driver does not support get/set network timeout for connections. (Receiver class oracle.jdbc.driver.T4CConnection does not define or inherit an implementation of the resolved method abstract getNetworkTimeout()I of interface java.sql.Connection.)
2020-05-23 16:04:11.691 INFO 90732 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed.
2020-05-23 16:04:11.706 INFO 90732 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-05-23 16:04:11.714 INFO 90732 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
2020-05-23 16:04:12.150 INFO 90732 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-05-23 16:04:12.151 INFO 90732 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-05-23 16:04:12.170 INFO 90732 --- [ main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: ORACLE
2020-05-23 16:04:12.264 INFO 90732 --- [ main] o.s.b.c.l.support.SimpleJobLauncher : No TaskExecutor has been set, defaulting to synchronous executor.
2020-05-23 16:04:12.465 WARN 90732 --- [ main] o.s.b.a.batch.JpaBatchConfigurer : JPA does not support custom isolation levels, so locks may not be taken when launching Jobs
2020-05-23 16:04:12.467 INFO 90732 --- [ main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: ORACLE
2020-05-23 16:04:12.467 INFO 90732 --- [ main] o.s.b.c.l.support.SimpleJobLauncher : No TaskExecutor has been set, defaulting to synchronous executor.
Entry Point
#SpringBootApplication
#ComponentScan(basePackages = "com.abp.printbatch")
public class FileUploadApplication extends PrintBatchConstants implements CommandLineRunner {
#Autowired
private NotifyYaml notify;
final static Logger logger = LoggerFactory.getLogger(FileUploadApplication.class);
public static void main(String[] args) {
SpringApplication application = new SpringApplication(FileUploadApplication.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
#Override
public void run(String... args) throws Exception {
logger.info(notify.getEnvironment());
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
"ABPBatchInfrastructure.xml", "AgencyBillPayAppConfig.xml" );
JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
Job job=ctx.getBean(Job.class);
jobLauncher.run(job, new JobParametersBuilder()
.addString(documentClass,"InvoiceStatementDocumentation")
.addString(type, "2040-09-13")
.addString(emailID, notify.getSupportEmailId())
.addString(environment, notify.getEnvironment())
.toJobParameters());
ctx.close();
System.exit(0);
}
}
f
package com.abp.printbatch.config;
#Configuration
#Component
public class DBConfig {
#Bean
#Primary
public DataSource dataSource() {
System.out.println("");
return DataSourceBuilder.create().driverClassName("oracle.jdbc.driver.OracleDriver").url("removed")
.username("removed").password("removed").build();
}
}
As you mentioned, I have imported the xmls during app startup and removed application context initialization inside the run method. Also I removed component scan inside XML. This has fixed both datasource not found issue and Show SQL issue. Now application is working as expected. Below is my new entry point class. Thanks for all your help :)
#SpringBootApplication
#ComponentScan(basePackages = "com.abp.printbatch")
#ImportResource( { "ABPBatchInfrastructure.xml", "AgencyBillPayAppConfig.xml" } )
public class FileUploadApplication extends PrintBatchConstants implements CommandLineRunner {
#Autowired
private NotifyYaml notify;
#Autowired
private ApplicationContext ctx;
final static Logger logger = LoggerFactory.getLogger(FileUploadApplication.class);
public static void main(String[] args) {
SpringApplication application = new SpringApplication(FileUploadApplication.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
#Override
public void run(String... args) throws Exception {
logger.info(notify.getEnvironment());
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
"ABPBatchInfrastructure.xml", "AgencyBillPayAppConfig.xml" );
JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
Job job=ctx.getBean(Job.class);
jobLauncher.run(job, new JobParametersBuilder()
.addString(documentClass,"InvoiceStatementDocumentation") .addString(type,
"2040-09-13") .addString(emailID, notify.getSupportEmailId())
.addString(environment, notify.getEnvironment()) .toJobParameters());
ctx.close();
System.exit(0);
}
}

Cant reach Endpoint in Controller, despite it beeing intialised

I read this
and this
The main ideas are that somebody has the wrong structure and components are not beeing scanned, I have a correct one.
My controller is beeing initialised normaly. I tested it debugging and seting the breakpoint on the contructor. It is beiing runned. DEspite of the that the endpoint could not be reached by my tests nor by postman, nor in the browser. I am getting a 404.
I am using gradle. structured my code like this. Already spent 3 Hours trying to fix this, but without success.
My controller looks like this.
package com.fressnapf.microservices.orderhistory.controller.impl;
#RestController
#RequestMapping("/customer")
public class OrderHistoryController implements IOrderHistoryController {
...
#Override
#ResponseStatus(value = HttpStatus.OK)
#RequestMapping(value = "/{customerid}/orders}", method = RequestMethod.GET, produces = "application/json")
public String getOrders(#PathVariable("customerid") String customerid, #RequestParam(required = false) String timeFrom,
#RequestParam(required = false) String timeTo, #RequestParam(required = false) String openOnly) {
...
}
}
Aplplication class
package com.fressnapf.microservices.orderhistory;
#SpringBootApplication()
#ImportResource({"classpath*:applicationContext.xml"})
#Configuration()
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
this is the response I am getting
{
"timestamp": "2020-03-03T16:00:33.489+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/customer/000000000/orders"
}
this is the log I am getting in the app
2020-03-03 16:59:27.595 INFO 10406 --- [ main] c.f.m.orderhistory.Application : Starting Application on debian-sgtechedge with PID 10406 (/home/sergeygerodes/projects/scporderhistoryservice/build/classes/java/main started by sgerodes in /home/sergeygerodes/projects/scporderhistoryservice)
2020-03-03 16:59:27.602 INFO 10406 --- [ main] c.f.m.orderhistory.Application : No active profile set, falling back to default profiles: default
2020-03-03 16:59:28.414 INFO 10406 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-03-03 16:59:28.441 INFO 10406 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 16ms. Found 0 JPA repository interfaces.
2020-03-03 16:59:28.768 INFO 10406 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-03-03 16:59:29.035 INFO 10406 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-03-03 16:59:29.046 INFO 10406 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-03-03 16:59:29.047 INFO 10406 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.29]
2020-03-03 16:59:29.140 INFO 10406 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-03-03 16:59:29.140 INFO 10406 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1475 ms
2020-03-03 16:59:29.294 INFO 10406 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2020-03-03 16:59:29.405 INFO 10406 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2020-03-03 16:59:29.424 INFO 10406 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:orderhistory'
2020-03-03 16:59:29.517 INFO 10406 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-03-03 16:59:29.565 INFO 10406 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.4.9.Final}
2020-03-03 16:59:29.660 INFO 10406 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-03-03 16:59:29.741 INFO 10406 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2020-03-03 16:59:29.886 INFO 10406 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-03-03 16:59:29.892 INFO 10406 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-03-03 17:00:28.614 WARN 10406 --- [l-1 housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=59s108ms538?s586ns).
2020-03-03 17:00:28.685 WARN 10406 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2020-03-03 17:00:28.845 INFO 10406 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-03-03 17:00:29.052 INFO 10406 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-03-03 17:00:29.060 INFO 10406 --- [ main] c.f.m.orderhistory.Application : Started Application in 61.937 seconds (JVM running for 62.493)
2020-03-03 17:00:33.395 INFO 10406 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-03-03 17:00:33.395 INFO 10406 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-03-03 17:00:33.404 INFO 10406 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 9 ms
the whole applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="loggerService"
class="com.fressnapf.sdk.logger.service.impl.DefaultLogService" />
<bean id="dataService"
class="com.fressnapf.sdk.dataaccess.services.impl.H2DataProvider">
<constructor-arg index="0" value="${spring.datasource.url}"/>
<constructor-arg index="1" value="${spring.datasource.username}"/>
<constructor-arg index="2" value="${spring.datasource.password}"/>
</bean>
</beans>
If you copied your controller code and pasted it here...
There is a close bracket too much. I tested it on one of my controllers and it shows the same behaviour.
#RequestMapping(value = "/{customerid}/orders-->}<--"...

Categories