我使用的是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}});
有可能吗?怎么做?
答案 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>
...