下面列出了怎么用org.springframework.boot.ExitCodeGenerator的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void attack() {
try {
Logger.info("Chaos Monkey - I am killing your Application!");
if (metricEventPublisher != null) {
metricEventPublisher.publishMetricEvent(MetricType.KILLAPP_ASSAULT);
}
int exit = SpringApplication.exit(context, (ExitCodeGenerator) () -> 0);
Thread.sleep(5000); // wait before kill to deliver some metrics
System.exit(exit);
} catch (Exception e) {
Logger.info("Chaos Monkey - Unable to kill the App, I am not the BOSS!");
}
}
@Override
public void run(String... args) {
setupBugsnag();
// Create and run the test case
LOGGER.info("Creating test case");
Scenario scenario = testCaseForName(System.getenv("EVENT_TYPE"));
if (scenario != null) {
LOGGER.info("running test case");
scenario.run();
} else {
LOGGER.error("No test case found for " + System.getenv("EVENT_TYPE"));
}
// Exit the application
LOGGER.info("Exiting spring");
System.exit(SpringApplication.exit(ctx, (ExitCodeGenerator) new ExitCodeGenerator() {
@Override
public int getExitCode() {
return 0;
}
}));
}
@Override
public void run(String... args) {
// Create and run the test case
LOGGER.info("Creating test case");
Scenario scenario = testCaseForName(System.getenv("EVENT_TYPE"));
if (scenario != null) {
LOGGER.info("running test case");
scenario.run();
} else {
LOGGER.error("No test case found for " + System.getenv("EVENT_TYPE"));
}
// Exit the application
LOGGER.info("Exiting spring");
System.exit(SpringApplication.exit(ctx, (ExitCodeGenerator) new ExitCodeGenerator() {
@Override
public int getExitCode() {
return 0;
}
}));
}
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
if (Arrays.asList(args).contains("execute")) {
int exitCode = SpringApplication.exit(
context,
(ExitCodeGenerator) () -> TestRunnerExitCodeContext.getInstance().getExitCode()
);
System.exit(exitCode);
}
}
@Bean
public ExitCodeGenerator exitCodeGenerator() {
System.out.println("ExitCodeGenerator Bean 创建...");
return () -> {
System.out.println("执行退出码(88)生成...");
return 88;
};
}
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return () -> {
System.out.println("执行退出码(9)生成...");
return 9;
};
}
private int calcExitStatus() {
int exitCode = 0;
if (this.exitCodeEvent != null) {
exitCode = this.exitCodeEvent.getExitCode();
}
else if (this.listenerFailed || this.applicationFailedException != null) {
Throwable exception = this.listenerException;
if (exception instanceof TaskExecutionException) {
TaskExecutionException taskExecutionException = (TaskExecutionException) exception;
if (taskExecutionException
.getCause() instanceof InvocationTargetException) {
InvocationTargetException invocationTargetException = (InvocationTargetException) taskExecutionException
.getCause();
if (invocationTargetException != null
&& invocationTargetException.getTargetException() != null) {
exception = invocationTargetException.getTargetException();
}
}
}
if (exception instanceof ExitCodeGenerator) {
exitCode = ((ExitCodeGenerator) exception).getExitCode();
}
else {
exitCode = 1;
}
}
return exitCode;
}
@Bean(name = "dsCustom")
public DataSource dataSource()
{
String myUrlString = "";
String myDriverClass = "";
String myDBUser = "";
String myDBPassword = "";
String dbValue = env.getProperty("local.run.db");
if (dbValue.equalsIgnoreCase("POSTGRESQL"))
{
checkEnvironmentVariable("MYDBHOST");
checkEnvironmentVariable("MYDBNAME");
checkEnvironmentVariable("MYDBUSER");
checkEnvironmentVariable("MYDBPASSWORD");
if (stop)
{
logger.info("Manually shutting down system");
int exitCode = SpringApplication.exit(appContext,
(ExitCodeGenerator) () -> 1);
System.exit(exitCode);
}
myUrlString = "jdbc:postgresql://" + System.getenv("MYDBHOST") + ":5432/" + System.getenv("MYDBNAME");
myDriverClass = "org.postgresql.Driver";
myDBUser = System.getenv("MYDBUSER");
myDBPassword = System.getenv("MYDBPASSWORD");
} else
{
// Assumes H2
myUrlString = "jdbc:h2:mem:testdb";
myDriverClass = "org.h2.Driver";
myDBUser = "sa";
myDBPassword = "";
}
logger.info("Database URL is " + myUrlString);
return DataSourceBuilder.create()
.username(myDBUser)
.password(myDBPassword)
.url(myUrlString)
.driverClassName(myDriverClass)
.build();
}
private void conditionallyExitSpringApp(int exitCode) {
if (flinkProperties.isTerminate()) {
log.info("Terminating flink spring application with application code " + exitCode);
System.exit(SpringApplication.exit(appCtx, (ExitCodeGenerator) () -> exitCode));
}
}