cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rigel <zeta...@gmail.com>
Subject Re: Loading cayenne mapped class from URLClassLoader
Date Mon, 24 Nov 2008 23:24:11 GMT


Michael Gentry wrote:
> 
> PlainTextPasswordEncoder  ...  Is this class somehow not in your JAR?
> 

No, it's present under the jar named cayenne-server-3.0M4.jar.

It follows the stacktrace produced when I load the JDBC driver too into the
URLClassLoader.
As you can notice the ClassNotFound arise from driverClass =
Class.forName(driverClassName,
true,Thread.currentThread().getContextClassLoader()); into
"DriverDataSource.java:62".

Also PlainTextPasswordEncoder  use the same call to retrieve its
ClassLoader, but just yesterday I noticed that URLClassLoader inherit from
ClassLoader and not vice versa, probably for security reason. For this
reason when I call "ClassLoader.getSystemClassLoader()" or
"Thread.currentThread().getContextClassLoader()" I get only the clean
classpath at startup, as direct consequence every JAR appears isolated from
others when using standard ClassLoader invokation. 

So when using URLClassLoader the only way I found to turn around this
problem is to put a call of Class.forName(className) without specifying any
ClassLoader directly into the first catch of the main try for
Class.forName(String,boolean,ClassLoader) call. As note with Cayenne 2 this
supplementary call into the catch works well without any interference.

JDBC driver loaded via URLClassLoader

Loading lib:
http://localhost:80/users/antares/libs/postgresql-8.2-504.jdbc4.jar
Loading lib: http://localhost:80/users/antares/libs/ashwood-2.0.jar
Loading lib: http://localhost:80/users/antares/libs/asm-3.0.jar
Loading lib: http://localhost:80/users/antares/libs/asm-commons-3.0.jar
Loading lib:
http://localhost:80/users/antares/libs/commons-collections-3.1.jar
Loading lib: http://localhost:80/users/antares/libs/commons-logging-1.1.jar
Loading lib:
http://localhost:80/users/antares/libs/geronimo-jpa_3.0_spec-1.0.jar
Loading lib: http://localhost:80/users/antares/libs/velocity-1.3.jar
Loading lib: http://localhost:80/users/antares/libs/cayenne-agent-3.0M4.jar
Loading lib: http://localhost:80/users/antares/libs/cayenne-client-3.0M4.jar
Loading lib:
http://localhost:80/users/antares/libs/cayenne-modeler-3.0M4.jar
Loading lib: http://localhost:80/users/antares/libs/cayenne-server-3.0M4.jar
Loading lib: http://localhost:80/users/antares/libs/w3d-base.jar
Loading lib: http://localhost:80/users/antares/libs/w3d-orm.jar
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate
startedLoading
INFO: started configuration loading.
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataDomain
INFO: loaded domain: dbw3d
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate loadDataMap
INFO: loaded .
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataNode
INFO: loading .
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataNode
INFO: using factory: org.apache.cayenne.conf.DriverDataSourceFactory
24-nov-2008 23.48.02 org.apache.cayenne.conf.DriverDataSourceFactory load
INFO: loading driver information from 'dbw3dNode.driver.xml'.
24-nov-2008 23.48.02
org.apache.cayenne.conf.DriverDataSourceFactory$DriverHandler init
INFO: loading driver org.postgresql.Driver
24-nov-2008 23.48.02
org.apache.cayenne.conf.DriverDataSourceFactory$LoginHandler init
INFO: loading user name and password.
java.lang.ClassNotFoundException:
org.apache.cayenne.conf.PlainTextPasswordEncoder
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at
org.apache.cayenne.conn.DataSourceInfo.getPasswordEncoder(DataSourceInfo.java:207)
	at
org.apache.cayenne.conf.DriverDataSourceFactory$LoginHandler.init(DriverDataSourceFactory.java:324)
	at
org.apache.cayenne.conf.DriverDataSourceFactory$DriverHandler.startElement(DriverDataSourceFactory.java:191)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
	at
org.apache.cayenne.conf.DriverDataSourceFactory.load(DriverDataSourceFactory.java:130)
	at
org.apache.cayenne.conf.DriverDataSourceFactory.getDataSource(DriverDataSourceFactory.java:78)
	at
org.apache.cayenne.conf.RuntimeLoadDelegate.shouldLoadDataNode(RuntimeLoadDelegate.java:299)
	at
org.apache.cayenne.conf.ConfigLoader$NodeHandler.init(ConfigLoader.java:337)
	at
org.apache.cayenne.conf.ConfigLoader$DomainHandler.startElement(ConfigLoader.java:223)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
	at org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:79)
	at
org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:164)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:157)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:139)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:119)
	at
org.apache.cayenne.conf.Configuration.getSharedConfiguration(Configuration.java:89)
	at
org.apache.cayenne.access.DataContext.createDataContext(DataContext.java:162)
	at it.wipidea.w3d.SomeClass.init(SomeClass.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at NetLoader.start(NetLoader.java:63)
	at NetLoader.main(NetLoader.java:74)
24-nov-2008 23.48.02 org.apache.cayenne.access.QueryLogger logPoolCreated
INFO: Created connection pool: jdbc:postgresql://localhost/w3d
	Driver class: org.postgresql.Driver
	Min. connections in the pool: 1
	Max. connections in the pool: 1
24-nov-2008 23.48.02 org.apache.cayenne.access.QueryLogger logConnectFailure
INFO: *** Connecting: FAILURE.
java.sql.SQLException: Can not load JDBC driver named
'org.postgresql.Driver': org.postgresql.Driver
	at
org.apache.cayenne.conn.DriverDataSource.loadDriver(DriverDataSource.java:62)
	at
org.apache.cayenne.conn.DriverDataSource.setDriverClassName(DriverDataSource.java:256)
	at org.apache.cayenne.conn.DriverDataSource.(DriverDataSource.java:101)
	at org.apache.cayenne.conn.DriverDataSource.(DriverDataSource.java:87)
	at org.apache.cayenne.conn.PoolManager.(PoolManager.java:106)
	at
org.apache.cayenne.conf.DriverDataSourceFactory.getDataSource(DriverDataSourceFactory.java:83)
	at
org.apache.cayenne.conf.RuntimeLoadDelegate.shouldLoadDataNode(RuntimeLoadDelegate.java:299)
	at
org.apache.cayenne.conf.ConfigLoader$NodeHandler.init(ConfigLoader.java:337)
	at
org.apache.cayenne.conf.ConfigLoader$DomainHandler.startElement(ConfigLoader.java:223)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
	at org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:79)
	at
org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:164)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:157)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:139)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:119)
	at
org.apache.cayenne.conf.Configuration.getSharedConfiguration(Configuration.java:89)
	at
org.apache.cayenne.access.DataContext.createDataContext(DataContext.java:162)
	at it.wipidea.w3d.SomeClass.init(SomeClass.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at NetLoader.start(NetLoader.java:63)
	at NetLoader.main(NetLoader.java:74)
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLoadDataNode
INFO: Error: DataSource load failed
java.sql.SQLException: Can not load JDBC driver named
'org.postgresql.Driver': org.postgresql.Driver
	at
org.apache.cayenne.conn.DriverDataSource.loadDriver(DriverDataSource.java:62)
	at
org.apache.cayenne.conn.DriverDataSource.setDriverClassName(DriverDataSource.java:256)
	at org.apache.cayenne.conn.DriverDataSource.(DriverDataSource.java:101)
	at org.apache.cayenne.conn.DriverDataSource.(DriverDataSource.java:87)
	at org.apache.cayenne.conn.PoolManager.(PoolManager.java:106)
	at
org.apache.cayenne.conf.DriverDataSourceFactory.getDataSource(DriverDataSourceFactory.java:83)
	at
org.apache.cayenne.conf.RuntimeLoadDelegate.shouldLoadDataNode(RuntimeLoadDelegate.java:299)
	at
org.apache.cayenne.conf.ConfigLoader$NodeHandler.init(ConfigLoader.java:337)
	at
org.apache.cayenne.conf.ConfigLoader$DomainHandler.startElement(ConfigLoader.java:223)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
	at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
	at org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:79)
	at
org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:164)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:157)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:139)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:119)
	at
org.apache.cayenne.conf.Configuration.getSharedConfiguration(Configuration.java:89)
	at
org.apache.cayenne.access.DataContext.createDataContext(DataContext.java:162)
	at it.wipidea.w3d.SomeClass.init(SomeClass.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at NetLoader.start(NetLoader.java:63)
	at NetLoader.main(NetLoader.java:74)
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate initAdapter
INFO: no adapter set, using automatic adapter.
24-nov-2008 23.48.02 org.apache.cayenne.conf.RuntimeLoadDelegate
shouldLinkDataMap
INFO: loaded map-ref: dbw3dMap.
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at NetLoader.start(NetLoader.java:63)
	at NetLoader.main(NetLoader.java:74)
Caused by: org.apache.cayenne.ConfigurationException: [v.3.0M4 May 18 2008
15:29:33] Error during Configuration initialization. [v.3.0M4 May 18 2008
15:29:33] Load failures. Main configuration class:
org.apache.cayenne.conf.DefaultConfiguration, details: 
	domain.node.name=dbw3dNode, domain.node.datasource=dbw3dNode.driver.xml,
reason: DataSource load failed - Can not load JDBC driver named
'org.postgresql.Driver': org.postgresql.Driver
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:166)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:139)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:119)
	at
org.apache.cayenne.conf.Configuration.getSharedConfiguration(Configuration.java:89)
	at
org.apache.cayenne.access.DataContext.createDataContext(DataContext.java:162)
	at it.wipidea.w3d.SomeClass.init(SomeClass.java:42)
	... 6 more
Caused by: org.apache.cayenne.ConfigurationException: [v.3.0M4 May 18 2008
15:29:33] Load failures. Main configuration class:
org.apache.cayenne.conf.DefaultConfiguration, details: 
	domain.node.name=dbw3dNode, domain.node.datasource=dbw3dNode.driver.xml,
reason: DataSource load failed - Can not load JDBC driver named
'org.postgresql.Driver': org.postgresql.Driver
	at
org.apache.cayenne.conf.RuntimeLoadDelegate.finishedLoading(RuntimeLoadDelegate.java:454)
	at org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:80)
	at
org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:164)
	at
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(Configuration.java:157)
	... 11 more





Michael Gentry wrote:
> 
> From your stack trace:
> 
> INFO: loading user name and password.
> java.lang.ClassNotFoundException:
> org.apache.cayenne.conf.PlainTextPasswordEncoder
>        at java.net.URLClassLoader$1.run(Unknown Source)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at java.net.URLClassLoader.findClass(Unknown Source)
>        at java.lang.ClassLoader.loadClass(Unknown Source)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
>        at java.lang.ClassLoader.loadClass(Unknown Source)
>        at
> org.apache.cayenne.conn.DataSourceInfo.getPasswordEncoder(DataSourceInfo.java:207)
> 
> 
> It appears that it can't find the PlainTextPasswordEncoder class,
> which should be present.  It is the default encoder.  Is this class
> somehow not in your JAR?
> 
> Thanks!
> 
> /dev/mrg
> 
> 

-- 
View this message in context: http://www.nabble.com/Loading-cayenne-mapped-class-from-URLClassLoader-tp20654024p20672220.html
Sent from the Cayenne - User mailing list archive at Nabble.com.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message