Ich musste hinzufügen
%Vor%in der JBOSS_HOME \ standalone \ configuration \ standalone.xml-Konfigurationsdatei
Ich benutze jBoss AS 7, um meine verschiedenen Projekte zu veröffentlichen, und alle benutzen die Jersey API, also wollte ich, anstatt sie in jedem Projekt zu implementieren, ein Modul dafür erstellen. Dafür habe ich den Ordner JBOSS_HOME \ modules \ com \ sun \ Jersey \ main erstellt und in diesem Ordner die Jersey jars und die Datei module.xml:
platziert %Vor%Um die Verwendung des jBoss JAX-RS zu verhindern, habe ich aus der Datei JBOSS_HOME \ standalone \ standalone.xml die folgenden Zeilen entfernt:
%Vor%Im Ordner MyProjectEAR \ META-INF habe ich die Datei jboss-deployment-structure.xml mit folgender Struktur erstellt:
%Vor%Meine MyProject \ webContent \ web.xml-Datei ist dies:
%Vor%Meine Manifestdatei, die in MyProject \ webContent \ META-INF \ MANIFEST.MF vorhanden ist, lautet wie folgt:
%Vor%Als ich versucht habe, das Projekt zu implementieren, habe ich den folgenden Fehler erhalten:
%Vor%* BEARBEITEN: * Wenn ich die Jersey API in JBOSS_HOME \ modules \ com \ sun \ jsf-impl \ main platziere und die entsprechende module.xml ändere funktioniert alles ok. Was hat dieser Ort anders?
Es gibt bereits eine Antwort, aber ich möchte das Thema ein wenig für zukünftige Leser klären.
Es gibt drei Orte , an denen ein JBoss-Modul als eine Abhängigkeit von anderen Bereitstellungen in JBoss 7 (EAP 6) deklariert werden kann:
In den meisten Fällen sind sie alternativ .
1. Globale Module
Ein globales Modul ist ein Modul, das JBoss Enterprise Application Platform 6 als Abhängigkeit von jeder Anwendung bereitstellt. Jedes Modul kann global gemacht werden, indem es zur Liste der globalen Module des Anwendungsservers hinzugefügt wird.
Sie können globale Module ganz einfach über die Verwaltungskonsole hinzufügen (siehe Quellen) oder indem Sie die Datei standalone.xml:
bearbeiten %Vor%2. MANIFEST.MF
Fügen Sie der Datei MANIFEST.MF einen Eintrag %code% mit einer durch Kommas getrennten Liste von Abhängigkeitsmodulnamen hinzu.
%Vor%Wenn Sie Maven verwenden, müssen Sie nur einige Plugins konfigurieren. z.B. für das Ohr.
%Vor%HINWEIS: Durch die Verwendung von %code% wird die %code% für alle im Ohr gebündelten Module sichtbar.
3. jboss-deployment-structure.xml
jboss-deployment-structure.xml ist ein JBoss-spezifischer Deployment-Deskriptor, mit dem das Laden von Klassen feingranular gesteuert werden kann. Es sollte in der Top-Level-Bereitstellung in META-INF (oder WEB-INF für Web-Bereitstellungen) platziert werden
Sie können anhand der folgenden Dokumente sehen, wie leistungsfähig es im Vergleich zu MANIFEST.MF ist. Im einfachsten Fall hier ein Beispiel:
%Vor%HINWEIS 1: Genau wie bei MANIFEST.MF wird durch %code% die %code% für alle im Ohr gebündelten Module sichtbar gemacht.
HINWEIS 2: Das Attribut %code% ist auch in jboss-deployment-structure.xml verfügbar, funktioniert aber nicht ordnungsgemäß für bestimmte Versionen (wahrscheinlich & lt; EAP 6.4.7). Überprüfen Sie es, wenn Sie es brauchen.
Ich hoffe, es hilft.
Quellen :
RedHat docs - Hinzufügen einer expliziten Modulabhängigkeit zu einer Bereitstellung
RedHat docs - Module konfigurieren
RedHat-Dokumentation - Fügen Sie allen Bereitstellungen ein Modul hinzu
Wenn Sie Maven verwenden, können Sie einen Verweis auf ein Modul in JBoss AS wie folgt hinzufügen:
%Vor%Was automatisch die Manifest-Einträge für Sie generiert.
Ich persönlich muss diesen Ansatz verwenden, um den Fehler "Native Library xxxxxxx, der bereits in einen anderen Classloader geladen wurde" beim Laden von com.microsoft.jdbc.sqlserver.SQLServerDriver , den ich als Modul definiert habe, zu vermeiden JBoss AS - Auf diese Weise können JNDI-definierte Verbindungen eine Verbindung zu MSSQL herstellen und gleichzeitig kann ich diese Abhängigkeit wiederverwenden, um direkt mit der Datenbank zu verbinden (dieses Mal über DriverManager anstelle von JNDI).
Ich benutze jBoss AS 7, um meine verschiedenen Projekte zu veröffentlichen, und alle benutzen die Jersey API, also wollte ich, anstatt sie in jedem Projekt zu implementieren, ein Modul dafür erstellen. Dafür habe ich den Ordner JBOSS_HOME \ modules \ com \ sun \ Jersey \ main erstellt und in diesem Ordner die Jersey jars und die Datei module.xml:
platziert %Vor%Um die Verwendung des jBoss JAX-RS zu verhindern, habe ich aus der Datei JBOSS_HOME \ standalone \ standalone.xml die folgenden Zeilen entfernt:
%Vor%Im Ordner MyProjectEAR \ META-INF habe ich die Datei jboss-deployment-structure.xml mit folgender Struktur erstellt:
%Vor%Meine MyProject \ webContent \ web.xml-Datei ist dies:
%Vor%Meine Manifestdatei, die in MyProject \ webContent \ META-INF \ MANIFEST.MF vorhanden ist, lautet wie folgt:
%Vor%Als ich versucht habe, das Projekt zu implementieren, habe ich den folgenden Fehler erhalten:
%Vor%* BEARBEITEN: * Wenn ich die Jersey API in JBOSS_HOME \ modules \ com \ sun \ jsf-impl \ main platziere und die entsprechende module.xml ändere funktioniert alles ok. Was hat dieser Ort anders?
Ich bin kein Experte für jboss-Module, aber es gibt ein paar Dinge, die Sie ausprobieren könnten.
Sie haben gesagt, Sie haben alle JARs und module.xml in %code% abgelegt. Beachten Sie das Kapital J. Ich weiß nicht, dass es wichtig ist, aber aus Konsistenzgründen sollten Sie es zumindest in Kleinbuchstaben schreiben.
Ich glaube auch nicht, dass du %code% in %code% willst.
Auch hier könnte ich falsch liegen, da ich definitiv kein Experte für jboss-Module bin, aber ich würde diese beiden Dinge zuerst versuchen.
Globale Module können auch über die CLI-Schnittstelle hinzugefügt werden.
Dies erleichtert das Vornehmen von Änderungen, da Sie eine Batch-Datei erstellen und diese ausführen können ./jboss-cli.sh --file {Pfad zur Datei}
Kommentiere den init param in web.xml, der wirklich funktioniert hat ...
%Vor%Ich musste hinzufügen
%Vor%in der JBOSS_HOME \ standalone \ configuration \ standalone.xml-Konfigurationsdatei
Sie müssen in der Bereitstellung eine Abhängigkeit von Ihrem Modul angeben.
META-INF \ MANIFEST.MF
%Vor%Siehe auch Ссылка
Es gibt bereits eine Antwort, aber ich möchte das Thema ein wenig für zukünftige Leser klären.
Es gibt drei Orte , an denen ein JBoss-Modul als eine Abhängigkeit von anderen Bereitstellungen in JBoss 7 (EAP 6) deklariert werden kann:
In den meisten Fällen sind sie alternativ .
1. Globale Module
Ein globales Modul ist ein Modul, das JBoss Enterprise Application Platform 6 als Abhängigkeit von jeder Anwendung bereitstellt. Jedes Modul kann global gemacht werden, indem es zur Liste der globalen Module des Anwendungsservers hinzugefügt wird.
Sie können globale Module ganz einfach über die Verwaltungskonsole hinzufügen (siehe Quellen) oder indem Sie die Datei standalone.xml:
bearbeiten %Vor%2. MANIFEST.MF
Fügen Sie der Datei MANIFEST.MF einen Eintrag Dependencies
mit einer durch Kommas getrennten Liste von Abhängigkeitsmodulnamen hinzu.
Wenn Sie Maven verwenden, müssen Sie nur einige Plugins konfigurieren. z.B. für das Ohr.
%Vor% HINWEIS: Durch die Verwendung von export
wird die com.foo.bar.test-module
für alle im Ohr gebündelten Module sichtbar.
3. jboss-deployment-structure.xml
jboss-deployment-structure.xml ist ein JBoss-spezifischer Deployment-Deskriptor, mit dem das Laden von Klassen feingranular gesteuert werden kann. Es sollte in der Top-Level-Bereitstellung in META-INF (oder WEB-INF für Web-Bereitstellungen) platziert werden
Sie können anhand der folgenden Dokumente sehen, wie leistungsfähig es im Vergleich zu MANIFEST.MF ist. Im einfachsten Fall hier ein Beispiel:
%Vor% HINWEIS 1: Genau wie bei MANIFEST.MF wird durch export=true
die com.foo.bar.test-module
für alle im Ohr gebündelten Module sichtbar gemacht.
HINWEIS 2: Das Attribut optional=true/false
ist auch in jboss-deployment-structure.xml verfügbar, funktioniert aber nicht ordnungsgemäß für bestimmte Versionen (wahrscheinlich & lt; EAP 6.4.7). Überprüfen Sie es, wenn Sie es brauchen.
Ich hoffe, es hilft.
Quellen :
RedHat docs - Hinzufügen einer expliziten Modulabhängigkeit zu einer Bereitstellung
RedHat docs - Module konfigurieren
RedHat-Dokumentation - Fügen Sie allen Bereitstellungen ein Modul hinzu
Wenn Sie Maven verwenden, können Sie einen Verweis auf ein Modul in JBoss AS wie folgt hinzufügen:
%Vor%Was automatisch die Manifest-Einträge für Sie generiert.
Ich persönlich muss diesen Ansatz verwenden, um den Fehler "Native Library xxxxxxx, der bereits in einen anderen Classloader geladen wurde" beim Laden von com.microsoft.jdbc.sqlserver.SQLServerDriver , den ich als Modul definiert habe, zu vermeiden JBoss AS - Auf diese Weise können JNDI-definierte Verbindungen eine Verbindung zu MSSQL herstellen und gleichzeitig kann ich diese Abhängigkeit wiederverwenden, um direkt mit der Datenbank zu verbinden (dieses Mal über DriverManager anstelle von JNDI).
Ich bin kein Experte für jboss-Module, aber es gibt ein paar Dinge, die Sie ausprobieren könnten.
Sie haben gesagt, Sie haben alle JARs und module.xml in JBOSS_HOME\modules\com\sun\Jersey\main
abgelegt. Beachten Sie das Kapital J. Ich weiß nicht, dass es wichtig ist, aber aus Konsistenzgründen sollten Sie es zumindest in Kleinbuchstaben schreiben.
Ich glaube auch nicht, dass du <include path="**"/>
in jboss-deployment-structure.xml
willst.
Auch hier könnte ich falsch liegen, da ich definitiv kein Experte für jboss-Module bin, aber ich würde diese beiden Dinge zuerst versuchen.
Kommentiere den init param in web.xml, der wirklich funktioniert hat ...
%Vor%Tags und Links configuration java jersey jboss7.x deployment