Blog

Unterschiede zwischen Seam-gen und Jboss Tools

Gaurav Kohli

Aktualisiert Oktober 23, 2025
7 Minuten

In diesem Artikel werden wir versuchen, die grundlegenden Unterschiede zwischen den verschiedenen Möglichkeiten der Entwicklung von Seam-Anwendungen zu verstehen. Bevor wir also ins Detail gehen, lassen Sie uns eine kurze Einführung über Seam geben

Was also ist Seam?? Seam ist eine leistungsstarke Open-Source-Entwicklungsplattform für die Erstellung von Rich-Internet-Anwendungen in Java. Seam integriert Technologien wie Asynchronous JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA), Enterprise Java Beans (EJB 3.0) und Business Process Management (BPM) in eine einheitliche Komplettlösung mit ausgefeilten Tools(1). Das einfache Diagramm des architektonischen Designs wird Ihnen dies verdeutlichen:

Entwurf-2

Diagramm 1.1 Architektur der Naht

Seam übernimmt also im Grunde die Aufgabe, diese unverbundenen Frameworks zu verbinden. Wir hatten all die guten Dinge in der J2EE-Welt, aber es war mühsam, sie miteinander zu verbinden. Aber jetzt haben wir Seam, das die ganze Drecksarbeit für uns erledigt. Wie fängt man mit der Entwicklung von Seam-Anwendungen an? Nachfolgend sind die möglichen Wege aufgeführt, wie wir mit einer einfachen Seam-Projektstruktur beginnen können.

  • Naht- gen
  • Jboss Tools
  • Maven

Es hat wirklich Spaß gemacht, mit Seam zu arbeiten, da es die anfängliche Zeit für die Projekteinrichtung, die wir normalerweise bei J2EE-Projekten haben, stark reduziert hat. Seam ist im Grunde ein Tool, mit dem Sie für die gleiche Anzahl von Zeilen, die Sie in einem anderen Java-Framework wie Spring oder Struts schreiben, einen höheren Return on Investment (ROI) erzielen. Beginnen wir also mit dem Hauptziel dieses Artikels, nämlich den Unterschieden zwischen Seam-gen und den Jboss-Tools. Zunächst werde ich etwas über beide Tools schreiben und danach versuchen, mehr Details über jedes einzelne zu erfahren.

Naht-gen

Wir beginnen mit der Verwendung von Seam-gen zur Erstellung einer Projektstruktur, da Seam-gen Skripte zur Erstellung von Seam Action, Entity und Conversations bereitstellt. Was also ist Seam-gen?? Seam-gen ist ein schneller Anwendungsgenerator, der mit der Seam-Distribution geliefert wird. Mit ein paar Kommandozeilenbefehlen erzeugt seam-gen eine Reihe von Artefakten für Seam-Projekte, die Ihnen den Einstieg erleichtern. Insbesondere ist seam-gen für Folgendes nützlich.

  • Generieren Sie automatisch ein leeres Seam-Projekt mit allgemeinen Konfigurationsdateien, einem Build-Skript und Verzeichnissen für Java-Code und JSF-Ansichten.
  • Generieren Sie automatisch vollständige Eclipse- und NetBeans-Projektdateien für das Seam-Projekt.
  • Reverse-Engineering von Entity Bean-Objekten aus relationalen Datenbanktabellen.
  • Generieren Sie Vorlagendateien für gängige Seam-Komponenten.

Jboss Tools

JBoss Tools ist eine Sammlung von Eclipse-Plugins. JBoss Tools bietet einen Assistenten zur Projekterstellung für Seam, Content Assist für die Unified Expression Language (EL) sowohl in Facelets als auch in Java-Code, einen grafischen Editor für jPDL, einen grafischen Editor für Seam-Konfigurationsdateien, Unterstützung für die Ausführung von Seam-Integrationstests aus Eclipse heraus und vieles mehr. Kurz gesagt, wenn Sie Eclipse benutzen, dann sollten Sie JBoss Tools verwenden! Wir werden uns nun hauptsächlich mit den verschiedenen Aspekten befassen, in denen sich Seam-gen und Jboss Tools unterscheiden und was die beste Option für die Erstellung von Seam-Anwendungen von Grund auf sein könnte Aspekte, in denen sie sich unterscheiden:

  1. Projektstruktur
  2. Prozess erstellen
  3. Strategie für den Einsatz
  4. Profile
  5. Ansatz testen

Unterschied in der Projektstruktur:

Seam-gen Quellverzeichnisse

Die von seam-gen erstellten Quellverzeichnisse sind jeweils für bestimmte Arten von Quelldateien vorgesehen. Auf diese Weise kann seam-gen feststellen, welche Tests ausgeführt werden müssen, und Ihre Seam-Komponenten selektiv im laufenden Betrieb bereitstellen.(Diagramm 1.2)

/src/mainKlassen, die in den Hauptklassenpfad aufgenommen werden sollen
/src/hotKlassen, die im Entwicklungsmodus in den Klassenpfad für Hot Deployment aufgenommen werden sollen.
/src/testDiese Klassen werden nicht bereitgestellt, sondern als Teil des Testziels ausgeführt.

In dieser Projektstruktur haben wir also nur einen Quellordner, der sowohl die EJB-Entitäten als auch den War-Inhalt enthält. Das ist eine Sache, die mir an Seam-gen nicht gefällt. Sie hätten eine bessere Projektstruktur bereitstellen können, wie wir sie mit den Jboss Tools haben.

Jboss Tools Quellverzeichnisse

Das Quellverzeichnis von Jboss Tools ist im Vergleich zum Projektverzeichnis von Seam-gen gut strukturiert, da es dem Standard-Paketierungsverfahren für J2EE-Anwendungen folgt: Es gibt ein War-Projekt, ein Ejb-Projekt und schließlich beide gebündelt in einer Ear-Distribution. Diese Art von Struktur hilft auch bei der Verwaltung großer Projekte, bei denen Teams an verschiedenen Modulen des Projekts arbeiten.

HelloSeamEnthält den Bereitstellungsdeskriptor, die Webkomponentendateien und zugehörige Ressourcen.
HelloSeam-OhrDie endgültige Verteilung der Ohren
HelloSeam-ejb/ejbModuleEnthält den ejb-Bereitstellungsdeskriptor, die Enterprise Bean-Dateien und zugehörige Dateien.
HelloSeam -test/test-srcDie Testklassen.

naht-gen-projekt-struktur-22

Diagramm 1.2 Projektstruktur von Seam-gen und JBoss Tools

Unterschiede im Build-Prozess:

Beginnen wir zunächst mit dem Erstellungsprozess von seam-gen. Das seam-gen Projekt wird mit dem Ant-Tool erstellt und bietet ein umfangreiches Ziel in der build.xml. Das meiste, was Sie in den verschiedenen Phasen der Anwendungsentwicklung tun möchten, können Sie also mit der mitgelieferten build.xml erledigen.

Einige Beispielziele, die für alle interessant sein könnten

explodieren , reexplodierenDiese sind für die Bereitstellung der Seam-Anwendung in einem explodierten Verzeichnis gedacht.
Bereitstellen , Neu bereitstellendienen zur Bereitstellung der Seam-Anwendung als Paketarchiv
groovy.compileWenn Sie etwas Groovy-Code haben, wird dieser einfach in Java-Klassen kompiliert
neustarten, neustarten-bereitgestellt, neustarten-explodiertfür die Durchführung des Neustarts, je nach Art der Bereitstellung
andere wie jar, war, javadocUtility-Ziele für die Erzeugung verschiedener Dinge.

Im Falle von Jboss Tools steht uns keine build.xml-Datei zur Verfügung, aber wir können das Build-Skript des Seam-gen-Projekts so anpassen, dass es mit JBoss Tools funktioniert. Ich habe eine abgespeckte Version der build.xml von Seam-gen angehängt, um die minimale Aufgabe für das Seam-Projekt bereitzustellen, die mit JBoss Tools problemlos funktioniert.

Unterschiede im Einführungsprozess:

Wir haben bereits besprochen, dass die Jboss-Tools für die Verwendung des Eclipse Web Tool Platform (WTP)-Projekts konfiguriert werden können. Wenn wir also die Seam-Anwendung mit WTP bereitstellen, wird das Ear-Bundle zusammen mit der Datasource Deployment Descriptor-Datei in das folgende Verzeichnis kopiert.

"C: Arbeitsbereich .metadata.pluginsorg.jboss.ide.eclipse.as.coreJBoss_4.2_Serverdeploy"

Beim Ant-Build hingegen werden beide Dateien direkt in das Jboss-Hauptverzeichnis für die Bereitstellung kopiert - in meinem Fall war es dieses Verzeichnis:

"C:Program Filesjboss-4.2.2.GAserverdefaultdeploy" In dieser Hinsicht scheint der erste Prozess besser zu sein, da wir das Hauptverzeichnis von Jboss deploy nicht überladen.

Unterschiede zwischen den Profilen

Nahtgen-Profile

Seam-gen unterstützt das Konzept des "Profils". Die Idee dahinter ist, dass die Anwendung in der Entwicklungs-, Test- und Produktionsphase wahrscheinlich unterschiedliche Einstellungen benötigt (z.B. Datenbankeinstellungen usw.). Daher bietet das Projekt alternative Konfigurationsdateien für jedes der drei Szenarien. Im Verzeichnis resources finden Sie die folgenden Konfigurationsdateien:

/META-INF/persistenz-*.xmlEnthält die Konfiguration einer JPA-Persistenz-Einheit für jede Umgebung.
import-*.sqlImportiert Daten in ein generiertes Schema, das auf der Einsatzumgebung basiert. In der Regel nützlich für Testzwecke.s
komponenten-*.propertiesErmöglicht das Ersetzen von Eigenschaften von Seam-Komponenten durch Platzhalter je nach Umgebung.

Jboss Tool-Profile

Die Jboss Tools bieten keine Unterstützung für Profile, so dass wir nur einen Satz von Konfigurationsdateien haben, die wir für verschiedene Phasen verwenden müssen, indem wir Änderungen in ihnen vornehmen.

Dies könnte also ein weiterer Nachteil bei der Verwendung von Jboss-Tools sein.

Unterschiede im Testansatz:

Das Testen ist ein sehr wichtiger Teil der agilen Programmierung, daher brauchen wir auch eine sehr gute Projektstruktur, um dies zu tun. Jboss Tools ist sich dessen sicher bewusst und hat gute Arbeit geleistet, indem es ein separates Projekt nur für Tests angelegt hat. Dies löst viele Probleme, die bei der Ausführung von Tests in Eclipse für ein Seam-Gen-Projekt auftreten können. Wenn Sie bei einem Seam-Gen-Projekt Tests mit Hilfe von Ant-Tasks ausführen, ist das in Ordnung, aber ansonsten müssen Sie einige Änderungen im Klassenpfad aller Testklassen vornehmen.

Fazit Matrix:

Wir könnten diesen Artikel mit einer Matrix abschließen, in der wir Merkmal für Merkmal vergleichen.

ProjektstrukturErstellungsprozessStrategie für die BereitstellungProfileTest-Ansatz
Naht-gen***************
JBoss Werkzeuge***************

Für mich ist eine Mischung aus beidem die beste Lösung für die Entwicklung einer Seam-Anwendung, aber solange wir das nicht aus dem Seam-Framework haben, können wir sicher mit Jboss Tools arbeiten. Auch wenn die Ameisenunterstützung fehlt, können wir das von Seam-Gen bereitgestellte Ameisenskript anpassen und es in unserem Jboss Tools-Projekt verwenden.

Referenzen

  • Build.xml für JBoss Tools-Projekt(Build.xml)
  • https://seamframework.org/
  • Seam-gen Command guide https://www.jboss.org/community/docs/DOC-10750
  • Seam-gen und JBoss Tools zusammen https://relation.to/Bloggers/UsingASeamgenProjectInJBossTools

Verfasst von

Gaurav Kohli

Contact

Let’s discuss how we can support your journey.