Technologia JMX, część II - DSRG
Transkrypt
Technologia JMX, część II - DSRG
Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Technologia JMX, część II http://www.cs.agh.edu.pl opracowanie Łukasz Czekierda DSRG 2003-2005 1 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Plan zajęć • • • • • Powtórka Złącze RMI w JDMK Notyfikacje Dynamiczny MBean Modelowy MBean opracowanie Łukasz Czekierda DSRG 2003-2005 2 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne POWTÓRKA opracowanie Łukasz Czekierda DSRG 2003-2005 3 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Łatwe (?) pytania • • • • • Co to jest JMX? Po co JMX? Kiedy JMX? Co to jest MBean? Co to jest MBeanServer? opracowanie Łukasz Czekierda DSRG 2003-2005 4 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Standardowy MBean • Interfejs znany w czasie projektowania • Struktura MBeanInfo tworzona automatycznie przez MBeanServer – Introspekcja opracowanie Łukasz Czekierda DSRG 2003-2005 5 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Rejestrowanie zwykłego MBeana try { Object simpleObj = new Simple(); ObjectName objectName = new ObjectName("Mbeany dydaktyczne" + ":type=" + mbeanName); server.registerMBean(simpleObj, objectName); } catch (Exception e) { //zrob cos } opracowanie Łukasz Czekierda DSRG 2003-2005 6 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Tworzenie zwykłego MBeana try { ObjectName objectName = new ObjectName("Mbeany dydaktyczne" + ":type=" + mbeanName); server.createMBean("sius05.Simple", objectName); } catch (Exception e) { //zrob cos } opracowanie Łukasz Czekierda DSRG 2003-2005 7 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne ZŁĄCZA CONNECTOR ADAPTOR (TRANSLATOR) opracowanie Łukasz Czekierda DSRG 2003-2005 8 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Złącze (connector) RMI • Pozwala na dostęp do serwera MBean poprzez RMI – Serwer złącza – Klient złącza • Po stronie serwera MBean: reprezentowane jako zwykły MBean • Po stronie klienta: dostęp poprzez proxy o interfejsie podobnym do interfejsu MBeanServer opracowanie Łukasz Czekierda DSRG 2003-2005 9 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Serwery złącza w JDMK class com.sun.jdmk.comm.CommunicatorServer All Implemented Interfaces: CommunicatorServerMBean, MBeanRegistration, NotificationBroadcaster, Runnable Direct Known Subclasses: GenericHttpConnectorServer, HtmlAdaptorServer, RmiConnectorServer, SnmpAdaptorServer opracowanie Łukasz Czekierda DSRG 2003-2005 10 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Klienci złącza w JDMK interface com.sun.jdmk.comm.RemoteMBeanServer All Superinterfaces: ClientNotificationHandler, NotificationRegistration, ProxyHandler All Known Implementing Classes: GenericHttpConnectorClient, RmiConnectorClient opracowanie Łukasz Czekierda DSRG 2003-2005 11 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Złącze (adaptor) HTML import com.sun.jdmk.comm.CommunicatorServer; import com.sun.jdmk.comm.HtmlAdaptorServer; try { ObjectName htmlObjName = new ObjectName("Adaptor:class=HtmlAdaptorServer, protocol=html,port=" + portNumber); CommunicatorServer htmlAdaptor = new HtmlAdaptorServer(portNumber); server.registerMBean(htmlAdaptor, htmlObjName); htmlAdaptor.start(); } catch (Exception e) { //zrob cos } opracowanie Łukasz Czekierda DSRG 2003-2005 12 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Złącze (connector) RMI import com.sun.jdmk.comm.CommunicatorServer; import com.sun.jdmk.comm.RmiConnectorServer; try { ObjectName rmiObjName = new ObjectName(„Connector:class=RmiConnectorServer, protocol=rmi,port=" + portNumber); CommunicatorServer rmiConnector = new RmiConnectorServer(portNumber); server.registerMBean(rmiConnector, rmiObjName); rmiConnector.start(); } catch (Exception e) { //zrob cos } opracowanie Łukasz Czekierda DSRG 2003-2005 13 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Złącze RMI w JMX z JDK 1.5 SERWER: JMXServiceURL url = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://149.156.97.146:9999/server"); JMXConnectorServer jmxcs = JMXConnectorServerFactory. newJMXConnectorServer(url, null, mbs); jmxcs.start(); ... jmxcs.stop(); KLIENT: JMXServiceURL url = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://149.156.97.146:9999/server"); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); opracowanie Łukasz Czekierda DSRG 2003-2005 14 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Opis obiektu MBean javax.management.MBeanInfo javax.management.MBeanConstructorInfo javax.management.MBeanAttributeInfo javax.management.MBeanOperationInfo javax.management.MBeanNotificationInfo opracowanie Łukasz Czekierda DSRG 2003-2005 15 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Ćwiczenie 1 • Połączyć się z serwerem MBean i pobrać opis obiektu • Pobrać opis wartości zwracanej przez operację • host=172.16.2.35, port=3072 • objectName=MBeany dydaktyczne:type=SimpleA opracowanie Łukasz Czekierda DSRG 2003-2005 16 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Ćwiczenie 2 Object invoke(ObjectName name, String methodName, Object[] arguments, String[] signature); Object getAttribute(ObjectName name, String attribute); void setAttribute(ObjectName name, Attribute attribute); public interface SimpleMBean { Integer getAValue(); void setAValue(Integer value); long getSequence(); void sayHello(String msg, Date when); } host=172.16.2.35, port=3072 objectName=MBeany dydaktyczne:type=SimpleA opracowanie Łukasz Czekierda DSRG 2003-2005 17 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne NOTYFIKACJE opracowanie Łukasz Czekierda DSRG 2003-2005 18 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Koncepcja • MBean generuje zdarzenia • Zarejestrowani odbiorcy je odbierają opracowanie Łukasz Czekierda DSRG 2003-2005 19 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Notyfikacje class javax.management.Notification All Implemented Interfaces: Serializable Direct Known Subclasses: AttributeChangeNotification, DiscoveryResponderNotification, HeartBeatNotification, MBeanServerNotification, MonitorNotification, RelationNotification, SnmpTableEntryNotification, TimerAlarmClockNotification, TimerNotification, TraceNotification opracowanie Łukasz Czekierda DSRG 2003-2005 20 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Obiekt notyfikujący public class SimpleNotification extends Notification { //własne pola i metody public SimpleNotification(Object source, long sequenceNumber, ...) { super("Systemy implementacji uslug sieciowych", source, sequenceNumber); //... } opracowanie Łukasz Czekierda DSRG 2003-2005 21 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Notyfikujący i notyfikowani public class Simple extends NotificationBroadcasterSupport implements SimpleMBean { public void sayHello(String msg, Date when) { //... sendNotification(new SimpleNotification(this, sequence, msg, when)); } } public class RMIListener implements NotificationListener { public void handleNotification(Notification notification, Object handback) {...} //własne pola i metody opracowanie Łukasz Czekierda DSRG 2003-2005 22 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Ćwiczenie 3 public class SimpleNotification extends Notification { String student; Date date; public SimpleNotification(Object source, long sequenceNumber, String student, Date date){ super("Systemy implementacji uslug sieciowych", source, sequenceNumber); ... } } host=172.16.2.35, port=3072 objectName=MBeany dydaktyczne:type=Simple2 opracowanie Łukasz Czekierda DSRG 2003-2005 23 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne DYNAMICZNE MBEANY opracowanie Łukasz Czekierda DSRG 2003-2005 24 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Standardowy MBean • Interfejs znany w czasie projektowania • Struktura MBeanInfo tworzona automatycznie przez MBeanServer – Introspekcja opracowanie Łukasz Czekierda DSRG 2003-2005 25 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Dynamiczny MBean • Interfejs tworzony w czasie wykonania • Może być zmienny • Musi implementować interfejs javax.management.DynamicMBean • Musi samodzielnie implementować MBeanInfo opracowanie Łukasz Czekierda DSRG 2003-2005 26 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Modelowy MBean • Rozszerzenie dynamicznego MBean • Ułatwia oprzyrządowanie istniejącego oprogramowania – Odwołania są delegowane do zarządzanego zasobu – setManagedResource • Dla całego MBeana • Dla pojedynczych atrybutów • Klasa RequiredModelMBean – Implementuje interfejs ModelMBean – Występuje w każdej implementacji – Zrealizowana obsługa notyfikacji, błędów, persystentności, itp. opracowanie Łukasz Czekierda DSRG 2003-2005 27 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Modelowy MBean interface javax.management.modelmbean.ModelMBean All Superinterfaces: DynamicMBean, ModelMBeanNotificationBroadcaster, NotificationBroadcaster, PersistentMBean All Known Implementing Classes: RequiredModelMBean opracowanie Łukasz Czekierda DSRG 2003-2005 28 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Modelowy MBean • setManagedResource(Object ref, String type) – ObjectReference, Handle, IOR, EJBHandle, RMIReference • Opis MBeana w ModelMBeanInfo – Dziedziczy z MBeanInfo – Dodaje deskryptory • Zbiór par (nazwa, wartość) – cachowanie odwołań – persystentność (never, onUpdate, noMoreOftenThan, ...) – wersja opracowanie Łukasz Czekierda DSRG 2003-2005 29 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne Otwarty MBean • Rodzaj dynamicznego obiektu MBean • Zbiór dozwolonych typów w konstruktorach, operacjach, atrybutach i notyfikacjach został okrojony • Ułatwia reprezentację w języku XML • Opis zawarty w OpenMBeanInfo opracowanie Łukasz Czekierda DSRG 2003-2005 30 Środowiska implementacji usług sieciowych, Informatyka, studia dzienne KONIEC opracowanie Łukasz Czekierda DSRG 2003-2005 31