MBeans de type Portlet et PortletApplication
Les MBeans de type Portlet et PortletApplication fournissent des informations sur une application de portlet et ses portlets. Dans le MBean de type portletapplication, vous pouvez obtenir une liste des noms de tous les portlets qui appartiennent à une application de portlet. Vous pouvez obtenir des informations du MBean de type portlet en interrogeant celui-ci avec un nom de portlet donné.
Chaque MBean correspondant à un portlet ou à une application de portlet
n'est identifiable que par son nom. Les collections de portlets ne doivent pas nécessairement avoir
un nom défini dans le fichier portlet.xml.
Le nom de MBean
des MBeans du type portletapplication est le nom du fichier EAR
suivi de "#" et du nom du module Web concaténé à la chaîne "_portlet". Par exemple, les MBeans de type portletapplication ont le format suivant :
<nomFichierEAR>#<nomFichierWAR>_portletLe nom choisi pour le MBean de type portlet est celui du MBean de type portletapplication auquel le portlet appartient, concaténé au nom du portlet :
<nomFichierEAR>#<nomFichierWAR>_portlet.<nomPortlet>
L'exemple suivant illustre le nom de MBean PortletApplication et les noms de portlet résultants :
EarName SampleEar
WebModule SampleWar.war
PortletApplication MBean name: SampleEar#SampleWar_portlet
Portlet: SampleEar#SampleWar_portlet.BookmarkPortlet
Les noms des
MBean ont changé par rapport à la version 6.1, car l'ancienne convention de dénomination ne donnait pas des noms uniques, ce qui pouvait poser des problèmes dans certains cas. Si vous utilisez l'ancienne convention, vous pouvez définir la propriété personnalisée du conteneur de portlet useShortMBeanNames sur true pour activer les anciens noms de
MBeans. Comme cette propriété a un impact sur les performances, il est préférable de ne pas l'activer si ce n'est pas indispensable.Un point sépare le nom du module Web précédent du nom du portlet. Consultez la documentation de l'API des MBean de type Portlet et PortletApplication pour plus d'informations. La documentation sur les API générées est disponible dans la table des matières du centre de documentation, sous
.L'exemple de code suivant indique comment appeler le MBean de
type portletapplication d'une application ayant pour nom "SampleWar".
String myPortletApplicationName = "SampleEar#SampleWar_portlet";
This name is composed by the Ear file name followed by "#" and
the web module name concatenated with the substring "_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");
Dans
l'exemple précédent, un MBean de type portletapplication est d'abord recherché dans le serveur MBeanServer. Si cette requête aboutit, l'attribut webApplicationContextRoot
est récupéré sur ce MBean ou sur le premier MBean trouvé.
Le résultat est
stocké dans la variable ctxRoot. Cette variable contient à présent la racine de contexte
de l'application Web qui contient l'application de portlet recherchée. Cette variable est similaire à "/bookmark".Le
prochain exemple de code indique comment appeler le MBean de type portlet d'un
portlet ayant pour nom "BookmarkPortlet".
String myPortletName = "SampleEar#SampleWar_portlet.BookmarkPortlet";
This name is composed by the name of the MBean of type portletapplication and
the portlet name, separated by a full stop because the same portlet name may
be used within different web modules, but must be unique within the system.
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");
L'environnement
local renvoyé par la méthode getAttribute du MBean est l'environnement local
défini pour ce portlet.Noms complets pour les MBeans Portlet et PortletApplication
Les MBeans sont également enregistrés sous leur nom complet
identifiable :
<ApplicationName>#<WARfilename.war>_portlet.<portlet_name> for the Portlet MBean
<ApplicationName>#<WARfilename.war>_portlet for the PortletApplication MBean
où <..> est remplacé par les données d'application correspondantes. Par exemple, SampleApplication#SamplePortlet.war_portlet.SamplePortlet.
Vous pouvez activer les noms MBean abrégés en définissant la propriété personnalisée du conteneur de portlet useShortMBeanNames sur true.