Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

connecting to derby database with tomcat as the server

How do i connect to derby database (that comes with the netbeans) ? I am using Tomcat as the server. Earlier i used the following statements to connect to the derby database,but then i used glassfish as the server.

Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/PollDatasource");
Connection connection = ds.getConnection();

But now using Tomcat as the server i am unaware how to do this.

Note : Tomcat and Derby are pre installed with netbeans IDE that i am using currently

like image 462
Suhail Gupta Avatar asked Jul 11 '12 08:07

Suhail Gupta


People also ask

How do I connect to Apache Derby database?

If you want to connect to a Derby database which is running in server mode then you can use the following command. connect 'jdbc:derby://localhost:1527/c:\temp\db\FAQ\db;create=true'; To disconnect from the database.


3 Answers

In Tomcat find conf/context.xml, then edit and write something like this:

<Resource name="jdbc/PollDatasource" auth="Container" type="javax.sql.DataSource"
    driverClassName="com.YourDriver" 
    url="jdbc:derby://localhost:1527/nameOfTheDatabase;create=true"
    username="username" password="password" maxActive="20" 
    maxIdle="10" maxWait="-1" />

Note 1: With the above URL the driver will be org.apache.derby.jdbc.ClientDriver

Note 2 : You can also add the above information in META-INF/context.xml of your project. This becomes application specific.If you add the information in tomcat's context.xml that becomes global.

Note 3: Download the jar from this website.Download db-derby-10.9.1.0-bin.zip.It contains many files, including derby.jar and derbyclient.jar (along with much documentation).derbyclient.jar contains our friend org.apache.derby.jdbc.ClientDriver.class. derby.jar contains org.apache.derby.jdbc.EmbeddedDriver. Keep the downloaded jar in lib folder of Tomcat.

and in your application web.xml "resource-ref":

<resource-ref>
    <description>my connection</description>
    <res-ref-name>jdbc/PollDatasource</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

You may want to look at these questions :

  • Isn't it necessary to mention the name of archive in the Resource tag?
  • When is the tag I added in context.xml gets read?
  • What are steps followed in the look-up? what is looked first web.xml or context.xml?
like image 184
Raknel Avatar answered Sep 19 '22 02:09

Raknel


You need to:

1) Copy your derbyclient-*.jar to ${TOMCAT_HOME}/lib.

2) Edit your server.xml and add the following lines to the section GlobalNamingResources:

 <Resource auth="Container" 
           driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
           maxActive="8" maxIdle="4" 
           name="jdbc/my-ds" type="javax.sql.DataSource" 
           url="jdbc:derby:mydb;create=true" 
           username="myuser" password="mypassword" />

3) In your context definition, add:

 <Context docBase="myapp"
          path="/myapp"
          reloadable="true"
          ...>
    <ResourceLink name="jdbc/my-ds"
                  global="jdbc/my-ds"
                  type="javax.sql.DataSource" />
 </Context>

4) Restart Tomcat.

like image 25
carlspring Avatar answered Sep 18 '22 02:09

carlspring


The example you have requires JNDI. See the relevant tomcat versions docs on setting that up.

Or use a connection string, here's a page from derby docs http://db.apache.org/derby/integrate/plugin_help/derby_app.html

like image 44
TedTrippin Avatar answered Sep 22 '22 02:09

TedTrippin