You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Stanley Bradbury <St...@gmail.com> on 2006/04/20 18:44:34 UTC

Re: Help please with derby + tomcat

gary gilbert wrote:

> Stan,
>  
> I saw a post you made a while back on implementing derby in embedded 
> mode with tomcat.  I am a real newbie with both tomcat and derby but I 
> am trying to set up a JSP (which I am also a newbie at) web 
> application to be able to use derby on tomcat.
>  
> I created a directory in my tomcat_home directory called 
> Databases/JPetStoreDB and put the derby directory tree in there.
>  
> I then put the following in my server.xml
>  
> <!-- Global Datasource for Derby JPetStoreDB database -->
>          <Resource name="jdbc/JPetStoreDB"
>               type="javax.sql.DataSource"  auth="Container"
>               description="Derby database for JPetStoreApp"
>               maxActive="100" maxIdle="30" maxWait="10000"
>               username="" password=""
>               driverClassName="org.apache.derby.jdbc.EmbeddedDriver "
>               url="jdbc:derby:Databases/JPetStoreDB"/>
>
> and the finally in  webapps/myapp/WEB_INF/web.xml I put the following
>  
>    <resource-ref>
>     <description>JPetStore DataSource</description>
>  <res-ref-name>jdbc/JPetStoreDB</res-ref-name>
>  <res-type>javax.sql.DataSource</res-type>
>  <res-auth>Container</res-auth>
>  <res-sharing-scope>Shareable</res-sharing-scope>
>    </resource-ref>
>  
> I created a index.jsp file and imported the jstl taglib for sql and 
> tried to connect
>  
> <sql:query var="myquery" dataSource="jdbc/JPetStoreDB">
> select * from category
> </sql:query>
>  
> when I tried to run the code I got errors null pointer, no driver 
> found etc.  The only way I could get it to work is if I used absolute path
>  
> <sql:query var="myquery" 
> dataSource="jdbc:derby:c:\tomcat\Databases\JPetStoreDB,org.apache.derby.jdbc.EmbeddedDriver">
> select * from category
> </sql:query>
>  
> unfortunately the absolute path is not what I want to work :( 
>  
> Any help/advice would be greatly appreciated.
>  
> Sincerely,
>  
> Gary Gilbert

Hi Gary -
I have not used the SQL Tag library - if the following information does 
not resolve your problem I recommend posting the question to the tomcat 
user list at users@tomcat.apache.org - many very knowledgeable people 
respond to issues posted there.  I am spinning up myself on J2EE issues 
so did a little research on the SQL tag library and found the following  
information in the Sun J2ee Tutorial.  It appear that you need to use 
the tag "setDataSource" instead of dataSource.  The fact that you have 
to supply a completely qualified Derby connection URL 
'jdbc:derby:c:\tomcat\Databases\JPetStoreDB' indicates to me that the 
Global JNDI datasource is not being used (it is reading the entry as 
DriverManager parameters).  The example from the Sun Tutorial is:

---
The setDataSource tag allows you to set data source information for the 
database. You can provide a JNDI name or DriverManager parameters to set 
the data source information. All of the Duke's Bookstore pages that have 
more than one SQL tag use the following statement to set the data source:
The setDataSource tag allows you to set data source information for the 
database. You can provide a JNDI name or DriverManager parameters to set 
the data source information. All of the Duke's Bookstore pages that have 
more than one SQL tag use the following statement to set the data source:

<sql:setDataSource dataSource="jdbc/BookDB" />

The query tag performs an SQL query that returns a result set. For 
parameterized SQL queries, you use a nested param tag inside the query tag.

In bookcatalog.jsp, the value of the Add request parameter determines 
which book information should be retrieved from the database. This 
parameter is saved as the attribute name bid and is passed to the param 
tag.

<c:set var="bid" value="${param.Add}"/>
<sql:query var="books" >
  select * from PUBLIC.books where id = ?
  <sql:param value="${bid}" />
</sql:query>

---   You might want to compare this version of |bookcatalog.jsp| to the 
versions in JavaServer Pages Technology <JSPIntro.html#wp100465> and 
Custom Tags in JSP Pages <JSPTags.html#wp74644> that use a book database 
JavaBeans component.

<sql:query var="books" 
  dataSource="${applicationScope.bookDS}">
  select * from PUBLIC.books where id = ?
  <sql:param value="${bid}" />
</sql:query>

----

The URL for this is:  
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSTL7.html

I am cc'ing the derby-user maillist so others interested in using Derby 
with Tomcat can find this information as well.

HTH