所以我连续20个二传手,所有这些都可能会失败.如果一个失败或者用try catch包围它们而不是跳过它们,那么有没有办法用Java 8s的一些功能做到这一点?
例如,我在想这样的事情:
public void mapElement(Function function) {
try the function
catch if something goes wrong
}
Run Code Online (Sandbox Code Playgroud)
然后我可以像这样使用它:
mapElement(myObject.putA(a));
mapElement(myObject.putB(b));
mapElement(myObject.putC(c));
....
Run Code Online (Sandbox Code Playgroud) 所以我在eclipse中设置新连接时遇到问题,这样我就可以将当前的Maven项目转换为JPA项目.我有一个MySql数据库设置,可以使用WinSql访问它.但是,当我尝试使用New Connection Profile连接Eclipse时,我遇到了ping失败.字段中的所有信息都相同.我将mysql-connector-java-5.1.32-bin.jar添加到我的构建路径中,所以我真的不知道还有什么问题.当ping失败时,它给出了以下异常:
java.lang.Exception: Connection failed with unspecified error.
at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:110)
at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54)
at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:96)
at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28)
at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)
at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359)
at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)
at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Run Code Online (Sandbox Code Playgroud)
关于可能导致这种情况的任何想法?我环顾了几个小时,看到了很多类似的问题,但似乎没什么用.另一件可能很重要的事情是MySql服务器托管在我的Universite服务器上,因此我需要通过VPN连接才能访问它.我使用Cisco AnyConnect执行此操作,并且在连接WinSql时没有任何问题.
所以我觉得我已经正确定义了我的作业流程,但是当我运行它时,我收到一个 FlowExecutionException ,说我的流程“d”的“在流程中找不到下一个状态”。
我正在使用一个实现 JobExecutionListener 的 tasklet,如下所示,它似乎按预期工作:
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
if(a && b) {
return new ExitStatus("a");
} else if(c) {
return new ExitStatus("b");
} else if(d) {
return new ExitStatus("c");
} else {
return new ExitStatus("d");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的工作配置。我还想简化它(所有步骤都将进行“b”,所以我希望这是“之后”的事情),但只是希望它首先工作。
@Bean
public Job job() {
LOGGER.info("STARTING BATCH JOB");
return jobs.get("job")
.incrementer(new RunIdIncrementer())
.start(taskletStep())
.on("a")
.to(step1a)
.next(step2)
.on("b")
.to(step2)
.on("c")
.to(step2)
.on("d")
.to(step1b)
.next(step2)
.on("*").end()
.end()
.build();
}
Run Code Online (Sandbox Code Playgroud)
我知道我一定错过了流程的某些部分,但我无法确定它。