JBoss EAP 6.1上的Camel CDI运行时InstanceAlreadyExistsException

时间:2017-03-02 14:29:16

标签: jboss apache-camel cdi

当部署多个战争时,每个war文件包含一个StandardContext类的实例,该类扩展DefaultCamelContext并且上下文名称设置为" StandardContext"使用@ContextName,抛出此异常。这是由于JBoss上的类加载器设置吗? 骆驼版:2.17.4 JBoss版本:EAP 6.1

2 个答案:

答案 0 :(得分:0)

您可以将Camel应用程序配置为使用JMX的命名模式(例如managementNamePattern)。请参阅JMX文档中的更多详细信息:http://camel.apache.org/camel-jmx.html

然后,您可以让模式使用计数器或其他东西来避免冲突。或者,您可以覆盖名称并将其设置为您知道的唯一名称,例如模块名称。

答案 1 :(得分:0)

早些时候我用过

    getManagementNameStrategy().setNamePattern("#name#");

但这不起作用,所以我将代码修改为以下内容:

    @ApplicationScoped
    @ContextName("StandardContext")
    public class StandardContext extends DefaultCamelContext {

    @Resource(lookup = "java:module/ModuleName")
    private String moduleName;

    @PostConstruct
    public void init() {

    getManagementNameStrategy().setNamePattern(moduleName);

发布此代码以澄清我为其他读者提供的解决方案