java - Apache Camel 2.12 : Adding bean to already existing context

标签 java apache-camel

我需要在应用程序启动时处理一个文件,并根据给定的信息创建一些对象,然后将它们作为 bean 添加到 Camel 上下文中。例如:Mysql DataSource 对象。

public static void load(CamelContext context) throws Exception {
    JndiRegistry registry = (JndiRegistry) context.getRegistry();
    PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
    pc.setLocation("classpath:mysql.properties");

    for (String mysql: pc.parseUri("{{mysqlConfigs}}").split(",")) {
        String MYSQL_DB_URL = pc.parseUri("{{" + mysql + ".url}}");
        String MYSQL_DB_USERNAME = pc.parseUri("{{" + mysql + ".username}}");
        String MYSQL_DB_PASSWORD = pc.parseUri("{{" + mysql + ".passwd}}");
        String DB_NAME = pc.parseUri("{{" + mysql + ".name}}");

        MysqlDataSource mysqlDS = new MysqlDataSource();

        mysqlDS.setURL(MYSQL_DB_URL);
        mysqlDS.setUser(MYSQL_DB_USERNAME);
        mysqlDS.setPassword(MYSQL_DB_PASSWORD);

        registry.bind(DB_NAME, (DataSource) mysqlDS);
    }

}

代码抛出异常,

org.apache.camel.impl.PropertyPlaceholderDelegateRegistry cannot be cast to org.apache.camel.impl.JndiRegistry

如果我尝试将其转换为 SimpleRegistry,也会出现同样的错误。有没有办法可以通过这种方式实现这一点,或者考虑到不再添加更多上下文,是否应采用任何其他方法。

最佳答案

尝试:

JndiRegistry registry = context.getRegistry(JndiRegistry.class);

关于java - Apache Camel 2.12 : Adding bean to already existing context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32133984/

相关文章:

java - Apache Camel 使用 HttpEndpoint 选项和 http4

java - SWT 鼠标滚轮监听器

java - 将 Scala 与 Apache Camel 结合使用是否存在已知问题?

java - 如何将通用类型作为交换输入主体而不是强制转换?

Java 枚举处理

java - 拆分消息并在 Camel 中路由它们

java - Camel文件组件: create a file and if already exist,移动它并用时间戳重命名它

java - 如何注入(inject)JpaRepository的实现

java - ActiveAndroid 使用现有数据库

java - 应用程序初始化的首选方式