JDBC Tutorials - Herong's Tutorial Notes
Dr. Herong Yang, Version 2.11

Derby - Storing ClientDataSource Objects on File System

This section describes how to store a Derby JDBC ClientDataSource object in the file system using JNDI File System Service Provider.

JNDI File System Service Provider offers a directory service which allows you to store Java objects on the local file system. You can use this feature to create a Derby JDBC ClientDataSource object and store it on the local file system. That stored ClientDataSource object can be retrieved later whenever you want to use it.

To store a ClientDataSource object on the local file system, I need to:

  • Initiate the directory service with RefFSContextFactory class.
  • Assign a file system directory as the service home directory.
  • Create a ClientDataSource object with correct access information for the Derby Network Server.
  • Bind the ClientDataSource object to a name to store it to the file system.

I wrote the following sample program to store my ClientDataSource object to the file system via JNDI:

/**
 * DerbyJndiBind.java
 * Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
 */
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import org.apache.derby.jdbc.*;
public class DerbyJndiBind {
  public static void main(String [] args) {
    Connection con = null;
    try {

// Starting the Directory service
      Hashtable env = new Hashtable();
      env.put(Context.INITIAL_CONTEXT_FACTORY, 
        "com.sun.jndi.fscontext.RefFSContextFactory");
      env.put(Context.PROVIDER_URL, "file:/local/fscontext");
      Context ctx = new InitialContext(env);

// Creating a DataSource object
      ClientDataSource ds 
        = new org.apache.derby.jdbc.ClientDataSource();
      ds.setServerName("localhost");
      ds.setDatabaseName("TestDB");

// Storing the DataSource object
      ctx.bind("DerbyTestDB", ds);
      System.out.println("ClientDataSource object stored ok.");

    } catch (Exception e) {
      System.err.println("Exception: "+e.getMessage());
    }
  }
}

Here is the output of compilation and execution of the program:

C:\>javac -cp .;\local\javadb\lib\derbyclient.jar DerbyJndiBind.java
Note: DerbyJndiBind.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

C:\>java -cp .;\local\javadb\lib\derbyclient.jar;
  \local\lib\fscontext.jar;\local\lib\providerutil.jar DerbyJndiBind
ClientDataSource object stored ok.

C:\>java -cp .;\local\javadb\lib\derbyclient.jar;
  \local\lib\fscontext.jar;\local\lib\providerutil.jar DerbyJndiBind
Exception: DerbyTestDB

Note that:

  • The compilation gave me a warning message. Don't worry about it for now.
  • When I ran the program for the second time, it gave me an exception because the name "DerbyTestDB" has already been used to store the ClientDataSource from the first execution.

Table of Contents

 About This Book

 JDBC (Java Database Connectivity) Introduction

 Downloading and Installing JDK - Java SE

 Installing and Running Java DB - Derby

 Derby (Java DB) JDBC Driver

Derby (Java DB) JDBC DataSource Objects

 Derby - Connection with DataSource Objects

 Derby - Using ClientDataSource Directly

 Installing JNDI File System Service Provider

Derby - Storing ClientDataSource Objects on File System

 Derby - Looking Up ClientDataSource Objects on File System

 What Happens If Client JDBC DataSource JAR Is Missing?

 Java DB (Derby) - DML Statements

 Java DB (Derby) - ResultSet Objects of Queries

 Java DB (Derby) - PreparedStatement

 MySQL Installation on Windows

 MySQL JDBC Driver (MySQL Connector/J)

 MySQL - PreparedStatement

 MySQL - Reference Implementation of JdbcRowSet

 MySQL - JBDC CallableStatement

 MySQL CLOB (Character Large Object) - TEXT

 MySQL BLOB (Binary Large Object) - BLOB

 Oracle Express Edition Installation on Windows

 Oracle JDBC Drivers

 Oracle - Reference Implementation of JdbcRowSet

 Oracle - PreparedStatement

 Oracle - JBDC CallableStatement

 Oracle CLOB (Character Large Object) - TEXT

 Oracle BLOB (Binary Large Object) - BLOB

 Microsoft SQL Server 2005 Express Edition

 Microsoft JDBC Driver for SQL Server - sqljdbc.jar

 Microsoft JDBC Driver - Query Statements and Result Sets

 Microsoft JDBC Driver - DatabaseMetaData Object

 Microsoft JDBC Driver - DDL Statements

 Microsoft JDBC Driver - DML Statements

 SQL Server - PreparedStatement

 SQL Server CLOB (Character Large Object) - TEXT

 SQL Server BLOB (Binary Large Object) - BLOB

 JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver

 JDBC-ODBC Bridge Driver - Flat Text Files

 JDBC-ODBC Bridge Driver - MS Access

 JDBC-ODBC Bridge Driver - MS SQL Server

 Summary of JDBC Drivers and Database Servers

 Additional Tutorial Notes to Be Added

 References

 PDF Printing Version

Dr. Herong Yang, updated in 2007
Derby - Storing ClientDataSource Objects on File System