Congrats, and welcome to the club :)
-----Original Message-----
From: Jerald Dawson [mailto:jdawso..rk.com]
Sent: Tuesday, July 01, 2008 3:13 PM
To: use..ayenne.apache.org
Subject: Re: Exception in SAXParserFactory.newInstance with 3.0M4
Hi Scott
That did help. Removing the driver name from the xml file and then
calling:
Class.forName("com.mysql.jdbc.Driver");
before calling :
context = DataContext.createDataContext();
worked like a charm. I'm now able to start actually using this thing. :)
-j
On Jul 1, 2008, at 1:51 PM, Scott Anderson wrote:
> Jerald,
>
> If this is a similar ClassLoader issue, you can try explicitly
> sending a
> (String)null to Cayenne for the driver name, forcing it to go through
> the DriverManger, with which you will register your JDBC driver.
>
> I have a similar situation in one of my applications, except that I am
> forcing Cayenne to go through a different ClassLoader than the JVM's
> default. You have the exact opposite case from mine, but my solution
> should work for you as well, as long as you're able to instantiate the
> JDBC driver.
>
>
http://bnubot.googlecode.com/svn/trunk/BNUBot/src/net/bnubot/db/conf/Cay
> enneConfiguration.java
>
>
> HTH,
> Scott
>
> -----Original Message-----
> From: Jerald Dawson [mailto:jdawso..rk.com]
> Sent: Tuesday, July 01, 2008 2:44 PM
> To: use..ayenne.apache.org
> Subject: Re: Exception in SAXParserFactory.newInstance with 3.0M4
>
> Thanks Andrus
>
> I got through that exception but now am getting another one where the
> org.apache.cayenne.conn.DriverDataSource is trying to load the jdbc
> driver class. I looked in the source and see that it is similar to the
> other code we were having issues with so I'm wondering if its the same
> thing. Here is the code in question where the exception is happening:
>
> private static Driver loadDriver(String driverClassName) throws
> SQLException {
>
> Class<?> driverClass;
> try {
> driverClass = Class.forName(driverClassName, true, Thread
> .currentThread()
> .getContextClassLoader());
> }
> catch (Exception ex) {
> throw new SQLException("Can not load JDBC driver named '"
> + driverClassName
> + "': "
> + ex.getMessage());
> }
> ...
>
> And here is the stack from the exception:
> INFO: *** Connecting: FAILURE.
> java.sql.SQLException: Can not load JDBC driver named
> 'com.mysql.jdbc.Driver': com/mysql/jdbc/Driver
> at
> org
> .apache
> .cayenne.conn.DriverDataSource.loadDriver(DriverDataSource.java:
> 62)
> at
> org
> .apache
> .cayenne
> .conn.DriverDataSource.setDriverClassName(DriverDataSource.java:256)
>
> As you can see, driverClass is again using getContextClassLoad from
> Thread,currentThread(). Not 100% sure that its the issue but it seems
> reasonable. Also, I have verified that the mysql jars are in my
> classpath. Also, modeler seems to see it fine and is able to access my
> database.
>
> jerald dawson
>
> On Jul 1, 2008, at 1:18 PM, Andrus Adamchik wrote:
>
>>> BTW, I'm using SWT if that is pertinent.
>>
>> It probably is. The ClassLoader settings are likely different.
>>
>> Anyways the code in question does look suspect. I implemented a bit
>> more paranoid version of this method (without actually knowing
>> whether null values are valid here or not). The code is checked in
>> to trunk, and you may try this cayenne-server.jar that contains the
>> fix:
>>
>>
>
http://people.apache.org/~aadamchik/patched/cayenne-server-3.0-07012008
> .
> jar
>>
>> Andrus
>>
>>
>>
>>
>> On Jul 1, 2008, at 9:02 PM, Jerald Dawson wrote:
>>
>>> Ok, more info. I have been stepping through the code to see what is
>>> actually throwing the NPE and I've come to this code in
>>> DataSourceInfo class:
>>>
>>> public PasswordEncoding getPasswordEncoder() {
>>> PasswordEncoding encoder = null;
>>>
>>> try {
>>> encoder = (PasswordEncoding) Thread
>>> .currentThread()
>>> .getContextClassLoader()
>>> .loadClass(getPasswordEncoderClass())
>>> .newInstance();
>>> // encoder = (PasswordEncoding)
>>> // Class.forName(getPasswordEncoderClass()).newInstance();
>>> }
>>> ...
>>>
>>> Now following the code, I notice that the getContextClassLoader
>>> call returns null which seems to be the source of the NPE. Is there
>>> a reason getContextClassLoader would be returning null?
>>>
>>> BTW, I'm using SWT if that is pertinent.
>>
>>
>
This archive was generated by hypermail 2.0.0 : Tue Jul 01 2008 - 15:32:14 EDT