我在warfly文件中打包的wildfly中部署了一个应用程序。我需要在部署目录下的war文件外部的xml文件中加载一些要在我的java代码中使用的属性。
deployments
-- myapplication.war
-- myproperties.xml
我的java代码如何访问此属性? 请指教。
谢谢..
答案 0 :(得分:1)
与CDI OWNER结合使用确实很好。
<强>更新强>
Inject Java Properties in Java EE Using CDI提供了一些介绍以及github上的一些示例代码。作为下一步,您可以将属性部分委托给OWNER。
创建注释类型定义Config.java:
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface Config {
}
获取ConfigProducer.java:
@Produces
@Config
public Configuration produce(InjectionPoint ip) {
if (config == null) {
config = ConfigFactory.create(Configuration.class);
}
return config;
}
生成器必须由其自身或具有@Startup @Singleton
注释的另一个bean实例化。
设置您的OWNER支持的Configuration.java
@HotReload(type = HotReloadType.SYNC)
@LoadPolicy(LoadType.MERGE)
@Sources("file:${config.filepath}/config.properties")
public interface Configuration extends Config, Reloadable, Mutable, Accessible {
@Key("server.http.port")
int port();
@Key("server.host.name")
String hostname();
}
在某个bean中注入并使用配置:
@Stateless
public class SomeBean {
@Inject
@Config
private Configuration config;
}
不要忘记wildfly的standalone.xml中的路径配置:
<system-properties>
<property name="config.filepath" value="/your/path/"/>
</system-properties>
答案 1 :(得分:0)
如果您可以在系统级访问所有此属性,即System.getProperty(&#34; propertyName&#34;),那么最好的选择是为此属性文件添加自定义模块。
以下是我创建的自定义模块示例,以保留oracle驱动程序jar:
我在wildfly模块下的目录下创建了system \ layers \ base \ com \ oracle \ ojdbc14 \ main
现在将所有罐子放在这个目录中。在同一目录中添加一个module.xml文件,其中包含jar文件的条目:
<module xmlns="urn:jboss:module:1.1" name="com.oracle.ojdbc14">
<resources>
<resource-root path="ojdbc14.jar"/>
<resource-root path="second jar"/>
<resource-root path="third jar "/>
</resources>
<dependencies>
</dependencies>
</module>
&#13;
注意,我保持我的目录结构与模块中的Name属性一致。您可以根据需要向此目录添加任意数量的jar,并为resource-root path添加条目
现在要使用此模块,您可以在应用程序META-INF中的jboss-deployment-structure.xml中添加条目,如:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<dependencies>
..
..
..
<module name = "com.oracle.ojdbc14"/>
</dependencies>
..
..
..
</jboss-deployment-structure>
&#13;
ref @ https://developer.jboss.org/thread/257516
希望这有帮助。