You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Genc, Ömer <Oe...@iais.fraunhofer.de> on 2014/01/26 22:19:11 UTC

Postgres/postgis problem: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry

Hey 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,

AW: Postgres/postgis problem: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry

Posted by Genc, Ömer <Oe...@iais.fraunhofer.de>.
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@iais.fraunhofer.de]
Gesendet: Montag, 27. Januar 2014 09:44
An: user@geronimo.apache.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@gmail.com]
Gesendet: Montag, 27. Januar 2014 08:53
An: user@geronimo.apache.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

2014-01-26, Genc, Ömer <Oe...@iais.fraunhofer.de>:
> Hey 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,
>

AW: Postgres/postgis problem: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry

Posted by Genc, Ömer <Oe...@iais.fraunhofer.de>.
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@gmail.com] 
Gesendet: Montag, 27. Januar 2014 08:53
An: user@geronimo.apache.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

2014-01-26, Genc, Ömer <Oe...@iais.fraunhofer.de>:
> Hey 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,
>

Re: Postgres/postgis problem: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry

Posted by frank pientka <fr...@gmail.com>.
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

2014-01-26, Genc, Ömer <Oe...@iais.fraunhofer.de>:
> Hey 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,
>