从wildfly模块注入camel路由属性

时间:2017-06-08 12:43:06

标签: apache-camel wildfly switchyard

我使用的是SwithcYard 2.0.0.Beta1。应用程序服务器是WildFly 8.1。我想从模块加载属性。 例如,我有一个模块/ wildfly / modules / system / layers / base / org / study / configuration / test 我的module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.study.configuration" slot="test">  
    <resources>  
        <resource-root path="."/>  
    </resources>  
</module>  

这是属性文件:

user=foo
password=bar
provider=CryptoProvider
directory=domain;login:pwd@host/dir?password=pwd&preMove=backup&move=processed&moveFailed=error&charset=UTF-8

这是我在wildfly配置文件中包含该模块的方式:

    <subsystem xmlns="urn:jboss:domain:ee:2.0">
        <global-modules>
            <module name="org.study.configuration" slot="test"/>
        </global-modules>

现在我想在我的骆驼路线中加载这些属性:

.to("smb://{{directory}}")

或 在豆中

KeyStore ks = KeyStore.getInstance("PKCS12", {{provider}});

有可能吗?怎么做?

1 个答案:

答案 0 :(得分:0)

这是可能的,但只要您的属性在文件中,您必须先加载它。

您在模块中定义的内容 - 它只是应用程序的类路径。

如果您使用Java DSL:

Properties myProps = new Properties();

Stream is = this.getClass().getClassLoader().getResourceAsStream("MyAppProp.properties");
myProps.load(is);       
System.getProperties().putAll(myProps); 

如果使用Spring DSL,只需定义常规Spring属性即可。

一个。使用Spring bean命名空间

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>MyAppProp.properties</value>
    </property>
</bean>

湾使用Spring上下文命名空间

<context:property-placeholder location="MyAppProp.properties"/>

然后你可以在Camel路线中使用它们,如你所说:

.to("smb://{{directory}}") 

PS。您也可以直接在module.xml中定义属性

<module xmlns="urn:jboss:module:1.3" name="org.study.configuration" slot="test">
  <properties>
    <property name="directory" value="myTestDirectory"/>
  </properties>
  ...