© Excellent backgrounds/Shutterstock.com
Der Application Client Container im praktischen Einsatz

ACC - Der unbekannte Dritte


Im Java-EE-Standard sind drei Container definiert. Der Web-Container und der EJB Container sind allgemein bekannt und finden in vielen Projekten Verwendung. Der dritte im Bunde fristet dagegen eher ein Nischendasein: der Application Client Container (ACC).

Geschäftsanwendungen werden heute in der Regel in mehreren Schichten realisiert. Im Java-EE-Kontext kommen zur Implementierung der Geschäftslogik EJBs oder CDI Beans zum Einsatz, für die View-Schicht meist Webanwendungen mit JSF. Aber nicht für jede Anwendung ist die Umsetzung im Web die richtige Lösung. Einige werden bspw. als Rich Client oder Kommandozeilenclient gebaut. Gemeinsam ist diesen Anwendungen, dass sie nicht auf dem Application Server laufen. Daraus ergeben sich im Gegensatz zum Pendant im Web zwei Probleme:

  • die Kommunikation mit dem Application Server und den dort deployten Ressourcen wie EJBs, Message Queues oder Ähnlichem

  • die Auslieferung der Software an den Rechner des Benutzers sowie deren Aktualisierung bei Änderungen

Der Application Client Container löst diese beiden Probleme: Die Entwicklung geschieht unter Verwendung eines Containers – analog zum Web- oder EJB Container – und mit demselben komfortablen Programmiermodell. Die Ressourcen werden per Dependency Injection bereitgestellt, und die Auslieferung und Aktualisierung kann per Web Start erfolgen, so einfach wie bei einer Webanwendung.

Der Application Client Container im Minimalbeispiel

Doch wie läuft nun die Arbeit mit dem Container ab, wenn doch eigentlich eine Standalone-Anwendung in der Entwicklung ist? Zunächst einige Worte zur Verwendung, bevor detaillierter auf die zugrunde liegende Technik eingegangen wird.

Ganz wie im EJB Container steht Dependency Injection im Application Client Container zur Verfügung. Somit ist auch die Verwendung einer Stateless Bean ähnlich einfach. Listing 1 zeigt das Minimalbeispiel.

Listing 1

import javax.ejb.EJB; public class Main { @EJB public static SampleBean sampleBean; public static void main(String[] args) { sampleBean.callMethod(); } }

Ähnlich wie bei der Entwicklung einer EJB oder CDI Bean wird das Feld mit @EJB annotiert. Zur Laufzeit trägt der Application Client Container dafür Sorge, dass die passende Stateless Bean injiziert ist.

Das einzige, was der Entwickler beachten muss, ist, dass die annotierten Felder statisch sind und in der Main-Klasse liegen, denn nur so funktioniert die Dependency Injection im ACC. Abgesehen von EJBs können auch andere Ressourcen, wie eine Queue, ein ...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang