【发布时间】:2017-06-07 14:57:14
【问题描述】:
码头文档说:
属性文件
标准 Java 属性文件也用于 Jetty 多种方式配置:
- 通过使用 Property 元素参数化 Jetty IoC XML。
- 配置默认日志记录机制 (StdErrLog)。其他日志记录 可以使用框架,也可以使用属性文件(例如, log4j)。
- 作为登录用户名和凭据的简单数据库。
我正在尝试实现第一点:参数化我的 jetty-env.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext">
<New id="oracleDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>
<Ref refid='wac'/>
</Arg>
<Arg>jdbc/oracleDB</Arg>
<Arg>
<Call class="oracle.ucp.jdbc.PoolDataSourceFactory" name="getPoolDataSource">
<Set name="URL"><SystemProperty name="database.url" /></Set>
<Set name="user"><SystemProperty name="database.user" /></Set>
<Set name="password"><SystemProperty name="database.password" /></Set>
<Set name="connectionFactoryClassName">oracle.jdbc.pool.OracleDataSource</Set>
</Call>
</Arg>
</New>
</Configure>
所以基本问题是,我怎样才能使我放置在${jetty.base}/resources 目录下的Java *.properties 文件(启用资源模块后)可以作为Property 或SystemProperty 访问?
最初我认为将它放在资源文件夹中就足够了,因为模块的文档说
模块:资源
添加 $JETTY_HOME/resources 和/或 $JETTY_BASE/resources 目录到服务器类路径。对配置有用 属性文件(例如 jetty-logging.properties)
然后我尝试在start.ini 中引用该文件,但也没有成功。
作为最后一次尝试,我在 Jetty 启动期间将文件名作为参数处理:java -jar start.jar resources\my.properties
在所有情况下均未显示错误,但调用 java -jar start.jar --list-config 未按预期显示条目,我也无法直接从我的 Java 代码访问该属性:System.getProperty("propertyKey")
如果我直接将属性作为 jvm 选项 (java -jar start.jar -DpropertyKey=propertyValue) 传递,这对于生产来说是没有选项的,它工作得很好。
更新 16.6.: 集成 start.ini 中的属性并不是一个真正的选择,因为应用程序需要自动部署在具有不同连接设置的不同环境中。使用单独的配置文件更容易做到这一点,它只包括 *.war 和任何其他配置文件之外的数据库连接设置。
我最好的选择是什么?
【问题讨论】: