Portlet- und PortletApplication-MBeans
Die MBeans des Typs "portlet" und "portletapplication" stellen Informationen über eine bestimmte Portletanwendung und ihre Portlets bereit. Mit einer MBean des Typs "portletapplication" können Sie eine Liste mit den Namen aller Portlets abrufen, die zu einer Portletanwendung gehören. Wenn Sie die MBean des Typs "portlet" mit einem bestimmten Portletnamen abfragen, können Sie portletspezifische Informationen von der MBean des Typs "portlet" abrufen.
Jede MBean, die einem Portlet oder einer Portletanwendung entspricht,
ist anhand ihres Namens eindeutig identifizierbar.
Für Portletanwendungen muss in der Datei portlet.xml
kein Name definiert werden. Der MBean-Name für MBeans des Typs "portletapplication" ist der Name der EAR-Datei,
gefolgt von "#" und dem Namen des Webmoduls, verkettet mit der Zeichenfolge "_portlet". MBeans des Typs "portletapplication" haben beispielsweise das folgende
Format:
<EarFileName>#<Name_der_WAR-Datei>_portletDer ausgewählte Name für die MBean des Typs "portlet" ist der Name der MBean des Typs "portletapplication", zu der das Portlet gehört, verkettet mit dem Portletnamen:
<EarFileName>#<Name_der_WAR-Datei>_portlet.<Portletname>
Im Folgenden sehen Sie ein
Beispiel für die erstellten PortletApplication-MBean- und Portletnamen:
EarName SampleEar
WebModule SampleWar.war
Name der PortletApplication-MBean: SampleEar#SampleWar_portlet
Portlet: SampleEar#SampleWar_portlet.BookmarkPortlet
Die
MBean-Namen wurden gegenüber Version 6.1 geändert, weil die alten Namensmuster
nicht eindeutig sind und unter bestimmten Bedingungen zu Problemen führen können.
Wenn Sie sich auf das alte Namensmuster stützen, können Sie die angepasste Eigenschaft
useShortMBeanNames für den Portletcontainer auf "true" setzen, um die zuvor bekannten
MBean-Namen zu aktivieren. Da das alte Namensmuster Einfluss auf die Leistung hat, sollten Sie
das alte Namensmuster nur dann aktivieren, wenn es unbedingt erforderlich ist.Ein Punkt trennt den Webmodulnamen vom nachfolgenden Portletnamen. Weitere Informationen finden Sie in der API-Dokumentation zu MBeans des Typs "PortletApplication". Die generierte API-Dokumentation kann im Inhaltsverzeichnis des Information Center über den Pfad
aufgerufen werden.Das folgende Codebeispiel zeigt, wie die MBean des Typs
portletapplication für eine Anwendung mit dem Namen "SampleWar" aufgerufen wird.
String myPortletApplicationName = "SampleEar#SampleWar_portlet";
Dieser Name besteht aus dem Namen der EAR-Datei, gefolgt von "#" und dem Namen des Webmoduls,
verkettet mit der Unterzeichenfolge "_portlet"
com.ibm.websphere.management.AdminService adminService =
com.ibm.websphere.management.AdminServiceFactory.getAdminService();
javax.management.ObjectName on =
new ObjectName("WebSphere:type=PortletApplication,name=" + myPortletApplicationName + ",*");
Iterator onIter = adminService.queryNames(on, null).iterator();
while(onIter.hasNext())
{
on = (ObjectName)onIter.next();
}
String ctxRoot = (java.lang.String)adminService.getAttribute(on, "webApplicationContextRoot");
In diesem Beispiel
wird der MBean-Server zuerst nach einer MBean des Typs "portletapplication" abgefragt.
Wenn diese Abfrage erfolgreich ist, wird das Attribut "webApplicationContextRoot"
von dieser MBean bzw. der ersten gefundenen MBean abgerufen und das Ergebnis in der Variablen
"ctxRoot" gespeichert. Diese Variable enthält jetzt den Kontextstamm
der Webanwendung, die die gesuchte Portletanwendung enthält.
Die Variable gleicht "/bookmark".Das nächste Codebeispiel
veranschaulicht, wie die MBean des Typs portlet für ein Portlet
mit dem Namen "BookmarkPortlet" aufgerufen wird.
String myPortletName = "SampleEar#SampleWar_portlet.BookmarkPortlet";
Dieser Name setzt sich aus dem Namen der MBean des Typs "portletapplication" und dem Portletnamen,
getrennt durch einen Punkt zusammen, da derselbe Portletname in unterschiedlichen
Webmodulen verwendet werden kann, aber innerhalb des Systems eindeutig sein muss.
com.ibm.websphere.management.AdminService adminService =
com.ibm.websphere.management.AdminServiceFactory.getAdminService();
javax.management.ObjectName on =
new ObjectName("WebSphere:type=Portlet,name=" + myPortletName + ",*");
Iterator iter = adminService.queryNames(on, null).iterator();
while (iter.hasNext()) {
on = (ObjectName)iter.next;
}
java.util.Locale locale = (java.util.Locale) adminService.getAttribute(on, "defaultLocale");
Die von der Methode
getAttribute für die MBean zurückgegebene Ländereinstellung ist die für das Portlet definierte
Standardländereinstellung.Vollständiger Namen für MBeans vom Typ "Portlet" und "PortletApplication"
MBeans
werden auch mit dem vollständig identifizierbaren Namen registriert:
<Anwendungsname>#<Name_der_WAR-Datei.war>_portlet.<Portletname> für die MBean "Portlet"
<Anwendungsname>#<Name_der_WAR-Datei.war>_portlet für die MBean "PortletApplication"
<..> wird durch die entsprechenden Anwendungsdaten ersetzt,
z. B. SampleApplication#SamplePortlet.war_portlet.SamplePortlet.
Sie können kurze MBean-Namen aktivieren, in dem Sie die angepasste Eigenschaft useShortMBeanNames des Portletcontainers auf
"true" setzen.