DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workkloads.

Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

Related

  • Java EE 6 Pet Catalog with GlassFish and MySQL
  • Building and Integrating REST APIs With AWS RDS Databases: A Node.js Example
  • Connection Pooling
  • Connection Pooling With BoneCP, DBCP, and C3PO [Video Tutorials]

Trending

  • Mastering Fluent Bit: Installing and Configuring Fluent Bit Using Container Images (Part 2)
  • Why Rate Limiting Matters in Istio and How to Implement It
  • How to Format Articles for DZone
  • It’s Not About Control — It’s About Collaboration Between Architecture and Security
  1. DZone
  2. Data Engineering
  3. Databases
  4. NetBeans in the Classroom: MySQL JDBC Connection Pool & JDBC Resource for GlassFish

NetBeans in the Classroom: MySQL JDBC Connection Pool & JDBC Resource for GlassFish

By 
Ken Fogel user avatar
Ken Fogel
·
Feb. 09, 15 · Interview
Likes (3)
Comment
Save
Tweet
Share
51.9K Views

Join the DZone community and get the full member experience.

Join For Free

This tutorial assumes that you have installed the Java EE version of NetBeans 8.02. It is further assumed that you have replaced the default GlassFish server instance in NetBeans with a new
instance with its own folder for the domain. This is required for all platforms. See my previous article “Creating a New Instance of GlassFish in NetBeans IDE”

The other day I presented to my students the steps necessary to make GlassFish responsible for JDBC connections. As I went through the steps I realized that I needed to record the steps for my students to reference. Here then are these steps. Steps 1 through 4 are required, Step 5 is optional.

Step 1a: Manually Adding the MySQL driver to the GlassFish Domain

Before we even start NetBeans we must do a bit of preliminary work. With the exception of Derby, GlassFish does not include the MySQL driver or any other driver in its distribution.

Go to the MySql Connector/J download site at http://dev.mysql.com/downloads/connector/j/ and download the latest version. I recommend downloading the Platform Independent version. If your OS is Windows download the ZIP archive otherwise download the TAR archive. You are looking for the driver file named mysql-connector-java-5.1.34-bin.jar in the archive.

Copy the driver file to the lib folder in the directory where you placed your domain. On my system the folder is located at C:\Users\Ken\personal_domain\lib. If GlassFish is already running then you will have to restart it so that it picks up the new library.

Step 1b: Automatically Adding the MySQL driver to the GlassFish Domain

NetBeans has a feature that deploys the database driver to the domain’s lib folder if that driver is in NetBeans’ folder of drivers. On my Windows 8.1 system the MySQL driver can be found in
C:\Program Files\NetBeans 8.0.2\ide\modules\ext.

Start NetBeans and go to the Services tab, expand Servers and right mouse click on your GlassFish Server.

Click on Properties and the Servers dialog will appear.

On this dialog you will see a check box labelled Enable JDBC Driver Deployment. By default it is checked.

NetBeans determines the driver to copy to GlassFish from the file glassfish-resources.xml that
we will create in Step 4 of this tutorial. Without this file and if you have not copied the driver into GlassFish manually then GlassFish will not be able to connect to the database. Any code in your web application will not work and all you will likely see are blank pages.

Step 1a or Step 1b?

I recommend Step 1a and manually add the driver. The reason I prefer this approach is that I can be certain that the most recent driver is in use. As of this writing NetBeans contains version 5.1.23
of the connector but the current version is 5.1.34.

If you copy a driver into the lib folder then NetBeans will not replace it with an older driver even if the check box on the Server dialog is checked. NetBeans does not replace a driver if one is already in place.

If you need a driver that NetBeans does have a copy of then Step 1b is your only choice.

Step 2: Create a Database Connection in NetBeans

One feature I have always liked in NetBeans is that it has an interface for working with databases. All that is required is that you create a connection to the database. It also has additional features for managing a MySQL server but we won’t need those. If you have not already started your MySQL DBMS then do that now. I assume that the database you wish to connect to already exists.

Go to the Services tab and right mouse click on New Connection.

In the next dialog you must choose the database driver you wish to use. It defaults to Java DB (Embedded). Pull down the combobox labeled Driver: and select MySQL (Connector/J driver).

Click on Next and you will now see the Customize Connection dialog. Here you can enter the details of the connection. On my system the server is localhost and the database name is Aquarium. Here is what my dialog looks like.

Notice the Test Connection button. I have clicked on mine and so I have the message Connection Succeeded. Click on Next.

There is nothing to do on this dialog so click on Next.

On this last dialog you have the option of assigning a name to the connection. By default it uses the URL but I prefer a more meaningful name. I have used AquariumMySQL.

Click on Finish and the connection will appear under Databases.

If the icon next to AquariumMySQL has what looks like a crack in it similar to the jdbc:derby connection then this means that a connection to the database could not be made. Verify that the
database is running and is accessible. If it is then delete the connection and start over.

Having a connection to the database in NetBeans is invaluable. You can interact with the database directly and issue SQL commands. As a MySQL user this means that I do not need to run the MySQL command line program to interact with the database.

Step 3: Create a Web Application Project in NetBeans

If you have not already done so create a New Project in NetBeans. I require my students to create a New Project in the Maven category of a Web Application project.

Click on Next. In this dialog you can give the project a name and a location in your file system. The Artifact Id, Group Id and Version are used by Maven.

The final dialog lets you select the application server that your application will use and the version of Java EE that your code must be compliant with.

Here is my project ready for the next step.

Step 4: Create the GlassFish JDBC Resource

For GlassFish to manage your database connection you need to set up two resources, a JDBC Connection Pool and a JDBC Resource. You can create both in one step by creating a GlassFish JDBC Resource because you can create the Connection Pool as part of the same operation.

Right mouse click on the project name and select New and then Other …

Scroll down the Categories list and select GlassFish. In the File Types list select JDBC Resource.

Click on Next. The next dialog is the General Attributes. Click on the radio button for Create New JDBC Connection Pool. In the text field JNDI Name enter a name that is unique for the project. JNDI names for connection resources always begin with jdbc/ followed by a name that starts with a lower case letter. I have used jdbc/myAquarium. Do not prefix the name with java:app/ as some tutorials suggest. An upcoming article will explain why.

Click on Next. There is nothing for us to enter on the Properties dialog.

Click on Next. On the Choose Database Connection dialog we will give our connection pool a name and select the database connection we created in Step 2. Notice that in the list of available connections you are shown the connection URL and not the name you assigned to it back in Step 2.

Click on Next. On the Add Connection Pool Properties dialog you will see the connection URL and the user name and password. We do need to make one change. The resource type shows
javax.sql.DataSource and we must change it to javax.sql.ConnectionPoolDataSource.

Click on Next. There is nothing we need to change on Add Connection Pool Optional Properties so click on Finish.

A new folder has appeared in the Projects view named Other Sources. It contains a sub folder named setup. In this folder is the file glassfish-resources.xml.

The glassfish-resources.xml file will contain the following. I have reformatted the file for easier viewing.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC 
    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" 
    "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
    <jdbc-resource 
            enabled="true" 
            jndi-name="jdbc/myAquarium" 
            object-type="user" 
            pool-name="aquariumPool">
        <description/>
    </jdbc-resource>
    <jdbc-connection-pool 
        allow-non-component-callers="false" 
        associate-with-thread="false" 
        connection-creation-retry-attempts="0" 
        connection-creation-retry-interval-in-seconds="10" 
        connection-leak-reclaim="false" 
        connection-leak-timeout-in-seconds="0" 
        connection-validation-method="auto-commit" 
        datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" 
        fail-all-connections="false" idle-timeout-in-seconds="300" 
        is-connection-validation-required="false" is-isolation-level-guaranteed="true" 
        lazy-connection-association="false" 
        lazy-connection-enlistment="false" 
        match-connections="false" 
        max-connection-usage-count="0" 
        max-pool-size="32" 
        max-wait-time-in-millis="60000" 
        name="aquariumPool" 
        non-transactional-connections="false" 
        pool-resize-quantity="2" 
        res-type="javax.sql.ConnectionPoolDataSource" 
        statement-timeout-in-seconds="-1" 
        steady-pool-size="8" 
        validate-atmost-once-period-in-seconds="0" 
        wrap-jdbc-objects="false">
        <property name="URL" value="jdbc:mysql://localhost:3306/Aquarium?zeroDateTimeBehavior=convertToNull"/>
        <property name="User" value="fish"/>
        <property name="Password" value="fish"/>
    </jdbc-connection-pool>
</resources>

OPTIONAL Step 5: Configure GlassFish with glassfish-resources.xml

The glassfish-resources.xml file, when included in the application’s WAR file in the WEB-INF
folder, can configure the resource and pool for the application when it is deployed in GlassFish. When the application is un-deployed the resource and pool are removed. If you want to set up the resource and pool permanently in GlassFish then follow these steps.

Go to the Services tab and select Servers and then right mouse click on GlassFish. If GlassFish is not running then click on Start.

With the server started click on View Domain Admin Console.

Your web browser will now open and show you the GlassFish console. If you assigned a user name and password to the server you will have to enter this information before you see the console.

In the Common Tasks tree select Resources. You should now see in the panel adjacent to the tree the following:

Click on Add Resources. You should now see:

In the Location click on Choose File and locate your glassfish-resources.xml file. Mine is found at D:\NetBeansProjects\GlassFishTutorial\src\main\setup. You should now see:

Click on OK. If everything has gone well you should see:

The final task in this step is to test if the connection works. In the Common Tasks tree select Resources, JDBC, JDBC Connection Pools and aquariumPool.

Click on Ping. You should see:

The most common reason for the Ping to fail is that the database driver is not in the domain’s lib folder. Go to Step 1a and manually add the driver.

The resources are now visible in NetBeans.

Having the resource and pool add to GlassFish permanently will allow other applications to share this same resource and pool.

You are now ready to code!

Database connection GlassFish NetBeans MySQL Connection pool Driver (software)

Opinions expressed by DZone contributors are their own.

Related

  • Java EE 6 Pet Catalog with GlassFish and MySQL
  • Building and Integrating REST APIs With AWS RDS Databases: A Node.js Example
  • Connection Pooling
  • Connection Pooling With BoneCP, DBCP, and C3PO [Video Tutorials]

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!