Click here to close now.


You will be redirected in 30 seconds or close now.

ColdFusion Authors: Yakov Fain, Maureen O'Gara, Nancy Y. Nee, Tad Anderson, Daniel Kaar

Related Topics: ColdFusion

ColdFusion: Article

Working with the Apache Derby Database and ColdFusion

A basic introduction

Early releases of Cold Fusion (under Allaire) focused on the Windows market and it was common to include example Access databases. It was common for entry-level developers to take this example to heart and build systems on Access back-ends. One didn't have to install, set up, admin, or most importantly pay for anything. With the beta release of ColdFusion 8, Adobe is providing support for an array of open source databases. Now using PostgreSQL, MySQL, or Apache Derby (formerly IBM Cloudscape) has been made that simpler for CF developers since JDBC drivers for all of them are included. Any of these solutions can be used for the free distribution of databases on either Windows or *nix. The same can't be said of Access. Adobe has made moving to open source more convenient by including Derby in the base install of Scorpio. It will now likely become common for systems to be distributed with Derby databases because of their operating system independence, royalty-free distribution, small footprint, and ease of installation. This article attempts to help early adopters try Derby out with ColdFusion 8.

Apache Derby is a pure Java database that supports almost all of the SQL-92 standard. It fits in about 2MB of memory, a nice efficient footprint for memory-constrained environments like mobile applications (or your desktop masquerading as a server). With ColdFusion it runs on J2SE 1.6 and the shipping driver is a native protocol, a pure Java (level 4) driver. There are two flavors of Derby: embedded and network. Simply put, embedded is a direct-connect (you have to run it in the same JVM as the code connecting to it), single-client database while network adds networking and multi-client support.

The Embedded Database
Once you install Scorpio and find your way to the Data Sources section of the Administrator, you'll see four Derby Embedded example databases (and zero Access databases). The example databases are installed in /ColdFusion8/db. (Note: File references in this article assume that ColdFusion is installed at the root of your filesystem. If you're on Windows, the default install path is C:\ColdFusion8 and the references below should be changed accordingly.)

One of these examples is the CFBookClub database. One can query this database in the same way as any other in ColdFusion, using the CFQuery, CFQueryParam, CFStoredProc, and CFProcParam tags. Create a new page called testDatabase.cfm in your webroot and code:

<cfquery name="test" datasource="cfbookclub" >
select books.title
from app.books books
inner join app.authors authors on books.authorid=authors.authorid
where authors.lastname =
<cfqueryparam cfsqltype="cf_sql_varchar" value="Miro" />

<cfdump var="#test#" />

Run it and you should see CF8's new query dump format which gives you metadata about the query including execution time.

Creating Embedded Databases
To create a new embedded database, enter the directory where you want the database files kept. Do not create a new directory yourself and then browse to it. Select or enter the directory you'd like to contain the database subdirectory. Now write the subdirectory name you'd like after this. For example, Browse to "C:\ColdFusion8\db\" then enter "mytestdatabase" in the entry box. The Database Folder field now reads "C:\ColdFusion8\db\mytestdatabase". (Figure 1)

If you're creating a new Derby database, open the Advanced tab and enter 'create=true' in the Connection String field. If the directory specified already exists and doesn't contain a Derby database, datasource creation will fail writing an error 'XBM0J' to the Derby log file (in /ColdFusion8/logs). (Figure 2)

It's not great interface design to have the file browser come up to help you locate the target directory when the activity fails if the directory already exists and doesn't contain a Derby database. The only time this will work is when you point to a directory that does contain a Derby database. If you want to create a datasource for a Derby database someone has given you, you can point the file browser at the directory that contains it. You must still open the Advanced tab and enter 'create=true' in the Connection String field. (Figure 3)

The ColdFusion server doesn't seem to like to let go of Derby embedded databases once you connect to them. Restarting the CF service is very slow after creating and verifying the new embedded Derby database. This is a bit problematical since it currently appears that the Advanced Options "Maintain connections across client requests," "Timeout," and "Interval" don't work: connections are maintained indefinitely. Restarting the server is the only way to release a connection. You can't have multiple connections open to an embedded database, so you can't use other tools (such as Eclipse or ij, discussed below) to work with it while running your CF application. This is one of many good reasons to think about using Derby Network instead.

Creating Network Databases
Creating a Derby network database is just as easy. First start up the Derby server: "java -jar /ColdFusion8/lib/derbynet.jar -start." Now go to CF Administrator and create a new Derby client datasource. There's currently a bug in this dialog, so in the Advanced/Connection String box, you'll have to start with a semicolon ";create=true" to get it to work. Hit submit and your new database directory will be created in the same directory in which the server started up (/ColdFusion8/lib). There's nothing to say that you have to run the Derby server on the same box as CF, in fact if you want your app to scale across multiple servers it's better not to.

Installing a Derby Network Server
While CF8 ships with the latest Derby (10.2.2), Adobe's not going to notify you when new features or minor patches come out. You'll have to go to Apache to keep up-to-date. ( Download the latest version and unpack it on the server of your choice. Set the JAVA_HOME environment variable to the location of your Java runtime. If you want to use the runtime shipping with the CF server (JavaSE 1.6) to try this out, run 'set JAVA_HOME = [coldfusion install dir]\runtime' (Windows) or 'export JAVA_HOME="[coldfusion install dir]/runtime"' (*nix). (If you're smart and installing this on another machine, you should have downloaded the latest JRE from Sun and installed it there already.) Navigate to the Derby bin subdirectory and run the setNetworkServerCP script, which adds Derby's info to your CLASSPATH environment variable then run the startNetworkServer script. Scripts are included for *nix and Windows. Your Derby server will now tell you that it's listening on port 1527 and is ready to accept connections. When you use the ColdFusion Datasources dialog to tell the Derby server to make new databases (with the create=true directive), Derby will create new subdirectories in its startup directory (/Derby/bin directory) by default. When you want to stop your new server - you guessed it, run stopNetworkServer.

More Stories By Chip Temm

Over the past decade, Chip Temm moved from North America to Europe and on to Africa where his company anthroLogik solutions provided analysis and development services organizations across seven timezones. He is currently back in Washington, DC where "remote development" means working from home and "wildlife" means raccoon.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.

@ThingsExpo Stories
Today air travel is a minefield of delays, hassles and customer disappointment. Airlines struggle to revitalize the experience. GE and M2Mi will demonstrate practical examples of how IoT solutions are helping airlines bring back personalization, reduce trip time and improve reliability. In their session at @ThingsExpo, Shyam Varan Nath, Principal Architect with GE, and Dr. Sarah Cooper, M2Mi's VP Business Development and Engineering, will explore the IoT cloud-based platform technologies driving this change including privacy controls, data transparency and integration of real time context w...
There will be 20 billion IoT devices connected to the Internet soon. What if we could control these devices with our voice, mind, or gestures? What if we could teach these devices how to talk to each other? What if these devices could learn how to interact with us (and each other) to make our lives better? What if Jarvis was real? How can I gain these super powers? In his session at 17th Cloud Expo, Chris Matthieu, co-founder and CTO of Octoblu, will show you!
Developing software for the Internet of Things (IoT) comes with its own set of challenges. Security, privacy, and unified standards are a few key issues. In addition, each IoT product is comprised of at least three separate application components: the software embedded in the device, the backend big-data service, and the mobile application for the end user's controls. Each component is developed by a different team, using different technologies and practices, and deployed to a different stack/target - this makes the integration of these separate pipelines and the coordination of software upd...
As a company adopts a DevOps approach to software development, what are key things that both the Dev and Ops side of the business must keep in mind to ensure effective continuous delivery? In his session at DevOps Summit, Mark Hydar, Head of DevOps, Ericsson TV Platforms, will share best practices and provide helpful tips for Ops teams to adopt an open line of communication with the development side of the house to ensure success between the two sides.
Mobile messaging has been a popular communication channel for more than 20 years. Finnish engineer Matti Makkonen invented the idea for SMS (Short Message Service) in 1984, making his vision a reality on December 3, 1992 by sending the first message ("Happy Christmas") from a PC to a cell phone. Since then, the technology has evolved immensely, from both a technology standpoint, and in our everyday uses for it. Originally used for person-to-person (P2P) communication, i.e., Sally sends a text message to Betty – mobile messaging now offers tremendous value to businesses for customer and empl...
The IoT market is on track to hit $7.1 trillion in 2020. The reality is that only a handful of companies are ready for this massive demand. There are a lot of barriers, paint points, traps, and hidden roadblocks. How can we deal with these issues and challenges? The paradigm has changed. Old-style ad-hoc trial-and-error ways will certainly lead you to the dead end. What is mandatory is an overarching and adaptive approach to effectively handle the rapid changes and exponential growth.
SYS-CON Events announced today that Sandy Carter, IBM General Manager Cloud Ecosystem and Developers, and a Social Business Evangelist, will keynote at the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA.
The IoT is upon us, but today’s databases, built on 30-year-old math, require multiple platforms to create a single solution. Data demands of the IoT require Big Data systems that can handle ingest, transactions and analytics concurrently adapting to varied situations as they occur, with speed at scale. In his session at @ThingsExpo, Chad Jones, chief strategy officer at Deep Information Sciences, will look differently at IoT data so enterprises can fully leverage their IoT potential. He’ll share tips on how to speed up business initiatives, harness Big Data and remain one step ahead by apply...
WebRTC converts the entire network into a ubiquitous communications cloud thereby connecting anytime, anywhere through any point. In his session at WebRTC Summit,, Mark Castleman, EIR at Bell Labs and Head of Future X Labs, will discuss how the transformational nature of communications is achieved through the democratizing force of WebRTC. WebRTC is doing for voice what HTML did for web content.
"Matrix is an ambitious open standard and implementation that's set up to break down the fragmentation problems that exist in IP messaging and VoIP communication," explained John Woolf, Technical Evangelist at Matrix, in this interview at @ThingsExpo, held Nov 4–6, 2014, at the Santa Clara Convention Center in Santa Clara, CA.
WebRTC has had a real tough three or four years, and so have those working with it. Only a few short years ago, the development world were excited about WebRTC and proclaiming how awesome it was. You might have played with the technology a couple of years ago, only to find the extra infrastructure requirements were painful to implement and poorly documented. This probably left a bitter taste in your mouth, especially when things went wrong.
The broad selection of hardware, the rapid evolution of operating systems and the time-to-market for mobile apps has been so rapid that new challenges for developers and engineers arise every day. Security, testing, hosting, and other metrics have to be considered through the process. In his session at Big Data Expo, Walter Maguire, Chief Field Technologist, HP Big Data Group, at Hewlett-Packard, will discuss the challenges faced by developers and a composite Big Data applications builder, focusing on how to help solve the problems that developers are continuously battling.
Nowadays, a large number of sensors and devices are connected to the network. Leading-edge IoT technologies integrate various types of sensor data to create a new value for several business decision scenarios. The transparent cloud is a model of a new IoT emergence service platform. Many service providers store and access various types of sensor data in order to create and find out new business values by integrating such data.
There are so many tools and techniques for data analytics that even for a data scientist the choices, possible systems, and even the types of data can be daunting. In his session at @ThingsExpo, Chris Harrold, Global CTO for Big Data Solutions for EMC Corporation, will show how to perform a simple, but meaningful analysis of social sentiment data using freely available tools that take only minutes to download and install. Participants will get the download information, scripts, and complete end-to-end walkthrough of the analysis from start to finish. Participants will also be given the pract...
WebRTC: together these advances have created a perfect storm of technologies that are disrupting and transforming classic communications models and ecosystems. In his session at WebRTC Summit, Cary Bran, VP of Innovation and New Ventures at Plantronics and PLT Labs, will provide an overview of this technological shift, including associated business and consumer communications impacts, and opportunities it may enable, complement or entirely transform.
SYS-CON Events announced today that Dyn, the worldwide leader in Internet Performance, will exhibit at SYS-CON's 17th International Cloud Expo®, which will take place on November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. Dyn is a cloud-based Internet Performance company. Dyn helps companies monitor, control, and optimize online infrastructure for an exceptional end-user experience. Through a world-class network and unrivaled, objective intelligence into Internet conditions, Dyn ensures traffic gets delivered faster, safer, and more reliably than ever.
WebRTC services have already permeated corporate communications in the form of videoconferencing solutions. However, WebRTC has the potential of going beyond and catalyzing a new class of services providing more than calls with capabilities such as mass-scale real-time media broadcasting, enriched and augmented video, person-to-machine and machine-to-machine communications. In his session at @ThingsExpo, Luis Lopez, CEO of Kurento, will introduce the technologies required for implementing these ideas and some early experiments performed in the Kurento open source software community in areas ...
Too often with compelling new technologies market participants become overly enamored with that attractiveness of the technology and neglect underlying business drivers. This tendency, what some call the “newest shiny object syndrome,” is understandable given that virtually all of us are heavily engaged in technology. But it is also mistaken. Without concrete business cases driving its deployment, IoT, like many other technologies before it, will fade into obscurity.
Who are you? How do you introduce yourself? Do you use a name, or do you greet a friend by the last four digits of his social security number? Assuming you don’t, why are we content to associate our identity with 10 random digits assigned by our phone company? Identity is an issue that affects everyone, but as individuals we don’t spend a lot of time thinking about it. In his session at @ThingsExpo, Ben Klang, Founder & President of Mojo Lingo, will discuss the impact of technology on identity. Should we federate, or not? How should identity be secured? Who owns the identity? How is identity ...
The buzz continues for cloud, data analytics and the Internet of Things (IoT) and their collective impact across all industries. But a new conversation is emerging - how do companies use industry disruption and technology enablers to lead in markets undergoing change, uncertainty and ambiguity? Organizations of all sizes need to evolve and transform, often under massive pressure, as industry lines blur and merge and traditional business models are assaulted and turned upside down. In this new data-driven world, marketplaces reign supreme while interoperability, APIs and applications deliver un...