Hey there,
unfortunately i am still having trouble in setting up the postgres JDBC driver in geronimo.
As described I need postgres with the extension postgis.
To register the postgis extension on the postgresql JDBC driver one had to register a special JDBC driver and use a special JDBC ConnectionURL. The postgis driver is org.postgis.DriverWrapper and wraps around the default org.postgres.Driver, the ConnectionURL looks similar to this: jdbc:postgresql_postGIS://host/postgis_db.
The only place to specify those parameters in Geronimo I found are in the Geromino database wizard when selecting "Other" as Database type.
Here are the steps I am going through in more detail:
- Fresh Geromino 3.0.1 installation.
- install postgres jar (postgres-9.1.903.jdbc4.jar) using the repository file upload (repository/postgres/postgres-jdbc/9.1.903/jar)
- install postgis (postgis-jdbc-2.0.1.jar) jar using the repository file upload (repository/postgres/postgis-jdbc/2.0.1/jar)
- In the admin console select 'Datasources' and then 'Create a new database pool' with the 'Using the Geromino database wizard'.
- Enter 'Name of Database Pool', e.g. ims_db
- Select 'Database Type' 'Other' (I need to select this one, since I need to specify the JDBC driver and the JDBC ConnectionURL for postgis to work)
- Click 'Next'
- Select postgresql/postgresql-jdbc/9.1.903/jar
- Control click to Select postgresql/postgis-jdbc/2.0.1.jar
- Enter DB name, e.g. 'IMS'
- Enter User Name
- Enter password (2x)
- Enter JDBC ConnectionURL including default host and port
- Click 'Deploy'
Unfortunately this does not work. It seems that the Geronimo classloader cannot find the postgres-9.1.903.jdbc4.jar.
I am absolutely clueless and any help would be greatly appreciated.
Here is the error message that appears:
2014-02-01 17:54:20,085 WARN [DatabaseDriverExtender] Failed to load driver org.postgresql.Driver
java.lang.ClassNotFoundException: org.postgresql.Driver
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:467)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at org.apache.geronimo.jdbc.DatabaseDriverExtender.loadDrivers(DatabaseDriverExtender.java:76)
at org.apache.geronimo.jdbc.DatabaseDriverExtender.access$100(DatabaseDriverExtender.java:43)
at org.apache.geronimo.jdbc.DatabaseDriverExtender$DriverBundleTrackerCustomizer.addingBundle(DatabaseDriverExtender.java:108)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:482)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262)
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:234)
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:457)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:847)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1523)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1459)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1454)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:391)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.apache.geronimo.system.configuration.DependencyManager.starting(DependencyManager.java:517)
at org.apache.geronimo.system.configuration.DependencyManager.bundleChanged(DependencyManager.java:120)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:847)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1523)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1459)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1454)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:367)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.apache.geronimo.deployment.DeploymentContext.createTempConfiguration(DeploymentContext.java:204)
at org.apache.geronimo.deployment.DeploymentContext.initializeConfiguration(DeploymentContext.java:192)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:662)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:281)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:145)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:131)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:883)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116)
at org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:61)
at java.lang.Thread.run(Thread.java:662)
2014-02-01 17:54:20,112 ERROR [Deployer] Deployment failed due to
java.lang.NoClassDefFoundError: org/postgresql/Driver
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.defineClass(GeronimoClassLoader.java:213)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.findLocalClass(GeronimoClassLoader.java:237)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:483)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.checkClass(ConnectorModuleBuilder.java:1329)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.addOutboundGBeans(ConnectorModuleBuilder.java:1276)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.addConnectorGBeans(ConnectorModuleBuilder.java:921)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.initContext(ConnectorModuleBuilder.java:555)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:686)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:281)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:145)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:131)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:883)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116)
at org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:61)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 38 more
Deployer operation failed: org/postgresql/Driver
java.lang.NoClassDefFoundError: org/postgresql/Driver
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.defineClass(GeronimoClassLoader.java:213)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.findLocalClass(GeronimoClassLoader.java:237)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:483)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.checkClass(ConnectorModuleBuilder.java:1329)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.addOutboundGBeans(ConnectorModuleBuilder.java:1276)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.addConnectorGBeans(ConnectorModuleBuilder.java:921)
at org.apache.geronimo.connector.deployment.ConnectorModuleBuilder.initContext(ConnectorModuleBuilder.java:555)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:686)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:281)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:145)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:131)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:883)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116)
at org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:61)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 38 more
-----Ursprüngliche Nachricht-----
Von: Genc, Ömer [mailto:Oemer.Genc-wAlPVner0lqatNDF+***@public.gmane.org]
Gesendet: Montag, 27. Januar 2014 09:44
An: user-nmThH5wfGryY1pf4d8vP8EB+***@public.gmane.org
Betreff: AW: Postgres/postgis problem: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry
Hey,
thanks for your help.
I tried that, unfortunately the error still exists. It's the same as before.
Is there anything else, you can think about?
Is there a way to make sure, Geronimo classloader loads this classes?
How can I check that?
What about the <import-packages> declaration inside the deployment descriptor?
Do I need this in Geronimo 3.0.1 when trying to load 3rd party libraries?
Thanks in advance,
Ömer
-----Ursprüngliche Nachricht-----
Von: frank pientka [mailto:frank.pientka-***@public.gmane.org]
Gesendet: Montag, 27. Januar 2014 08:53
An: user-nmThH5wfGryY1pf4d8vP8EB+***@public.gmane.org
Betreff: Re: Postgres/postgis problem: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry
because of changed classloading in Geronimo 3.0 I would recommend th following step Create a datasource with webconsole, download PostgreSQL-JDBC there and test it at the end It's better to install the jdbc-driver separately from the application as a system module in the respository good luck Frank
Post by Genc, ÃmerHey there,
I am having trouble in getting postgresql with extension postgis
running under Geronimo 3.0.1.
I have an application which worked fine under Geronimo 2.2.1. This
application uses postgresql and postgis. With Geronimo 2.2.1
everything works as expected.
However, migrating towards Geronimo 3.0.1 yields a ClassCastException,
although it is the exact same module.
I have installed the postgres jdbc driver in Geronimo. I am able to
run queries against my database from the webconsole of Geronimo.
In my EAR module I have included the Postgres-9.1-903.jdbc.jar and the
postgis-2.0.1.jar in the Class-Path entry of the modules MANIFEST.MF file.
Everything is the same, as it was with Geronimo 2.2.1.
However, it seems that these jars are not found during runtime. The
deployment however succeeds.
Anyone an idea, what else I could check?
Thanks for any suggestions,
Cheers,