I'm having a problem getting a servet (part of a plugin) to connect to an external datasource. The datasource is a postgresql DB, and is defined in server.xml and can be accessed through the (wonderful) SQL plugin.
However, I cannot get to the DB through my servlet. I've tried three things:
1) By the standard Class.forName("org.postgresql.Driver"); syntax. I get a "no class found" error.
2) By directly instantiating a postgresql Driver object (Driver d = new org.postgresql.Driver()) and registering it. I get a java.lang.NoClassDefFoundError: org/postgresql/Driver error.
3) By getting an initial context within the servlet's init method ( Context ctx = InitialContext() ) and going after the datasource since clearly the SQL plugin can read the data source.
Nothing has worked to date. First, how is it that the postgresql libs appear to not be within the servlet's classpath? They are obviously accessible to Confluence as it is the database for the instance as well as for the SQL plugin calls.
Second, I'd rather use the datasource approach to raw JDBC connections. Does anyone have a code snippet that shows how that can work within the context of a servlet?
The Atlassian plugin system uses OSGi to help keep plugins and the core app separate from each other - this means that each plugin can have a different 'effective' classpath and not everything from the host application is exposed to plugins by default.
The easiest solution is to bundle the database driver within your plugin.
Edit: That is to say, there is probably a way to configure your plugin to request the driver be provided to it by the host application, but I haven't dug into it to see exactly what would be required :)
Has anyone got the Class.forName("org.postgresql.Driver"); to work in a plugin.
I want to use this method for connecting to a database, I know the drivers jar file exists as I am using the same database as the confluence external database, so I know it's there.
Why does my plugin throw the exception " java.lang.ClassNotFoundException: org.postgresql.Driver"
Paul you said you found some magic, can you please share, although I'm not interested if I need to define the datasource in the server.xml file -> not very flexible solution when distributing a plugin. I know the SQL plugin can dynamically do this through its Configure menu, so I'm sure this can be achieved - please help.
This community is celebrating its one-year anniversary and Atlassian co-founder Mike Cannon-Brookes has all the feels.Read more
Hi Community! Kesha (kay-sha) from the Confluence marketing team here! Can you share stories with us on how your non-technical (think Marketing, Sales, HR, legal, etc.) teams are using Confluen...
Connect with like-minded Atlassian users at free events near you!Find a group
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no AUG chapters near you at the moment.Start an AUG
You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs