| = Application Composer History |
| :jbake-type: page |
| :jbake-status: published |
| :index-group: Testing |
| |
| ApplicationComposer can look like a long story but following it you'll |
| realize it is finally quite natural. |
| |
| == Internal tool |
| |
| 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. |
| |
| == Designs |
| |
| 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: |
| |
| * modules: methods describing a module of an application. It can be a |
| persistence.xml, an ejb-jar.xml, a web.xml...but all programmatically. |
| * configuration: container configuration allowing to interact with |
| container (creating resources for instance) |
| |
| == Test but not only |
| |
| 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! |
| |
| == Going further |
| |
| If you want to go further you can browse: |
| |
| * link:getting-started.html[Getting Started] |
| * link:advanced.html[Advanced] |