Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Celebration

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Access to ActiveObjects tables via JDBC?

I wonder if I can get a JDBC connection to the JIRA/Confluence database from plugin code and access the tables created by the ActiveObjects plugin.

Is that possible?

If so: Would that still work reliably on a different JIRA/Confluence instance with different configuration, specifically with a different database vendor?

2 answers

1 accepted

1 vote
Answer accepted
Jobin Kuruvilla [Adaptavist]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
Jan 10, 2017

You can definitely get the DS info or Connection from plugin code and use it to access AO tables.

DatasourceInfo datasourceInfo = new DefaultOfBizConnectionFactory().getDatasourceInfo();
Connection connection = new DefaultOfBizConnectionFactory().getConnection();

AO tables follows a unique naming strategy, which you can find at https://developer.atlassian.com/docs/atlassian-platform-common-components/active-objects/developing-your-plugin-with-active-objects/active-objects-faq/table-names. The names stay the same across instances.

Having said that, it is recommended to use the ActiveObjects APIs to interact with the AO tables. 

Thanks a lot, Jobin, I will try that! Are you aware of specific dangers of accessing AO tables directly view JDBC?

Jobin Kuruvilla [Adaptavist]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
Jan 10, 2017

Not really. I mostly opt for AO APIs but have done it via direct JDBC calls for complex scenarios. Other than that, it is normal JDBC!

Is there a way to make that work for Confluence? I can only find DefaultOfBizConnectionFactory in the com.atlassian.jira.ofbiz package.

I get null when I try accessing JDBC info 

JdbcDatasourceInfo jdbcDatasourceInfo = new DefaultOfBizConnectionFactory().getDatasourceInfo().getJdbcDatasource(); 

However the JNDI Datasource works

DefaultOfBizConnectionFactory().getDatasourceInfo().getJndiDatasource()

 

Any clues ?

I am using SDK with 

<jira.version>7.2.2</jira.version><amps.version>6.2.11</amps.version>

It seems to be SDK version issue.

It works when I change JIRA & AMPS version to the one below

<jira.version>6.3.1</jira.version>
<amps.version>5.0.3</amps.version>

I have a plugin that makes an AO entity, but where do I run these lines of code to find the connection?

2 votes
Daniel Wester
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
Jan 10, 2017

Be very careful. AO does have some caching built in so if you mix the access algorithm (API vs direct jdbc) you might see some strange results.

Suggest an answer

Log in or Sign up to answer