2017-03-02 5 views
0

여러 전쟁이 배포되고 각 war 파일에 DefaultCamelContext를 확장하는 StandardContext 클래스 인스턴스 하나가 포함되어 있고 @ContextName을 사용하여 컨텍스트 이름이 "StandardContext"로 설정된 경우이 예외가 발생합니다. 이것은 JBoss의 클래스 로더 설정 때문입니까? Camel 버전 : 2.17.4 JBoss 버전 : EAP 6.1Camel CDI 런타임 JBoss EAP 6.1의 InstanceAlreadyExistsException

+0

Camel 애플리케이션을 어떻게 배치합니까? 당신은 워해머를 사용합니까 아니면 야생 플라이 낙타 또는 무언가를 사용합니까? 고유 한 낙타 id 이름을 사용하는 것이 좋습니다. 예를 들어, @ContextName은 모든 응용 프로그램에서 고유 한 이름을 사용해야합니다. –

+0

낙타 응용 프로그램은 JBoss EAP 6.1에 war 파일로 배포됩니다. 아쉽게도 ContextName은 모든 war 파일에서 사용되는 공통 기본 클래스이므로 변경할 수 없지만 해결 방법은 모듈 이름을 이름 패턴으로 사용하는 것입니다. –

답변

0

JMX에 대한 명명 패턴 (예 : managementNamePattern)을 사용하도록 Camel 응용 프로그램을 구성 할 수 있습니다. 자세한 내용은 JMX 문서를 참조하십시오. http://camel.apache.org/camel-jmx.html

그런 다음 패턴에 카운터를 사용하여 충돌을 피할 수 있습니다. 또는 이름을 무시하고 모듈 이름과 같이 고유 한 이름으로 설정할 수 있습니다.

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);