115

PostgreSQL on Open Liberty - Sebastian Daschner

 7 years ago
source link: https://blog.sebastian-daschner.com/entries/openliberty-with-postgres
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

PostgreSQL on Open Liberty

PostgreSQL on Open Liberty

sunday, january 28, 2018

Open Liberty is an interesting new OSS Java EE application server that originated from WebSphere Liberty. You can configure Open Liberty to use PostgreSQL as its default data source as follows:

Add directives for <datasource>, <jdbcDriver>, and <library> to the server.xml configuration:

<?xml version="1.0" encoding="UTF-8"?>
<server description="OpenLiberty Java EE 8 Server">

    <featureManager>
        <feature>javaee-7.0</feature>
    </featureManager>

    <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443"/>
    <keyStore id="defaultKeyStore" password="Liberty"/>

    <!-- Postgres coffee-shop-db definition -->
    <dataSource id="DefaultDataSource"
                jndiName="jdbc/sample"
                jdbcDriverRef="postgresql-driver"
                type="javax.sql.ConnectionPoolDataSource"
                transactional="true">

        <properties serverName="coffee-shop-db"
                    portNumber="5432"
                    databaseName="postgres"
                    user="postgres"
                    password="postgres"/>
    </dataSource>

    <jdbcDriver id="postgresql-driver"
                javax.sql.XADataSource="org.postgresql.xa.PGXADataSource"
                javax.sql.ConnectionPoolDataSource="org.postgresql.ds.PGConnectionPoolDataSource"
                libraryRef="postgresql-library"/>

    <library id="postgresql-library">
        <fileset id="PostgreSQLFileset" dir="/opt/ol/wlp/lib"
                includes="postgresql-9.4-1201.jar"/>
    </library>

</server>

The database available via host coffee-shop-db will be accessed through the default Postgres port 5432 with postgres as database name, username and password.

The driver library, here postgresql-9.4-1201.jar, needs to reside in the lib/ directory of the server installation.

The default data source can be used transparently from a Java EE application. Only a single persistence unit needs to be specified in the persistence.xml file, similar to the following snippet:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

    <persistence-unit name="prod" transaction-type="JTA"/>

</persistence>

If the application comprises multiple databases, the persistence units are required to specify the JNDI names of their corresponding data source.

Tested with the official Docker image open-liberty:javaee7.

Found the post useful? Subscribe to my newsletter for more free content, tips and tricks on IT & Java:

All opinions are my own and do not reflect those of my employer or colleagues.

© Sebastian Daschner, CC BY-NC-SA 4.0


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK