Connect Your Payara Cloud Application to a Neon PostgreSQL Database
Originally published on 11 Mar 2024
Last updated on 11 Mar 2024
Deploying a web application often means connecting to a database. In this guide, I'll show you how to connect a Jakarta EE application on Payara Cloud to a PostgreSQL database hosted on Neon.
Prerequisites
- A Jakarta EE sample application (or your own project)
- A Neon account (the free tier will work)
- Your Neon database connection details
Get Started With Neon
1. Sample Application If you don't have one, create a Jakarta EE web application from the Payara Starter page (Web Profile).
2. Create a Neon Account Sign up for a free Neon account. This will provide a default project and database for our example.
3. Get Connection Details Find your database connection details in your Neon dashboard:
- Database server
- JDBC URL
- Database name
- Database user
- Database user password
Connect from Your Application
1. Define a Datasource Use the @DataSourceDefinition annotation and MicroProfile Config to set up your datasource:
@ApplicationScoped
@DataSourceDefinition(name = "java:app/cloud-postgres",
className = "org.postgresql.ds.PGSimpleDataSource",
url = "${MPCONFIG=DB_URL}",
databaseName = "${MPCONFIG=DB_NAME}",
serverName = "${MPCONFIG=DB_SERVER}",
user = "${MPCONFIG=DB_USER}",
password = "${MPCONFIG=DB_PASSWORD}",
properties = {"targetServerType=primary"})public class OpenAIFactory {
@Produces
@PersistenceContext
EntityManager entityManager;
}
2. Configure Persistence Update your persistence.xml to use the new datasource:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/persistence"
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
version="3.0">
<persistence-unit name="pcloud" transaction-type="JTA">
<jta-data-source>java:app/cloud-postgres</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
3. Add PostgreSQL Driver Include the PostgreSQL JDBC driver as a runtime dependency in your project.
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.1</version>
<scope>runtime</scope>
</dependency>
Deploy to Payara Cloud
1. Create a Payara Cloud Account Sign up and create an application.
2. Set Environment Variables In Payara Cloud's Configuration, add MicroProfile Config properties matching what you defined in your code (DB_URL, DB_NAME, etc.) using your Neon connection details.
3. Deploy! Click "Deploy" under Revision Actions. Your app will be live and connected to your Neon database.
Troubleshooting Double-check your database connection settings if the deployment fails. Payara Cloud's logs will usually pinpoint the issue.
That's it! You've successfully connected your Payara Cloud application to a Neon PostgreSQL database. Get the full, detailed guide here for your offline use.
Related Posts
A More Flexible Way to Deploy Jakarta EE Apps: Introducing Pay As You Go Pricing for Payara Cloud
Published on 05 Dec 2024
by Luqman Saeed
0 Comments
The Payara Monthly Catch - November 2024
Published on 28 Nov 2024
by Chiara Civardi
0 Comments