デフォルトの CamelContext Bean の名前を変更するだけの場合は、Camel CDI によって提供される @ContextName 修飾子を使用できます。
			
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
    @Override
    public void configure() {
        from("jms:invoices").to("file:/invoices");
    }
}
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
    @Override
    public void configure() {
        from("jms:invoices").to("file:/invoices");
    }
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
 
 
				それ以外の場合で、さらにカスタマイズが必要な場合は、任意の CamelContext クラスを使用してカスタム Camel コンテキスト Bean を宣言できます。次に、@PostConstruct および @PreDestroy ライフサイクルコールバックを実行して、カスタマイズを行うことができます。以下に例を示します。
			
@ApplicationScoped
class CustomCamelContext extends DefaultCamelContext {
    @PostConstruct
    void customize() {
        // Set the Camel context name
        setName("custom");
        // Disable JMX
        disableJMX();
    }
    @PreDestroy
    void cleanUp() {
        // ...
    }
}
@ApplicationScoped
class CustomCamelContext extends DefaultCamelContext {
    @PostConstruct
    void customize() {
        // Set the Camel context name
        setName("custom");
        // Disable JMX
        disableJMX();
    }
    @PreDestroy
    void cleanUp() {
        // ...
    }
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
 
 
				producer メソッドと disposer メソッドを使用して、Camel コンテキスト Bean をカスタマイズすることもできます。以下に例を示します。
			
class CamelContextFactory {
    @Produces
    @ApplicationScoped
    CamelContext customize() {
        DefaultCamelContext context = new DefaultCamelContext();
        context.setName("custom");
        return context;
    }
    void cleanUp(@Disposes CamelContext context) {
        // ...
    }
}
class CamelContextFactory {
    @Produces
    @ApplicationScoped
    CamelContext customize() {
        DefaultCamelContext context = new DefaultCamelContext();
        context.setName("custom");
        return context;
    }
    void cleanUp(@Disposes CamelContext context) {
        // ...
    }
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
 
 
				同様に、producer フィールド を使用できます。以下に例を示します。
			
@Produces
@ApplicationScoped
CamelContext context = new CustomCamelContext();
class CustomCamelContext extends DefaultCamelContext {
    CustomCamelContext() {
        setName("custom");
    }
}
@Produces
@ApplicationScoped
CamelContext context = new CustomCamelContext();
class CustomCamelContext extends DefaultCamelContext {
    CustomCamelContext() {
        setName("custom");
    }
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
 
 
				このパターンは、たとえば、コンテナーが setAutoStartup メソッドを呼び出して初期化するときに Camel コンテキストルートが自動的に開始されることを回避するために使用できます。
			
@ApplicationScoped
class ManualStartupCamelContext extends DefaultCamelContext {
    @PostConstruct
    void manual() {
        setAutoStartup(false);
    }
}
@ApplicationScoped
class ManualStartupCamelContext extends DefaultCamelContext {
    @PostConstruct
    void manual() {
        setAutoStartup(false);
    }
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow