Regarding the daytrader plan, I did look at the plan in the target
directory. I was searching for org.apache.derby and it didn't return
anything.:-( The dependencies were inside of the embedded
datasource plan
in 1.0 but now it is moved up to the top of the plan so I missed
them too:-(
Lin
-----Original Message-----
From: David Jencks [mailto:[EMAIL PROTECTED]
Sent: Wednesday, June 07, 2006 3:14 AM
To: [email protected]
Subject: Re: unable to run a simple jsp application
On Jun 6, 2006, at 8:13 PM, Lin Sun wrote:
Hi Stan,
You are right, the classloader in 1.1 seems to change a lot. So I
went
back to the datasource plan, and I had the following as dependencies:
<dep:dependency>
<dep:groupId>org.apache.derby</dep:groupId>
<dep:artifactId>derby</dep:artifactId>
<dep:version>10.1.1.0</dep:version>
<dep:type>jar</dep:type>
</dep:dependency>
This is your problem, this loads a second copy of derby in a second
classloader: as Stanley reminded me this causes problems. Instead
you need a car dependency on system-datasource so you are sharing
it's copy of derby.
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>system-database</dep:artifactId>
<dep:type>car</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>org.apache.derby</dep:groupId>
<dep:artifactId>derbynet</dep:artifactId>
<dep:version>10.1.1.0</dep:version>
<dep:type>jar</dep:type>
</dep:dependency>
This is in the system-database classloader also so you can omit it.
In general you should leave out versions so they can be resolved by
geronimo and upgraded later.
First I tried to comment out both of them, but I got a "
java.lang.NoClassDefFoundError: org/apache/derby/jdbc/
EmbeddedXADataSource"
from tranql. Then I only commented out the derbynet jar and
redeployed
everything. Still got the same exception.
I looked over the derby datasource section of the daytrader plan,
and it
didn't have any org.apache.derby dependencies. I don't understand
that even
though the daytrader uses an application scoped datasource. But I
haven't
been able to get daytrader running yet.
Where are you looking? You need to look in the target directory of
the config, or the project.xml of the config subproject. The
geronimo packaging plugin inserts the dependencies into the plan
based on marked dependencies in the project.xml. So, for instance,
the daytrader jetty plan starts like this, including a dependency on
system-datasource such as I recommend above:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/
application-1.1">
<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/
deployment-1.1">
<dep:moduleId>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>daytrader-derby-jetty</dep:artifactId>
<dep:version>1.1-SNAPSHOT</dep:version>
<dep:type>car</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>j2ee-server</dep:artifactId>
<dep:type>car</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>system-database</dep:artifactId>
<dep:type>car</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>geronimo</dep:groupId>
<dep:artifactId>geronimo-daytrader-derby-db</dep:artifactId>
<dep:type>jar</dep:type>
<dep:import>classes</dep:import>
</dep:dependency>
</dep:dependencies>
<dep:hidden-classes/>
<dep:non-overridable-classes/>
</dep:environment>
thanks
david jencks
P.S. the jsp is doing basic stuff...it was failing when attempting
to get
the connection from the pool.
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/DataSource");
System.out.println("Got DataSource: " +ds.toString() );
con = ds.getConnection(); //failed here.
Lin
-----Original Message-----
From: Stanley Bradbury [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 06, 2006 6:50 PM
To: [email protected]
Subject: Re: unable to run a simple jsp application
Lin Sun wrote:
Hi there,
I have a simple jsp application that worked on 1.0. It displays
the
contents of the EMP table of the Employee database.
I am using the embedded derby database and the
tranql-connector-derby-embed-xa-1.1 rar file in Geronimo 1.1 build
(geronimo-tomcat-j2ee-1.1-410806).
The server wide datasource and application war file deployed fine.
However, when I access the jsp from my firefox browser, I got the
following
exception
in the console when the server is trying to get the database
connection:
== SNIP ===
Hi Lin -
The few times I have seen a NullPointerException while trying to
start a
Derby database have been caused by the Derby embedded driver being
loaded by multiple classloaders in a JVM. Could it be that your
JSP is
causing the embedded driver to loaded? Isn't it true that the server
wide datasource should be starting the database when Geronimo starts
rather than this happening when the JSP is called?
The fact that this fails with version 1.1 and not 1.0 might be
because
of classloader changes that were implemented since 1.0.
Any thoughts on this theory from people knowledgeable about the the
Geronimo 1.1 JSP classloader hierarchy?
Derby Start exception:
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Thread.java:568)
org.apache.derby.impl.jdbc.EmbedSQLExceptionFailed to start database
'Employee',
see the next exception for details.
java.lang.NullPointerException
at
org.apache.jsp.jsp.EMPdemo_jsp._jspService(org.apache.jsp.jsp.EMPdemo
_jsp:70)