[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-dev] Hello and question about Connector
|
'Just to add to what James has said.
In the "predeploy" phase we are trying to build a Project in such a way that it
references a minimal number of classes - ideally only java classes and
EclipseLink classes. We do that because this we use this phase to figure out
how we are going to weave classes and we do not want any classes hanging around
that were loaded by the temporary class loader.
In the deploy phase we end up loading those classes with the correct loader.
-Tom
James Sutherland wrote:
Welcome Wonseok,
The default driver is the JDBC ODBC driver because this is (well was)
the only JDBC part of JDK (at least the sun jdk). It is odd that your
JVM is getting an error trying to load the class.
In general I agree, the sun JDBC ODBC driver is rarely used, perhaps
the default should be changed to Derby, or Oracle or MySQL, or perhaps
just have no default. Technically the driver class is not always
required, if the driver has already been loaded in the JVM simply using
the URL should be enough to work. If you did not set either a driver or
a URL, then we should probably be throwing an error.
I'm not sure on the deployment stuff. My guess is that predeployment
is called before the application is deployed, such as through the
agent. The application classes (and possibly JDBC driver) do not yet
exist, so cannot be referred to. Deployment in an application server
may also pass a default database to connect to, so we may not know the
database until deployment.
-----Original Message-----
*From:* eclipselink-dev-bounces@xxxxxxxxxxx
[mailto:eclipselink-dev-bounces@xxxxxxxxxxx]*On Behalf Of *Wonseok Kim
*Sent:* Tuesday, March 25, 2008 11:12 AM
*To:* eclipselink-dev@xxxxxxxxxxx
*Subject:* [eclipselink-dev] Hello and question about Connector
Hello! EclipseLink commiters
Some guys already know me, but I'd like to introduce me first.
I am Wonseok working at TmaxSoft (South Korea) and also a committer of
TopLink Essentials.
Finally I got time to look into EclipseLink code and I would like to
participate and contribute to EclipseLink project. Also our AS
product(JEUS) which now includes TLE has plan to incorporate/support
EclipseLink as a default provider. I'm happy to see this project is
already mature (documentation also).
Apparently I will have numerous questions about code or anything. So
please, please shed light on me even I ask silly questions. :-)
Okay, here my first question goes.
While I'm setting up my test environment (transition from TLE), I got
the following NPE and this is definitely my mistake of not setting
eclipselink.jdbc.driver correctly - it was toplink.jdbc.driver :-)
Exception in thread "main" java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:91)
at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:164)
at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:578)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:214)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:234)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:69)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:118)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:112)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:100)
This is misleading error(I met this error several time before). Looking
into Connector code, I don't understand two things.
First, why is JDBC-ODBC bridge driver used when there is no driver
setting? I don't believe this is useful default. IMO just throwing
proper error is more helpful.
In addition, why is a dummy DefaultConnector(with default ODBC driver
setting) set to DatasourceLogin at predeployment time? It doen't seem
being used at all. Then the DefaultConnector is updated with real
properties with EntityManagerSetupImpl#updateLogins and
updateLoginDefaultConnector() at deployment. Isn't it clear and better
to create and set DefaultConnector at deployment if JDBC properties are
used while checking them(error could be thrown at this time)? I had no
problem when I modified code like this. Is this right way?
P.S. I really appreciate your commitment and efforts toward open source!
It's a really win-win to everyone.
Best Regards
-Wonseok
------------------------------------------------------------------------
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev