Dynamisch generierter ear-Name

mgraessle

Grünschnabel
Hallo zusammen,

ich nutze den JBoss 4.2.3 EA. Nun versuche ich gerade, die JMX-Konsole abzusichern. Dazu verwende ich eine Klasse, die in einem ear-File (test_0.ear') zu finden ist. In der Konfigurationsdatei der JMX-Konsole jboss-web.xml versuche ich nun etwas zu sagen wie:

<depends>jboss.j2ee:service=EARDeployment,url='test_0.ear'</depends>

Klappt soweit wunderbar. Problem ist nun, dass das ear-File bei jedem Buildvorgang eine neue Versionsnummer angehängt bekommt (test_1.ear, test_2.ear...)
Und nun versuche ich vergebens, die depends-Einstellung etwas flexibler zu machen, so in der Art
<depends>jboss.j2ee:service=EARDeployment,url='test_*.ear'</depends>
Klappt aber nicht, da Dateien mit Wildcard von dem JBoss-Filtermechanismus ignoriert werden - was ich auch nicht verändern will.
Auch die Möglichkeit, ein Verzeichnis statt einer Datei anzugeben, führt nicht zum Ziel. Statt dessen kommt folgende Fehlermeldung:

--- MBeans waiting for other MBeans ---
ObjectName: jboss.web.deployment:war=jmx-console.war,id=-8335029
State: NOTYETINSTALLED
I Depend On:
jboss.j2ee:service=EARDeployment,url='${jboss.server.home.dir)/deploy/test_0.ear'

--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.j2ee:service=EARDeployment,url='${jboss.server.home.dir)/deploy/test_0.ear'
State: NOTYETINSTALLED
Depends On Me:
jboss.web.deployment:war=jmx-console.war,id=-8335029

Das liegt aber scheinbar nicht an einem falschen Verzeichnispfad.
Naja, wie auch immer. Ich komme hier nicht weiter. Vielleicht kann mir ja jemand helfen?
Danke und Gruss
Martin
 
Hmm,

wenn ich versuche mit Wildcars zu arbeiten

Code:
<depends>jboss.j2ee:service=EARDeployment,url="test*"</depends>

bekomme ich folgende Fehlermeldung:

Code:
java.lang.Error: Invalid ObjectName: jboss.j2ee:service=EARDeployment,url="test*", javax.management.MalformedObjectNameException: Invalid character '*' in value part of property
	at org.jboss.mx.util.ObjectNameFactory.create(ObjectNameFactory.java:52)
	at org.jboss.metadata.WebMetaData.importJBossWebXml(WebMetaData.java:1261)
	at org.jboss.metadata.WebMetaData.importXml(WebMetaData.java:851)

Ich verstehe nicht, woran das liegt, denn Wildcards sind wohl prinzipiell erlaubt - laut Java-API.
 
Hallo,
...
Ich verstehe nicht, woran das liegt, denn Wildcards sind wohl prinzipiell erlaubt - laut Java-API...
stimmt, nur hast du dann keinen Namen für ein einzelnes Objekt sondern ein Pattern und das definiert mehrere Objekte. <depends> referenziert aber einen einzelnen Service - für mehrere gibt es <depends-list>, wobei dir das für dein Problem nicht weiterhelfen wird.

Was ich etwas seltsam finde ist deine Vorgehensweise. Dein Buildprozess generiert Filenamen mit Versionsnummern - schön. Aber wenn du so ein Ding deployst, muss doch das "alte" ear gelöscht werden und das neue ear in den Deploymentordner verschoben werden. Wäre es nicht einfacher da einzugreifen und das File mit einem gleichbleibenden Namen zu versehen

Gruß
THMD
 
Ich habe eine mögliche Lösung gefunden:

Code:
<depends>jboss.j2ee:service=EARDeployment,url='${myEarName}'</depends>

Diese Variable kann man den Aufrufparametern oder sogar direkt im run-Script hinterlegen.
Im run-Script habe ich jetzt eine kleine Funktion, die mir den Names des ear-Files ermittelt, und den Namen der Variablen zuweist.
Danke für Hilfe und Denkanstöße.
 

Neue Beiträge

Zurück