我编写了一个TimerHelper类,它可以接收来自其他类的调用并尝试执行它们。如果发生异常,它将等待一段时间并重试。因此,其他类可以导出必须完成的任务,但不是目前必须完成的任务。
@Startup
@Singleton
public class TimerHelper{
private static final Logger LOGGER = Logger.getLogger(TimerHelper.class.getName());
private Callable<Void> task;
private int failureCounter = 0;
public TimerHelper(){
}
@Resource
private ManagedExecutorService executorService;
@Resource
private TimerService timerService;
public void setNewTimer(Callable<Void> task){
this.task = task;
timerService.createIntervalTimer(0, 5000, new TimerConfig());
}
@Timeout
public void timerMethod(Timer timer) {
if(failureCounter <10){
try{
Future<Void> future = executorService.submit(task);
future.get();
LOGGER.log(Level.INFO, "Did something");
failureCounter =0;
timer.cancel();
}catch(Exception e){
failureCounter++;
LOGGER.log(Level.WARNING, "Errored while doing something, will try again");
}
}else{
timer.cancel();
LOGGER.log(Level.SEVERE, "Tried to add something to Database several times, but failed. Please check the OpenRDF-Database");
}
}
}
14:56:19,125错误[org.jboss.MSC.service.fail](MSC服务线程1-7)MSC000001:未能启动服务jboss.deployment.unit.“usermanagement.war”.PARSE:org.jboss.deployment.unit.“usermanagement.MSC.service.serviceController.startException.”usermanagement.war“.PARSE:wflysrv0153:未能处理在org.jboss.as.server.deployment.deploymentunitphaseService.start Impl$startTask.startService(ServiceControllerImpl.java:1948)在org.jboss.MSC.service.ServiceControllerImpl.run(ServiceControllerImpl.java:1881)在java.util.concurrent.ThreadPoolExecutor.runworker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor.worker.run(ThreadPoolExecutor.javer.java.lang.thread.run模块位于org.jboss.as.ee.component.eemoduleDescription.addComponent(EemoduleDescription.java:162)在org.jboss.as.ejb3.deployment.processors.ejb3.deployment.processors.ejb3.deployment.processors.ejbComponentDescriptionFactory.addComponent(EjbComponentDescriptionFactory.java:58)在org.jboss.as.ejb3.deployment.processors.sessionBeanDescriptionFactory.java:58)在org.jboss.as.ejb3.deployment.processors.annotatedEJBComponentDescriptionDeploymentUnitProcessor.processAnnotations(annotatedEJBComponentDescriptionDeploymentDeploymentUnitProcessor.java:57)在
14:56:19,126错误[org.jboss.as.controller.management-Operation](management-handler-thread-38)WflyCTL0013:Operation(“Deploy”)失败-地址:([(“deployment”=>“usermanagement.war”)])-失败描述:{“wflyCTL0080:failed services”=>{“jboss.deployment.unit.\”usermanagement.war\“.PARSE”=>“org.jbosment.unit.\”A.lang.IllegalArgumentException:Wflyee0040:此模块中已定义了名为'TimerHelper'的组件“}}14:56:19,126 ERROR[org.jboss.as.server](management-handler-thread-38)Wflysrv0021:部署的部署”usermanagement.war“回滚了以下失败消息:{”wflyCTL0080:failed Services“=>{”jboss.deployment.unit.\“usermanagement.war\”.PARSE“=>”153:无法处理部署\“usermanagement.war\”的阶段解析,原因是:java.lang.IllegalArgumentException:WFlyee0040:此模块“}}中已定义了名为”TimerHelper“的组件
我很确定这是因为“@singleton”注释,但我不知道如何解决这个问题。也许这也是因为usermanagement依赖于“API”和“AAA”,而“AAA”也依赖于“API”?!
你解决这个了吗?在我的例子中,执行服务器清理似乎有所帮助(在eclipse中,在服务器上按右键并按“Clean”),然后选择Full Publish。
干杯内科斯
有人能帮我理解一下“假性依赖”是什么意思吗? 我的教授刚刚在这张幻灯片中解释了为什么我们不能在命令1之前运行命令3,但为什么后来他称之为“假”?
问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间
[错误]无法解析插件org.apache.cxf:cxf-java2ws-plugin:2.4.3-fuse-01-02或其依赖项之一:未能读取org.apache.cxf:cxf-java2ws-plugin:jar:2.4.3-fuse-01-02:无法在central(http://repo.maven.apache.org/maven2)中找到org.apache.cxf:cxf-java
我确实尝试了以下建议的步骤,但没有成功。我甚至在StackOverflow和github中尝试卸载nodejs和重新安装以及许多其他建议。有人能帮帮我吗? 项目依赖关系树可能有问题。这可能不是CreateReact应用程序中的错误,而是您需要在本地修复的错误。 创建反应应用程序提供的反应脚本包需要一个依赖项:"Babel-eslint":"^10.1.0" 不要尝试手动安装:您的软件包管理器会自动
我有一个类似于 B项目依赖于A项目 项目B的settings.gradle和build.gradle如下所示 格雷德尔酒店 格雷德尔先生 当我尝试在本地机器(Gradle版本3.2)上构建项目B时,它成功构建,一切看起来都很好。 当我尝试在jenkins中构建相同的项目(与我的本地版本相同的gradle版本)时,我得到了错误 它看起来像詹金斯,它是无法计算出相对路径。 我该怎么解决这个问题? 在j