Federico Mariani created CAMEL-22423:
----------------------------------------

             Summary: Make Camel extensible from 3d party dependencies via 
ServiceLoader
                 Key: CAMEL-22423
                 URL: https://issues.apache.org/jira/browse/CAMEL-22423
             Project: Camel
          Issue Type: New Feature
            Reporter: Federico Mariani


Right now, it is not possible to customize the CamelContext from a 3d party 
dependency that has no access to Camel Main. During the Camel startup, an hook 
should be provided that can be used to customize the CamelContext without 
access to Camel Main. To achieve this an SPI that loads implementation via 
ServiceLoader may be provided during the CamelContext startup.

This way third-party components can provide custom _ContextServicePlugin_ 
implementations in 
_META-INF/services/org.apache.camel.spi.ContextServicePlugin_ and customize the 
CamelContext. For example, provide beans, add EventNotifier, and so on.

example of ContextServicePlugin implementation

{code:java}
public class MyContextServicePlugin implements ContextServicePlugin {
    @Override
    public void load(CamelContext camelContext) {
        camelContext.getRegistry().bind("myBean", new TestBean());
        camelContext.getRegistry().bind("mySecondBean", new AnotherTestBean());
        ...
    }
}
{code}

This code should be executed during the CamelContext startup, early in the 
lifcycle, before the Camel Components are loaded for example.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to