[英]Wrong dependencies with EJB in JBoss Wildfly
我编写了一个TimerHelper类,该类可以从其他类接收Callable并尝试执行它们。 如果发生异常,它将等待一段时间,然后重试。 因此,其他类可以导出必须完成的任务,但目前还不能完全完成。
@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");
}
}
}
此TimerHelper类位于API包中,许多其他包在其POM.xml中具有依赖性。 除了一个模块“ Usermanagement”之外,其他所有功能都正常运行。 当我尝试将其部署到Wildfly 9时,我总是得到此异常:
14:56:19,125错误[org.jboss.msc.service.fail](MSC服务线程1-7)MSC000001:无法启动服务jboss.deployment.unit。“ usermanagement.war”。PARSE:org.jboss.msc服务jboss.deployment.unit。“ usermanagement.war”中的.service.StartException。PARSE:WFLYSRV0153:无法在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService .java:163),位于org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1881),位于org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1948)。 util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745) :java.lang.IllegalArgumentException:WFLYEE0040:此模块中的org.jboss.as.ee.component.EEMo已经定义了名为“ TimerHelper”的组件 org.jboss.as.ejb3.deployment.processors.EJBComponentDescriptionFactory.addComponent(EJBComponentDescriptionFactory.java:58)上的duleDescription.addComponent(EEModuleDescription.java:162)在org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processSessions(位于org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processAnnotations(SessionBeanComponentDescriptionFactory.java:98)处的org.jboss.as.ejb3.deployment.processors.AnnotatedEJBComponentDescriptionDeploymentUnitmentProcessor.ProcessAnnotations(SessionBeanComponentDescriptionFactory.java:98) 57)在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156)的org.jboss.as.ejb3.deployment.processors.AbstractDeploymentUnitProcessor.deploy(AbstractDeploymentUnitProcessor.java:81)... 5更多
14:56:19,126错误[org.jboss.as.controller.management-operation](management-handler-thread-38)WFLYCTL0013:操作(“ deploy”)失败-地址:([(“ deployment” =>“ usermanagement .war“)])-失败描述:{” WFLYCTL0080:失败的服务“ => {” jboss.deployment.unit。\\“ usermanagement.war \\”。PARSE“ =>” org.jboss.msc.service.StartException在服务jboss.deployment.unit。\\“ usermanagement.war \\”。PARSE:WFLYSRV0153:无法处理部署\\“ usermanagement.war \\”的阶段PARSE,原因:java.lang.IllegalArgumentException:WFLYEE0040:名为“ TimerHelper”的组件已在此模块中定义”“}} 14:56:19,126错误[org.jboss.as.server](管理处理程序线程-38)WFLYSRV0021:部署“ usermanagement.war”的部署已回滚,并出现以下故障消息:{“ WFLYCTL0080:失败的服务” => {“ jboss.deployment.unit。\\” usermanagement.war \\“。PARSE” =>“服务jboss.deployment.unit中的org.jboss.msc.service.StartException。\\ “ usermanagement.war \\”。分析:WFLYSRV0 153:无法处理部署\\“ usermanagement.war \\”的阶段PARSE,原因:java.lang.IllegalArgumentException:WFLYEE0040:此模块中已经定义了名为“ TimerHelper”的组件”}}
我很确定这是因为有“ @Singleton”注解,但我不知道该如何解决这个问题。 可能也是因为用户管理对“ api”和“ aaa”具有依赖性,而“ aaa”也对“ api”具有依赖性?
你解决了吗? 就我而言,似乎对服务器进行清理很有帮助(在日食中,单击服务器上的右键并按“ clean”),然后选择“完全发布”。
干杯尼科斯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.