Atlassian Connect Express (ACE) background process

Hello Everyone,

I am a bit new to ACE plugins, I pieced together how it works from a bunch of searching, so I understand most of how it works. There is one piece I am confused about.

Background Processes, do these exist? or is everything handled client side?

When a Web Hook occurs, how does Connect handle that, does it simply inject an iframe on any page, or does it handle it on the back-end using node? This may be a dumb question, but it is the only piece that I am not 100% sure how it works.

I just want to make sure I understand the life cycle of a plugin for Jira.


Hi @graham.hudson and welcome to the community :slight_smile:

Most small ACE apps will consist of a Node.js/Express/ACE library back-end that usually hosts the atlassian-connect.json and will receive webhooks such as /installed. It also often serves the files that will be displayed in iframes.
That back-end usually runs on a server somewhere as what you could indeed call a background process.

As you may have noticed, I have used a lot of ‘most’, ‘may’ and ‘often’-ish words. Some of these components are not necessary to run an app and some can be hosted statically without a back-end. In such cases, you’ll not be able to handle any webhooks, but that may still be enough for your use case.

You could also write a back-end in Java using the Spring Boot template or any other programming language, but unless you know what you’re doing (security-wise), I wouldn’t necessarily recommend that.

Does that answer your question?


Fantastic, I do see a lot of client side examples, but not many explanations on exactly how web hooks worked. This is great.

I will summarize, I assume there is a node server which will register your web hooks that you setup in the manifest json file that will run your code on an “event” (web hook) that was the part I was unsure. I assumed, but the documentation was never clear.

I will most likely not use Spring as I am not as familiar with it as I am with node. Are there limitation differences between the two, or simply language differences/techniques needed?

also, when it comes to the server hosting the plugin, does the server need that url going forward, or does it only need it once to load it and possibly to update it in the future?

I think that would pretty much clear up all questions I had left!

Thank you for the fast response!

Your assumptions about webhook behavior are correct. The server doesn’t need to actively register the webhooks, you can also define them (statically) in the atlassian-connect.json.

To my knowledge, there’s not a big difference between the Spring Java library and the Node.js ACE library. They are merely handlers for the key and life cycle management.

The server should be running permanently since the atlassian-connect.json is being checked regularly (every couple of hours). If it goes down, the Atlassian marketplace will send you an email informing you of the downtime.

Thanks a lot, I believe I understand how plugin development works now just to do it :slight_smile:

1 Like