Eclipse-Plugins zur Entwicklung von J2EE-Anwendungen

Eingesteckt

Wolfgang Korn

Das Plugin-Konzept von Eclipse bietet eine flexible Möglichkeit, die bestehende Funktionalität der Plattform zu erweitern. Der Artikel stellt ausgewählte Plugins vor, welche die Entwicklung von J2EE-Anwendungen unterstützen.

Mit der Ende März diesen Jahres freigegebenen Version 2.1 der Eclipse-Plattform wurden der Anwendergemeinde viele neue Features präsentiert. Als Entwickler von J2EE-Anwendungen ist man aber weiterhin auf Plugins angewiesen, die von Drittherstellern bereitgestellt werden. Nachdem in diesem Bereich lange Zeit wenig Neuerungen erkennbar waren, scheint seit dem Erscheinen von Eclipse 2.1 auch wieder Bewegung in die Plugin-Entwicklung gekommen zu sein. Bereits länger bekannte Plugins liegen nunmehr in neuen Versionen vor und neue Plugins buhlen um die Gunst des Anwenders. Grund genug, einen Blick auf die verfügbaren Plugins zu werfen und ausgewählte Plugins genauer unter die Lupe zu nehmen.

Einfache Plugins unterstützen im Wesentlichen die Steuerung des Application Servers, der für die Ausführung der J2EE-Komponenten genutzt wird. Dazu werden der IDE Schaltflächen und Menüs zum Starten und Stoppen des Application Servers, sowie Dialoge zur Konfiguration des Application Servers hinzugefügt. Die Ausgaben des Application Servers (Standard Out und Standard Error) werden üblicherweise in die Console View der Eclipse Plattform umgeleitet. Die wesentliche Erleichterung, die diese einfachen Plugins bieten, kommt beim Debugging von J2EE-Komponenten zum Tragen. Der Application Server wird unter der Kontrolle der IDE im Debug-Modus gestartet. Das explizite Ankoppeln des Debuggers (Remote Debugging) an den Server entfällt. Ansonsten unterscheidet sich die Arbeit nicht von der mit einem separat im Debug-Modus gestarteten Application Server. Zu den Plugins dieser Kategorie gehören beispielsweise die verschiedenen auf dem Easie-Framework basierenden Plugins der Firma Genuitec. Abpictureung 1 zeigt den Konfigurationsdialog des Easie-JBoss-Plugins.

Abb. 1: Konfiguration des Easie-JBoss-Plugins

Gegenstand dieses Artikels sind Plugins, die dem J2EE-Entwickler Unterstützung bieten, die über die beschriebene Funktionalität hinausgeht.

JBoss-IDE

JBoss-IDE ist ein Mitte 2002 gestartetes Projekt der JBoss Group, das sich zum Ziel gesetzt hat, eine world class IDE zu schaffen, welche die Entwicklung von Java-Anwendungen für den JBoss Application Server unterstützt [1]. Die diesem Artikel zugrunde liegende Version 1.2.0 des Plugins beinhaltet Funktionalität zur Interaktion mit dem Application Server, sowie weitreichende Unterstützung bei der Verwendung von XDoclet [5]. Zur Steuerung des Application Servers stellt das Plugin eine zusätzliche View, den Server Navigator, bereit. Diese View ist die zentrale Stelle, von der aus alle Steuerungsfunktionen erreichbar sind. Im Gegensatz zu den oben beschriebenen Plugins erlaubt JBoss-IDE die Konfiguration mehrerer Server. Die Konfiguration der Server ist in Form zusätzlicher Launch-Typen (für die verschiedenen unterstützten JBoss-Server-Versionen) in die Standard-Debug-Konfiguration (Run | Debug) integriert. Alle konfigurierten Server werden im Server-Navigator angezeigt und können von hier gestartet und gestoppt werden. Einer der konfigurierten Server kann als Default-Server gekennzeichnet werden und über zusätzliche Schaltflächen in der Toolbar direkt gestartet und terminiert werden. Darüber hinaus ist es möglich zu jedem Server Log-Dateien zu konfigurieren. Zur Ansicht dieser Dateien stellt JBoss-IDE die View Log Viewer bereit. Die so angezeigten Dateien werden intervallgesteuert aktualisiert. Zur Unterstützung des Deployments fertiger J2EE-Komponenten erweitert das Plugin das Kontextmenu von Navigator- und Package-Explorer View um den Eintrag Deployment. Die zweite Erweiterung der IDE, die Unterstützung von XDoclet, betrifft zunächst den Java-Editor. Im Kontext eines Javadoc-Kommentars macht der Code Assistant zusätzliche Vorschläge. Dies können XDoclet-Tags sein, oder XDoclet-Templates (Sammlungen mehrerer Tags), die im Rahmen der JBoss-IDE-Konfiguration erstellt werden können. Vorschläge für XDoclet-Tags erfolgen kontextabhängig unter Verwendung von XTags. Beispielsweise werden Tags, die nur im Kontext einer Methode sinnvoll sind, im Kommentar einer Klasse erst gar nicht angeboten. Auch die Steuerung der XDoclet-Generierung wird durch das Plugin unterstützt. Im Rahmen der Projekteigenschaften können mit dem in Abpictureung 2 gezeigten Dialog die verschiedenen XDoclet-Tasks definiert und parametrisiert werden.

Abb. 2: XDoclet-Konfiguration mit JBoss-IDE

Die hier durchgeführten Einstellungen werden zur Generierung eines Ant-Scripts genutzt, das aus der IDE heraus gestartet werden kann. Hierzu enthält das Kontextmenu eines Projekts den neuen Eintrag Run XDoclet. Eine Funktionalität, die nicht nur im J2EE-Umfeld nutzbar ist, ist die Dialog geführte Konfiguration von JAR-Archiven. Wie bei der XDoclet-Konfiguration erfolgt auch hier die Generierung eines Ant-Scripts, welches zur Erzeugung der konfigurierten Archive vom Plugin aufgerufen wird. Abschließend beurteilt, scheint der Einsatz des Plugins durch die Beschränkung auf den JBoss Application Server nur in diesem Umfeld sinnvoll zu sein. Insbesondere durch die mächtige Unterstützung von XDoclet ist der Einsatz des Plugins aber auch in anderen Umgebungen als Ergänzung eines anderen Plugins durchaus sinnvoll.

  • Steuerung (Starten/Stoppen) verschiedener konfigurierter JBoss-Server mit dem Server Navigator.
  • Überwachung konfigurierter Logdateien mit der Log View.
  • Deployment auf konfigurierbare Ziel-Server.
  • Code Assistance für XDoclet-Tags.
  • Templates für XDoclet (Sammlungen von XDoclet-Tags).
  • Steuerung der XDoclet-Generierung.
  • Per Dialog geführte Konfiguration von JAR-Archiven.

Mit der hier vorgestellten Version 2.1.1 des Lomboz-Plugin von Objectlearn [2] liegt eine Eclipse 2.1.1 taugliche Version des schon seit längerem verfügbaren Plugins vor. Im Gegensatz zur JBoss-IDE strebt dieses Plugin die Unterstützung eine großen Zahl von Application Servern an. Bereits in der Standard-Installation sind Konfigurationen für verschiedene Versionen des JBoss-Servers, des BEA Weblogic Servers sowie des Apache Tomcat Servers enthalten. Aber auch die Nutzung anderer Application Server ist möglich. Zu diesem Zweck erlaubt das Plugin die Konfiguration weiterer Servertypen. Hierzu muss lediglich eine XML-Datei mit allen benötigten Parametern erstellt und im Lomboz-Verzeichnisbaum abgelegt werden. Hierzu gehören insbesondere Informationen über das Installations-Verzeichnis, JNDI-Eigenschaften und die Klassen zum Starten und Stoppen des Servers. Informationen, die durch den Benutzer konfigurierbar gehalten werden sollen, werden als Properties definiert, die von der Konfiguration referenziert werden können. Aus diesen generiert das Plugin eine Konfigurationsseite für den Server, die in den Preferences-Dialog der IDE integriert wird. Abpictureung 3 zeigt eine Konfigurationsseite für einen fiktiven Servertyp myServer.

Abb. 3: Konfigurationsseite eines eigenen Servertyps

Wie auch bei der Entwicklung von EJB-Anwendungen nimmt das Plugin dem Entwickler das immer wiederkehrende Erzeugen von Gerüsten für Servlets und JavaServer Pages durch die Bereitstellung von Wizards ab. Abpictureung 4 zeigt exemplarisch den Wizard zur Generierung von Servlets.

Abb. 4: Lomboz-Plugin Servlet Wizard

Diese generieren neben den Quelldateien auch die benötigten Einträge im Deployment Descriptor der Web-Anwendung. Im Gegensatz zur Erzeugung von EJBs wird hierfür nicht auf XDoclet zurückgegriffen. Hierdurch müssen Quelldatei und Deployment Descriptor leider getrennt gepflegt werden. Die konsequente Nutzung von XDoclet auch in Web-Anwendung wäre eine sinnvolle Änderung des Plugins. Für die Entwicklung von JSPs bringt das Plugin einen eigenen Editor mit. Voraussetzung für die Nutzung des Editors ist, dass die JSP in einem Web-Module gespeichert ist oder für diese ein Default Web Modul definiert ist. Neben Syntax-Highlighting werden Code Assistance für HTML- und JSP-Tags geboten. In Expressions und Scriptlets steht darüber hinaus der Java Code Assistant zur Verfügung. Beim Speichern einer JSP wird diese vorcompiliert. Fehler werden wie normale Java-Fehler in der Eclipse Task View und zusätzlich in der Lomboz J2EE View dargestellt. So können JSP-Fehler schon während der Entwicklung beseitigt werden und fallen nicht erst nach dem Deployment auf.

Web Services

Zur Unterstützung der Entwicklung von Web Services stellt das Lomboz-Plugin einen Wizard zur Erzeugung von SOAP-Clients zur Verfügung. Zur Generierung der benötigten Java-Klassen und eines Testfalls wird eine WSDL-Datei benötigt, welche die Schnittstelle des Web Service spezifiziert. Zur Erledigung seiner Aufgabe greift der Wizard auf WSDL2Java aus dem Jakarta-Projekt Axis zurück [6].

Insgesamt stellt das Plugin viel Funktionalität zur Produktivitätssteigerung bei der Entwicklung von J2EE-Anwendungen zur Verfügung. Negativ fällt die nicht konsequente Verwendung von XDoclet auf. Darüber hinaus ist auch die Verwendung anpassbarer Templates zur Code-Generierung wünschenswert.

  • Flexible Unterstützung verschiedenster Application Server.
  • Steuerung von Server und Deployment in Lomboz J2EE View.
  • Zahlreiche Wizards zur Generierung von Code.
  • JSP-Editor mit Syntax-Highlighting, Code Assistance und Vorcompilieren.
  • XDoclet-Integration für EJB-Entwicklung.

MyEclipseIDE ist ein vergleichsweise junges Plugin, welches ausschließlich kommerziell im Rahmen eines Abonnements für ca. 30 US$ verfügbar ist. MyEclipseIDE erweitert Eclipse unter anderem um verschiedene Werkzeuge zur J2EE-Entwicklung [3]. Die Integration der Application Server basiert auf dem eingangs angesprochenen Easie-Framework der Firma Genuitec. Die Easie-Plugins sind seit der Integration des Frameworks in MyEclipseIDE nicht mehr verfügbar. Verglichen mit dem Lomboz-Plugin ist die Integration der Server jedoch deutlich inflexibler. MyEclipseIDE erlaubt die Konfiguration von genau einem Application Server pro Typ. Die Bereitstellung unterschiedlicher Konfigurationen des gleichen Server-Typs ist nicht möglich. Gleiches gilt auch für die Konfiguration von nicht standardmäßig unterstützten Server-Typen. Viele gebräuchliche Server (u.a. BEA Weblogic, IBM Websphere, JBoss, Tomcat) werden bereits unterstützt. Weitere Server sind in Planung. Für die Erzeugung neuer J2EE-Projekte stellt MyEclipseIDE drei neue Wizards zur Verfügung, mit deren Hilfe Projekte für Web-, EJB- und J2EE-Applikationen generiert werden können. J2EE-Applikations-Projekte sind eine Sammlung aus Web- und EJB-Applikationen. Dies spiegelt sich auch in den generierten Strukturen wider: J2EE-Applikations-Projekte referenzieren immer die enthaltenen Web- und EJB-Projekte und können ohne solche auch nicht erzeugt werden. Das Deployment von J2EE-Komponenten erfolgt auf Basis der definierten Projekte. Dabei können sowohl ganze J2EE- als auch einzelne Web- oder EJB-Applikationen auf die konfigurierten Server deployt werden. Abpictureung 5 zeigt MyEclipseIDE und deren Deployment-Dialoge.

Abb. 5: MyEclipseIDE mit Deployment-Dialogen

Für das Deployment wird zunächst die zu deployende Anwendung ausgewählt. Von hier aus erfolgen initiales Deployment, Redeployment und Undeployment. Im Fall eines Erst-Deployments wird für die Anwendung in einem zweiten Dialog ein Zielserver ausgewählt. Ähnlich wie das Lomboz-Plugin unterstützt MyEclipseIDE den Entwickler mit Wizards zur Generierung von Code für J2EE-Komponenten. Die Code-Generierung erfolgt auf Basis von Templates, die in der diesem Artikel zugrunde liegenden Version 2.6.2 noch nicht durch den Entwickler anpassbar sind. Für eine der kommenden Versionen ist dies jedoch in Planung. Zur Unterstützung von XDoclet ist in MyEclipseIDE die JBoss-IDE integriert worden. Damit sind die bereits beschriebenen Funktionalitäten wie Code Assistance und Steuerung der XDoclet-Generierung auch in MyEclipseIDE verfügbar. Seine Stärken gegenüber Lomboz zeigt das Plugin im Bereich der Web Applications. Für die Entwicklung von JSPs, HTML-Seiten und XML-Dateien stellt das Plugin eigene Editoren zur Verfügung. Neben Syntax-Highlighting verfügen der JSP- und der HTML-Editor auch über Code Assistance für Tags und Java-Code (JSP). Der HTML-Editor verfügt darüber hinaus über eine Ansicht, in welcher ein Preview der HTML-Datei angezeigt wird. Das wesentliche Unterscheidungsmerkmal zu Lomboz ist hier in der Unterstützung des JSR045 zu sehen. Damit ist, sofern dies durch den Application Server unterstützt wird, natives Debugging in Java Server Pages möglich. Das Setzen von Breakpoints und Single Stepping im Code der JSPs erfolgt analog zum Debuggen einer Java-Anwendung. Darüber hinaus ist ein Hot Swap Update für JSP-Code möglich. Änderungen an JavaServer Pages werden damit sofort ohne erneutes Deployment der Web Application sichtbar.

  • Nur kostenpflichtig im Abonnement verfügbar (ca. 30 US$ mntl.).
  • Wizards zur Code-Generierung auf Basis von Code-Templates.
  • XDoclet-Unterstützung durch Integration von JBoss-DIE.
  • Editoren für JSPs, HTML, XML und CSS mit Syntax-Highlighting und Code Assistance (HTML, JSP).
  • Unterstützung des JSR045.
  • Geplant für künftige Versionen: UML-Modellierung, GUI-Builder und mehr.

Die bisher beschriebenen Plugins unterstützen im Wesentlichen die Erstellung einer J2EE-Anwendung. Neben der Realisierung der Software ist mit der Entwicklung von J2EE-Anwendungen aber auch Betrieb und Management eines Application Servers (Entwicklungs-Infrastruktur) verbunden. Den Abschluss des Artikels pictureet daher ein Plugin, welches diese Arbeit unterstützt [4].

Mit den Java Management Extensions (JMX) hat Sun Microsystems für die Java-Welt einen Standard etabliert, der das Management von Java-Applikationen unterstützt [7]. Managebare Resourcen sind dabei über so genannte Managed Beans (MBeans) zugreifbar. Das XtremeJ-Plugin stellt eine Management-Konsole bereit, die Zugriff auf die MBeans verschiedenster Services erlaubt. Hier seien zunächst die Application Server genannt, die auf Basis von JMX gemanaged werden können. Neben JBoss erlauben sowohl IBM Websphere als auch der BEA Weblogic Server die JMX-basierte Administration. Seit der Version 5 ist dies auch mit dem Tomcat möglich. Aber auch auf dem Server deployte Anwendungen können über die XtremeJ-Konsole administriert werden, sofern die Anwendung für JMX-basiertes Management entwickelt wurde. Abpictureung 6 zeigt die Java Management Console-Perspektive, die XtremeJ bereit stellt.

Abb. 6: JMX Console-Perspektive des XtremeJ-Plugins

Zur Konfiguration von JMX-Server-Verbindungen stellt das Plugin einen Wizard zur Verfügung, der die benötigten Verbindungsinformationen ermittelt und in einer Property-Datei ablegt. Für diese Dateien stellt XtremeJ einen Editor bereit, der in der Overview-Ansicht neben den Verbindungsinformationen zusätzliche Informationen über den verbundenen JMX-Server liefert. Die MBeans-Ansicht des Editors liefert eine Übersicht über die verfügbaren MBeans und erlaubt die Navigation durch Domains und MBeans. Darüber hinaus ist aus dieser Ansicht heraus auch die weitere Funktionalität des Plugins zugreifbar. Neben diesem Editor nutzt das Plugin auch die Eclipse-Outline-View zur Navigation und Ansteuerung von Funktionalitäten. Verschiedene Views erlauben den Lese- und Schreib-Zugriff auf Attribute und die Ausführung von Operationen der MBeans, sowie Zugriff auf deren Metadaten. Darüber hinaus können Notification Handler registriert werden, die auf Benachrichtigungen von MBeans reagieren. Solche Benachrichtigungen werden in der XtremeJ-View JMX Notifications dargestellt.

Geschrieben von
Wolfgang Korn
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.