Configuration file

I need to read some property from configuration file. I don't want to store the property file inside the location. What is best practice

For example, if execute as follows

java -jar payara-micro.jar --deploy demo.jar

I want to keep the parameter file where payara-micro.jar located. I need to read the property file inside the war file. How to achieve it.

Thank you.

Upvotes: 1

Views: 2998

Answers (3)

Sunny
Sunny

Reputation: 1

You can pass system properties configured in domain.xml file. This overrides the default domain.xml.

java -jar payara-micro.jar --domainConfig domain.xml --deploy app.war 

You can get the default domain.xml from the payara-micro.jar

Upvotes: 0

S. Kadakov
S. Kadakov

Reputation: 919

You may first start payara-micro with --rootDir path option. Payara treats this dir as working, so it creates `config' dir there. Then just edit domain.xml file as you need and start payara-micro again. All resources you create will be available at you beans as usual. For example you may add some properties like this:

...

<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>

(see custom-resource tag)

Then just inject it into you bean:

@Resource(type=java.util.Properties.class, name="myconf")
private final Properties parameters;

Also you may specify --domainConfig file to keep configuration anywhere you want.

Use --help to see full options list.

Upvotes: 1

Ondro Mih&#225;lyi
Ondro Mih&#225;lyi

Reputation: 7695

You can pass system properties to the payara micro using a command line argument, like this:

java -jar payara-micro.jar --deploy app.war --systemProperties=sys.properties 

Also check out the Payara micro documentation about this option.

Upvotes: 0

Related Questions