Ask questions and see you at December, 7th, 8.PM. CET: https://vimeo.com/event/154379
Also checkout recent episode:
Please keep the questions Jakarta EE-stic. Means: as short and as concise as only possible. Feel free to ask several, shorter questions. Upcoming airhacks.tv events are also going to be announced at meetup.com/airhacks
Within a single monolithic Jakarta EE application there exist two separate logical "modules" (single jar). Let's imagine a shipping module and a billing module. The business requirement is that as soon as a shipment is sent from the warehouse the customer must be invoiced. The shipping module should not know anything (or care) about the billing module or the invoicing process itself. It could, however, be responsible for raising an event (e.g. ShipmentSent). What would you recommend for communication between these - e.g. CDI events, JMS, outbox pattern, etc.?
Keep in mind - there could be instances where the shipment transaction succeeds (resulting in a commit in the db) but the invoicing fails (e.g. due to the customer record missing a billing address or (your favorite :-) VAT ID). In such cases there needs to be a way for the billing module (or some agent in between) to keep track of such "unprocessed" events in a queue so that they can be completed later on (i.e. when the customer master record is updated). Needless to say - the recovery mechanism will require some extra application logic/code (e.g. to reprocess periodically) but the critical point is how to keep track of this queue.
How does the answer change if the two modules are refactored later on to two separate applications?