繁体   English   中英

JBoss Wildfly中与EJB的依赖关系错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM