首页 文章

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

提问于
浏览
0

我写了一个TimerHelper类,它可以从其他类接收Callables并尝试执行它们 . 如果发生异常,它会等待一段时间并再次尝试 . 因此,其他类可以导出必须完成的任务,但目前还不完全 .

@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 ERROR [org.jboss.msc.service.fail](MSC服务主题1-7)MSC000001:无法启动服务jboss.deployment.unit . “usermanagement.war”.PARSE:org.jboss . 服务jboss.deployment.unit中的msc.service.StartException . “usermanagement.war”.PARSE:WFLYSRV0153:无法在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start处理部署“usermanagement.war”的阶段PARSE( DeploymentUnitPhaseService.java:163)org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1948)at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1881)at java .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) by:java.lang.IllegalArgumentException:WFLYEE0040:此模块中已在org.jboss.as.ee.component.EE中定义了名为“TimerHelper”的组件在org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processSessionBeans的org.jboss.as.ejb3.deployment.processors.EJBComponentDescriptionFactory.addComponent(EJBComponentDescriptionFactory.java:58)上的ModuleDescription.addComponent(EEModuleDescription.java:162) SessionBeanComponentDescriptionFactory.java:169)org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processAnnotations(SessionBeanComponentDescriptionFactory.java:98)at org.jboss.as.ejb3.deployment.processors.AnnotatedEJBComponentDescriptionDeploymentUnitProcessor.processAnnotations(AnnotatedEJBComponentDescriptionDeploymentUnitProcessor.java: 57)org.jboss.as.ejb3.deployment.processors.AbstractDeploymentUnitProcessor.deploy(AbstractDeploymentUnitProcessor.java:81)at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156)... 5更多14:56:19,126 ERROR [org.jboss.as.controller.management-operation](management-handler-threa d - 38)WFLYCTL0013:操作(“部署”)失败 - 地址:([(“deployment”=>“usermanagement.war”)]) - 失败描述:{“WFLYCTL0080:失败的服务”=> {“jboss.deployment服务jboss.deployment.unit . \“usermanagement.war \”中的.unit . \“usermanagement.war \” . PARSE“=>”org.jboss.msc.service.StartException . PARSE:WFLYSRV0153:处理阶段PARSE失败of deployment \“usermanagement.war \”引起:java.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”=>“org.jboss.msc.service.StartException in service jboss.deployment.unit . \”usermanagement.war \“ . PARSE:WFLYSRV0153:无法处理部署的阶段PARSE \”usermanagement.war \ “引起:java.lan g.IllegalArgumentException:WFLYEE0040:已在此模块中定义名为“TimerHelper”的组件“}}

我很确定这是因为“@Singleton”注释,但我无法弄清楚如何解决这个问题 . 也许它也因为用户管理依赖于“api”和“aaa”,而“aaa”也依赖于“api”?

1 回答

  • 1

    你解决了吗?在我的情况下,似乎做了服务器清理帮助(在eclipse中,在服务器上的右键,并推“清理”)然后选择完全发布 .

    干杯内克斯

相关问题