Spring batch with multiple main and scheduler












0















I am working on a Spring Batch project that has two Main classes with @SpringBootApplication in it. I also have to use the @Scheduler and associate it only with one Main class. But the issue here is no matter which class I run, the scheduler is getting executed. Snippets below,



MainApp1.java



@SpringBootApplication
@EnableScheduling
public class MainApp1{

public static void main(String args) {


SpringApplication.run(MainApp1.class, args);
}
}


MainApp2.java



@SpringBootApplication

public class MainApp2{

public static void main(String args) {

SpringApplication.run(MainApp2.class, args);
}
}


Scheduler.java



@Configuration
public class TmsBatchSenderScheduler {

@Scheduled(fixedDelay = 5000)
public void myScheduler() {

}
}


I think what's happening here is the scheduler is getting created for both mains because of the @Configuration annotation. Is there a way to achieve this? I want the scheduler to run only when the MainApp1 is run.



Thanks in advance :)










share|improve this question























  • How do you run the app? Is it with java -jar yourapp.jar? The spring-boot-maven-plugin should fail in the repackage phase if it finds two main classes in your project and you would need to specify which one to use (See how in docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/…). Have you tried to move each app to a separate package (See docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/…)?

    – Mahmoud Ben Hassine
    Nov 22 '18 at 8:46













  • Haven't done that much yet. Currently I am running them from STS separately.

    – Praveen Kumar
    Nov 22 '18 at 9:18











  • ok in that case, try to put each app in its own package.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 9:28











  • Is there any other way to do it?

    – Praveen Kumar
    Nov 22 '18 at 10:56






  • 1





    Try @EnableAutoConfiguration(exclude=TaskSchedulingAutoConfiguration.class) in the class where you don't need scheduling. I really recommend creating a spring boot app for each app, so much complexity in software comes from trying to make one thing do two things.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 20:56
















0















I am working on a Spring Batch project that has two Main classes with @SpringBootApplication in it. I also have to use the @Scheduler and associate it only with one Main class. But the issue here is no matter which class I run, the scheduler is getting executed. Snippets below,



MainApp1.java



@SpringBootApplication
@EnableScheduling
public class MainApp1{

public static void main(String args) {


SpringApplication.run(MainApp1.class, args);
}
}


MainApp2.java



@SpringBootApplication

public class MainApp2{

public static void main(String args) {

SpringApplication.run(MainApp2.class, args);
}
}


Scheduler.java



@Configuration
public class TmsBatchSenderScheduler {

@Scheduled(fixedDelay = 5000)
public void myScheduler() {

}
}


I think what's happening here is the scheduler is getting created for both mains because of the @Configuration annotation. Is there a way to achieve this? I want the scheduler to run only when the MainApp1 is run.



Thanks in advance :)










share|improve this question























  • How do you run the app? Is it with java -jar yourapp.jar? The spring-boot-maven-plugin should fail in the repackage phase if it finds two main classes in your project and you would need to specify which one to use (See how in docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/…). Have you tried to move each app to a separate package (See docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/…)?

    – Mahmoud Ben Hassine
    Nov 22 '18 at 8:46













  • Haven't done that much yet. Currently I am running them from STS separately.

    – Praveen Kumar
    Nov 22 '18 at 9:18











  • ok in that case, try to put each app in its own package.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 9:28











  • Is there any other way to do it?

    – Praveen Kumar
    Nov 22 '18 at 10:56






  • 1





    Try @EnableAutoConfiguration(exclude=TaskSchedulingAutoConfiguration.class) in the class where you don't need scheduling. I really recommend creating a spring boot app for each app, so much complexity in software comes from trying to make one thing do two things.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 20:56














0












0








0








I am working on a Spring Batch project that has two Main classes with @SpringBootApplication in it. I also have to use the @Scheduler and associate it only with one Main class. But the issue here is no matter which class I run, the scheduler is getting executed. Snippets below,



MainApp1.java



@SpringBootApplication
@EnableScheduling
public class MainApp1{

public static void main(String args) {


SpringApplication.run(MainApp1.class, args);
}
}


MainApp2.java



@SpringBootApplication

public class MainApp2{

public static void main(String args) {

SpringApplication.run(MainApp2.class, args);
}
}


Scheduler.java



@Configuration
public class TmsBatchSenderScheduler {

@Scheduled(fixedDelay = 5000)
public void myScheduler() {

}
}


I think what's happening here is the scheduler is getting created for both mains because of the @Configuration annotation. Is there a way to achieve this? I want the scheduler to run only when the MainApp1 is run.



Thanks in advance :)










share|improve this question














I am working on a Spring Batch project that has two Main classes with @SpringBootApplication in it. I also have to use the @Scheduler and associate it only with one Main class. But the issue here is no matter which class I run, the scheduler is getting executed. Snippets below,



MainApp1.java



@SpringBootApplication
@EnableScheduling
public class MainApp1{

public static void main(String args) {


SpringApplication.run(MainApp1.class, args);
}
}


MainApp2.java



@SpringBootApplication

public class MainApp2{

public static void main(String args) {

SpringApplication.run(MainApp2.class, args);
}
}


Scheduler.java



@Configuration
public class TmsBatchSenderScheduler {

@Scheduled(fixedDelay = 5000)
public void myScheduler() {

}
}


I think what's happening here is the scheduler is getting created for both mains because of the @Configuration annotation. Is there a way to achieve this? I want the scheduler to run only when the MainApp1 is run.



Thanks in advance :)







spring-boot spring-batch scheduler






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 22 '18 at 6:46









Praveen KumarPraveen Kumar

45313




45313













  • How do you run the app? Is it with java -jar yourapp.jar? The spring-boot-maven-plugin should fail in the repackage phase if it finds two main classes in your project and you would need to specify which one to use (See how in docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/…). Have you tried to move each app to a separate package (See docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/…)?

    – Mahmoud Ben Hassine
    Nov 22 '18 at 8:46













  • Haven't done that much yet. Currently I am running them from STS separately.

    – Praveen Kumar
    Nov 22 '18 at 9:18











  • ok in that case, try to put each app in its own package.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 9:28











  • Is there any other way to do it?

    – Praveen Kumar
    Nov 22 '18 at 10:56






  • 1





    Try @EnableAutoConfiguration(exclude=TaskSchedulingAutoConfiguration.class) in the class where you don't need scheduling. I really recommend creating a spring boot app for each app, so much complexity in software comes from trying to make one thing do two things.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 20:56



















  • How do you run the app? Is it with java -jar yourapp.jar? The spring-boot-maven-plugin should fail in the repackage phase if it finds two main classes in your project and you would need to specify which one to use (See how in docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/…). Have you tried to move each app to a separate package (See docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/…)?

    – Mahmoud Ben Hassine
    Nov 22 '18 at 8:46













  • Haven't done that much yet. Currently I am running them from STS separately.

    – Praveen Kumar
    Nov 22 '18 at 9:18











  • ok in that case, try to put each app in its own package.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 9:28











  • Is there any other way to do it?

    – Praveen Kumar
    Nov 22 '18 at 10:56






  • 1





    Try @EnableAutoConfiguration(exclude=TaskSchedulingAutoConfiguration.class) in the class where you don't need scheduling. I really recommend creating a spring boot app for each app, so much complexity in software comes from trying to make one thing do two things.

    – Mahmoud Ben Hassine
    Nov 22 '18 at 20:56

















How do you run the app? Is it with java -jar yourapp.jar? The spring-boot-maven-plugin should fail in the repackage phase if it finds two main classes in your project and you would need to specify which one to use (See how in docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/…). Have you tried to move each app to a separate package (See docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/…)?

– Mahmoud Ben Hassine
Nov 22 '18 at 8:46







How do you run the app? Is it with java -jar yourapp.jar? The spring-boot-maven-plugin should fail in the repackage phase if it finds two main classes in your project and you would need to specify which one to use (See how in docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/…). Have you tried to move each app to a separate package (See docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/…)?

– Mahmoud Ben Hassine
Nov 22 '18 at 8:46















Haven't done that much yet. Currently I am running them from STS separately.

– Praveen Kumar
Nov 22 '18 at 9:18





Haven't done that much yet. Currently I am running them from STS separately.

– Praveen Kumar
Nov 22 '18 at 9:18













ok in that case, try to put each app in its own package.

– Mahmoud Ben Hassine
Nov 22 '18 at 9:28





ok in that case, try to put each app in its own package.

– Mahmoud Ben Hassine
Nov 22 '18 at 9:28













Is there any other way to do it?

– Praveen Kumar
Nov 22 '18 at 10:56





Is there any other way to do it?

– Praveen Kumar
Nov 22 '18 at 10:56




1




1





Try @EnableAutoConfiguration(exclude=TaskSchedulingAutoConfiguration.class) in the class where you don't need scheduling. I really recommend creating a spring boot app for each app, so much complexity in software comes from trying to make one thing do two things.

– Mahmoud Ben Hassine
Nov 22 '18 at 20:56





Try @EnableAutoConfiguration(exclude=TaskSchedulingAutoConfiguration.class) in the class where you don't need scheduling. I really recommend creating a spring boot app for each app, so much complexity in software comes from trying to make one thing do two things.

– Mahmoud Ben Hassine
Nov 22 '18 at 20:56












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425267%2fspring-batch-with-multiple-main-and-scheduler%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425267%2fspring-batch-with-multiple-main-and-scheduler%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

Npm cannot find a required file even through it is in the searched directory