我需要从配置文件中读取一些属性。我不想将属性文件存储在该位置内。什么是最佳实践
例如,如果执行如下
java -jar payara-micro.jar --deploy demo.jar
我想保留 payara-micro.jar 所在的参数文件。我需要读取war文件中的属性文件。如何实现它。
谢谢你。
我需要从配置文件中读取一些属性。我不想将属性文件存储在该位置内。什么是最佳实践
例如,如果执行如下
java -jar payara-micro.jar --deploy demo.jar
我想保留 payara-micro.jar 所在的参数文件。我需要读取war文件中的属性文件。如何实现它。
谢谢你。
您可以首先使用 --rootDir路径选项启动 payara-micro 。Payara 将此目录视为工作,因此它在那里创建“配置”目录。然后根据需要编辑 domain.xml 文件并再次启动 payara-micro。您创建的所有资源都将像往常一样在您的 bean 中可用。例如,您可以添加一些这样的属性:
...
<resources>
<jdbc-resource pool-name="DerbyPool" jndi-name="jdbc/__default" object-type="system-all" />
<jdbc-connection-pool is-isolation-level-guaranteed="false" name="DerbyPool" datasource-classname="org.apache.derby.jdbc.EmbeddedDataSource" res-type="javax.sql.DataSource">
<property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/embedded_default" />
<property name="connectionAttributes" value=";create=true" />
</jdbc-connection-pool>
<connector-connection-pool max-pool-size="250" steady-pool-size="1" name="jms/__defaultConnectionFactory-Connection-Pool" resource-adapter-name="jmsra" connection-definition-name="javax.jms.ConnectionFactory"></connector-connection-pool>
<connector-resource pool-name="jms/__defaultConnectionFactory-Connection-Pool" jndi-name="jms/__defaultConnectionFactory" object-type="system-all-req"></connector-resource>
<context-service description="context service" jndi-name="concurrent/__defaultContextService" object-type="system-all"></context-service>
<managed-executor-service maximum-pool-size="200" core-pool-size="1" long-running-tasks="true" keep-alive-seconds="300" hung-after-seconds="300" task-queue-capacity="20000" jndi-name="concurrent/__defaultManagedExecutorService" object-type="system-all"></managed-executor-service>
<managed-scheduled-executor-service core-pool-size="1" long-running-tasks="true" keep-alive-seconds="300" hung-after-seconds="300" jndi-name="concurrent/__defaultManagedScheduledExecutorService" object-type="system-all"></managed-scheduled-executor-service>
<managed-thread-factory description="thread factory" jndi-name="concurrent/__defaultManagedThreadFactory" object-type="system-all"></managed-thread-factory>
<custom-resource factory-class="org.glassfish.resources.custom.factory.PropertiesFactory" res-type="java.util.Properties" jndi-name="myconf">
<property name="some.my.property" value="some.value"></property>
</custom-resource>
</resources>
(见自定义资源标签)
然后将它注入你的bean:
@Resource(type=java.util.Properties.class, name="myconf")
private final Properties parameters;
您也可以指定 --domainConfig 文件以将配置保存在您想要的任何位置。
使用 --help 查看完整的选项列表。
您可以传递在 domain.xml 文件中配置的系统属性。这会覆盖默认的 domain.xml。
java -jar payara-micro.jar --domainConfig domain.xml --deploy app.war
您可以从 payara-micro.jar 中获取默认的 domain.xml
您可以使用命令行参数将系统属性传递给 payara micro,如下所示:
java -jar payara-micro.jar --deploy app.war --systemProperties=sys.properties
另请查看有关此选项的 Payara 微文档。