ApplicationComposer can look like a long story but following it you'll realize it is finally quite natural.
TomEE (former OpenEJB) is an Application Server. One of the most important task writing an Application Server is to ensure the implemented features do what is expected. However it is hard to write N test applications, in N modules to ensure it works smoothly. In particular when you want to test a small part of the whole server.
So you immediately think to mocking what is not needed. It works but has a big pitfall: test is often a noop or hide a lot of issues.
So the idea came to be able to shortcut the part we don't care much about runtime: the application packaging.
Here what is the ApplicationComposer: an (originally test) API to create a EE application programmatically.
ApplicationComposer design was aligned on this simple need. An ApplicationComposer "test" (browsing other pages you'll see it is much more than test today) is composed of mainly 2 parts:
ApplicationComposer was originally a JUnit only runner but was pretty quickly extended to TestNG too and
today you can even use it to write
main(String) - even in a shade!
API was greatly simplified and it allows you pretty easily to deploy with a simple shade a JAXRS/JAXWS/JMS service!
If you want to go further you can browse:
All edits are reviewed before going live, so feel free to do much more than fix typos or links. If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it. Don't be surprised if we like it so much we ask you for help with other pages :)NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.