Я планирую приложение, которое должно предоставлять сервисы, которые очень похожи на сервисы контейнера Java EE для стороннего кода расширения. По сути, это приложение находит набор рабочих элементов (в настоящее время планируется использовать Hibernate) и отправляет их потребителям рабочих элементов.
Потребители рабочего элемента загружают сведения об элементе, вызывают сторонний код расширения, а затем, если сторонний код не вышел из строя, обновляют состояние рабочего элемента и фиксируют всю выполненную работу.
Я явно не пишу это как приложение Java EE. По сути, мое приложение, однако, должно предоставлять многие услуги контейнера; он должен обеспечивать управление транзакциями, пул соединений и управление ими, а также определенную поддержку развертывания. Как мне A) предоставить их напрямую или B) выбрать стороннюю библиотеку для их предоставления. Из-за требования более крупного проекта разработчики расширений будут использовать Hibernate, если это будет иметь какое-либо значение.
Стоит отметить, что из всех упомянутых мною функций менее всего я знаю управление транзакциями. Как я могу предоставить эту услугу для кода расширения, работающего в моем контейнере?