entwicklercamp 2014 - dots reloaded

87
DOTS - reloaded EntwicklerCamp 2014 René Winkelmeyer midpoints GmbH

Upload: rene-winkelmeyer

Post on 14-Jun-2015

221 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: EntwicklerCamp 2014 - DOTS reloaded

DOTS - reloaded

EntwicklerCamp 2014

René Winkelmeyer midpoints GmbH

Page 2: EntwicklerCamp 2014 - DOTS reloaded

René Winkelmeyer Senior Consultant

midpoints GmbH http://www.midpoints.de IBM Advanced Business Partner IBM Design Partner Services

•  Notes / Domino Consulting •  E-Mail Management •  Mobile

Produkte •  IBM Notes Traveler Planung & Deployment •  mobile app development •  Domino basiertes iOS Device Management •  Domino basierte “Dropbox” für Notes and iOS

Über mich

Page 3: EntwicklerCamp 2014 - DOTS reloaded

René Winkelmeyer Senior Consultant

•  Skype

muenzpraeger •  Twitter

muenzpraeger •  LinkedIn

muenzpraeger •  Slideshare

muenzpraeger

•  Web http://blog.winkelmeyer.com http://www.midpoints.de

•  Mail [email protected] [email protected]

OpenNTF •  File Navigator •  Generic NSF View Widget for IBM Connections

Über mich

Page 4: EntwicklerCamp 2014 - DOTS reloaded

4

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 5: EntwicklerCamp 2014 - DOTS reloaded

5

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 6: EntwicklerCamp 2014 - DOTS reloaded

6

DOTS

§  Der DOTS-Task ist ein C-Task, welcher auf dem Domino-Server eine autarke OSGi-Runtime erzeugt.

Page 7: EntwicklerCamp 2014 - DOTS reloaded

7

DOTS

§  DOTS gibt es für 8.5.x Release auf OpenNTF

§  http://www.openntf.org/main.nsf/project.xsp?r=project/OSGI%20Tasklet%20Service%20for%20IBM%20Lotus%20Domino

§  Seit Domino 9 Bestandteil des Server-Pakets

Page 8: EntwicklerCamp 2014 - DOTS reloaded

8

DOTS

§  Welche Vorteile bietet die Nutzung von DOTS?

§  Granulare Zeit- und Eventsteuerung

§  Server-side permissions

§  Keine Einschränungen à la AgentManager

§  Java, Java, Java (und SCM und Eclipse)

Page 9: EntwicklerCamp 2014 - DOTS reloaded

9

DOTS

§  Welche Migrationsszenarien für Java-Agenten gibt es?

§  LotusScript/Formula => keine => neu schreiben!

§  Java => copy & paste

§  Geht – aber bitte in neuen Strukturen denken!

Page 10: EntwicklerCamp 2014 - DOTS reloaded

10

DOTS

§  Wie kann ich DOTS-Plug-Ins deployen?

§  Über das Filesystem

§  <dominoprog>/osgi-dots/eclipse/applications/plugins

§  Über eine Updatesite.nsf

§  notes.ini-Parameter

Page 11: EntwicklerCamp 2014 - DOTS reloaded

11

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 12: EntwicklerCamp 2014 - DOTS reloaded

12

Extension Points

§  Über so genannte Extension Points können sich OSGi Plug-Ins an von anderen Plug-Ins bereitstellte Extensions „anhängen“.

§  Die meist benutzten Extension Points für DOTS sind

§  Startup

§  Task

Page 13: EntwicklerCamp 2014 - DOTS reloaded

13

Der Startup Extension Point

§  Der Code, welcher über diesen Extension Point angesprochen wird, läuft noch vor Ausführung der Tasklets.

§  Er eignet sich im Speziellen für die Initialisierung von globalen Werten, z. B. Log-Level o. ä.

Page 14: EntwicklerCamp 2014 - DOTS reloaded

14

Erstellung des initialen Plug-In

Page 15: EntwicklerCamp 2014 - DOTS reloaded

15

Erstellung des initialen Plug-In

Page 16: EntwicklerCamp 2014 - DOTS reloaded

16

Erstellung des initialen Plug-In

Page 17: EntwicklerCamp 2014 - DOTS reloaded

17

Erstellung des initialen Plug-In

Page 18: EntwicklerCamp 2014 - DOTS reloaded

18

Einbindung des Startup Extension Point

Page 19: EntwicklerCamp 2014 - DOTS reloaded

19

Einbindung des Startup Extension Point

Page 20: EntwicklerCamp 2014 - DOTS reloaded

20

Einbindung des Startup Extension Point

Page 21: EntwicklerCamp 2014 - DOTS reloaded

21

Einbindung des Startup Extension Point

Page 22: EntwicklerCamp 2014 - DOTS reloaded

22

Einbindung des Startup Extension Point

Page 23: EntwicklerCamp 2014 - DOTS reloaded

23

Einbindung des Startup Extension Point

Page 24: EntwicklerCamp 2014 - DOTS reloaded

24

Einbindung des Startup Extension Point

Page 25: EntwicklerCamp 2014 - DOTS reloaded

25

Einbindung des Startup Extension Point

Page 26: EntwicklerCamp 2014 - DOTS reloaded

26

Einbindung des Startup Extension Point

Page 27: EntwicklerCamp 2014 - DOTS reloaded

27

Einbindung des Startup Extension Point

Page 28: EntwicklerCamp 2014 - DOTS reloaded

28

Einbindung des Startup Extension Point

Page 29: EntwicklerCamp 2014 - DOTS reloaded

29

Einbindung des Startup Extension Point

Page 30: EntwicklerCamp 2014 - DOTS reloaded

30

Erstes Test-Deployment

Page 31: EntwicklerCamp 2014 - DOTS reloaded

31

Erstes Test-Deployment

Page 32: EntwicklerCamp 2014 - DOTS reloaded

32

Erstes Test-Deployment

Page 33: EntwicklerCamp 2014 - DOTS reloaded

33

Erstes Test-Deployment

Page 34: EntwicklerCamp 2014 - DOTS reloaded

34

Erstes Test-Deployment

§  DOTS-Task mit „load dots“ starten

Page 35: EntwicklerCamp 2014 - DOTS reloaded

35

Einbindung des Task Extension Point

Page 36: EntwicklerCamp 2014 - DOTS reloaded

36

Einbindung des Task Extension Point

Page 37: EntwicklerCamp 2014 - DOTS reloaded

37

Einbindung des Task Extension Point

Page 38: EntwicklerCamp 2014 - DOTS reloaded

38

Einbindung des Task Extension Point

Page 39: EntwicklerCamp 2014 - DOTS reloaded

39

Einbindung des Task Extension Point

Page 40: EntwicklerCamp 2014 - DOTS reloaded

40

Test des Task Extension Point

§  Plug-In erneut exportieren

§  DOTS-Task mit „tell dots quit“ beenden

§  Plug-In is osgi-dots Verzeichnis kopieren

§  DOTS-Task mit „l dots“ starten

Page 41: EntwicklerCamp 2014 - DOTS reloaded

41

Anatomie des Task Extension Point (XML)

§  RunOnStart – startet einmalig mit dem DOTS-Task

Page 42: EntwicklerCamp 2014 - DOTS reloaded

42

Anatomie des Task Extension Point (XML)

§  Scheduled Task mit definierten Zeiteinheiten

Page 43: EntwicklerCamp 2014 - DOTS reloaded

43

Anatomie des Task Extension Point (XML)

§  Manueller Task

Page 44: EntwicklerCamp 2014 - DOTS reloaded

44

Anatomie des Task Extension Point (XML)

§  Periodischer Task mit definiertem Zeitraum

Page 45: EntwicklerCamp 2014 - DOTS reloaded

45

Anatomie des Task Extension Point (GUI)

Page 46: EntwicklerCamp 2014 - DOTS reloaded

46

Wissenswerte DOTS-Commands

§  tell dots tasklist

§  Übersicht der Tasklets

§  tell dots taskstatus

§  Aktueller Run-Status der Tasklets

§  tell dots ss <name>

§  Filtert die Tasklets auf Basis des <name> Parameters

Page 47: EntwicklerCamp 2014 - DOTS reloaded

47

Wissenswerte DOTS-Commands

§  tell dots diag <plugin-id>

§  Überprüft die vorhandenen Plug-Ins auf (nicht-erfüllte) Dependencies

§  tell dots run <task-id>

§  Führt das per <task-id> angegebene Tasklet aus (analog ‚tell amr run...)

§  tell dots cancel <task-id>

§  Unterbricht den aktuellen Lauf des per <task-id> übergebenen Tasklet

Page 48: EntwicklerCamp 2014 - DOTS reloaded

48

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 49: EntwicklerCamp 2014 - DOTS reloaded

49

Singleton

§  Ein Singleton ist eine Art „globaler Container“. Er wird einmalig initialisiert und steht persistent zur Verfügung.

Page 50: EntwicklerCamp 2014 - DOTS reloaded

50

Singleton

§  Wir nutzen einen Singleton um intern den Status der Tasklets zu tracken.

Page 51: EntwicklerCamp 2014 - DOTS reloaded

51

Singleton

§  Beim Start und beim Beendes eines Tasklets setzen wir den entsprechenden Status im Singleton.

Page 52: EntwicklerCamp 2014 - DOTS reloaded

52

Singleton – weitere Use-Cases

§  Vorhalten Tasklet-übergreifender Konfigurationsinformationen

§  Server und Pfad von Datenbanken

§  Credentials

§  ...

§  Nutzung Tasklet-übergreifender Funktionen

§  Logging

Page 53: EntwicklerCamp 2014 - DOTS reloaded

53

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

Page 54: EntwicklerCamp 2014 - DOTS reloaded

54

Java-Annotationen allgemein

§  Über Annotationen kann Quellcode mit Metadaten versehen werden.

§  Eingeführt mit Java 5.

§  Bekannte Vertreteter sind z. B. @Deprecated, @Override, @SurpressWarnings

Page 55: EntwicklerCamp 2014 - DOTS reloaded

55

Java-Annotationen allgemein

§  Es ist die Definition eigener Annotationen möglich. Diese werden zur Compiletime oder zur Runtime ausgewertet.

§  Compiletime => z. B. Anzeige von Warnungen

§  Runtime => Interpretation von Konfigurationen

http://de.wikipedia.org/wiki/Annotation_(Java)

Page 56: EntwicklerCamp 2014 - DOTS reloaded

56

DOTS-Konfiguration mit Annotationen

§  Annontationen ersetzen (teils) die Konfiguration über die plugin.xml.

§  Developer sollen damit die Möglichkeit haben die Konfiguration „besser“ vornehmen zu können.

§  In der plugin.xml ist nur noch eine Basis-Konfiguration zu hinterlegen.

Page 57: EntwicklerCamp 2014 - DOTS reloaded

57

DOTS-Konfiguration mit Annotationen

§  Mögliche Annotationen sind:

§  @Run

§  @RunEvery

§  @RunOnStart

§  @Triggered

§  @HungPossibleAfter

Page 58: EntwicklerCamp 2014 - DOTS reloaded

58

DOTS-Konfiguration mit Annotationen

Page 59: EntwicklerCamp 2014 - DOTS reloaded

59

DOTS-Konfiguration mit Annotationen

Page 60: EntwicklerCamp 2014 - DOTS reloaded

60

DOTS-Konfiguration mit Annotationen

Page 61: EntwicklerCamp 2014 - DOTS reloaded

61

DOTS-Konfiguration mit Annotationen

Page 62: EntwicklerCamp 2014 - DOTS reloaded

62

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 63: EntwicklerCamp 2014 - DOTS reloaded

63

Custom Console Commands

§  Durch die Nutzung von Standard-Eclipse Komponenten kann der DOTS-Task um eigene OSGi Consolen Commands erweitert werden.

§  Dies ist besonders nützlich, wenn man definierte Funktionen ohne direkte Nutzung der Tasklets bereitstellen möchte.

§  Hierzu bedienen wir und der CommandProvider-Klasse aus dem Paket org.eclipse.osgi.framework.console.

Page 64: EntwicklerCamp 2014 - DOTS reloaded

64

Custom Console Commands

§  Die Commands werden dabei in einer eigenen Klasse implementiert. Dies ist dann im Activator zu registrieren.

Page 65: EntwicklerCamp 2014 - DOTS reloaded

65

Commands-Klasse erstellen

Page 66: EntwicklerCamp 2014 - DOTS reloaded

66

Commands-Klasse erstellen

Page 67: EntwicklerCamp 2014 - DOTS reloaded

67

Commands-Klasse im Activator registrieren

Page 68: EntwicklerCamp 2014 - DOTS reloaded

68

Custom Console Commands

Page 69: EntwicklerCamp 2014 - DOTS reloaded

69

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 70: EntwicklerCamp 2014 - DOTS reloaded

70

Log4J2

§  Log4J2 ist der Nachfolger des weit verbreiteten Java-Logging Frameworks Log4J.

§  http://logging.apache.org/log4j/2.x/

§  Das Framework ist hoch-flexibel und skaliert extrem gut.

§  Die Konfiguration kann über XML-Dateien oder Java-Code erfolgen.

Page 71: EntwicklerCamp 2014 - DOTS reloaded

71

Log4J2-Implementierung in DOTS

§  Erstellung eines Folder im Project

Page 72: EntwicklerCamp 2014 - DOTS reloaded

72

Log4J2-Implementierung in DOTS

§  Erstellung eines Folder im Projekt

Page 73: EntwicklerCamp 2014 - DOTS reloaded

73

Log4J2-Implementierung in DOTS

§  Hinzufügen der Libraries („api“ und „core“ sind erforderlich, beta9 vertestet, rc1 noch nicht) zum Folder per Drag‘n‘Drop.

Page 74: EntwicklerCamp 2014 - DOTS reloaded

74

Log4J2-Implementierung in DOTS

§  Hinzufügen der Libraries zum Build Path

Page 75: EntwicklerCamp 2014 - DOTS reloaded

75

Log4J2-Implementierung in DOTS

§  Hinzufügen der Libraries zum Classpath in der MANIFEST.MF

Page 76: EntwicklerCamp 2014 - DOTS reloaded

76

Log4J2-Implementierung in DOTS

§  Hinzufügen der Libraries zum Classpath in der MANIFEST.MF

Page 77: EntwicklerCamp 2014 - DOTS reloaded

77

Log4J2-Implementierung in DOTS

§  Wir erstellen eine neue Datei „log4j2.xml“ für die Log-Konfiguration.

Page 78: EntwicklerCamp 2014 - DOTS reloaded

78

Log4J2-Implementierung in DOTS

§  Definition der Logging-Parameter in der XML-Datei

Page 79: EntwicklerCamp 2014 - DOTS reloaded

79

Log4J2-Implementierung in DOTS

§  Erstellung der neuen Klasse „Log“ zum Handling des Logging.

Page 80: EntwicklerCamp 2014 - DOTS reloaded

80

Log4J2-Implementierung in DOTS

§  Implementierung der Klasse „Log“ als Singleton.

Page 81: EntwicklerCamp 2014 - DOTS reloaded

81

Log4J2-Implementierung in DOTS

§  Erweiterung des Startup-Tasklet um das Setzen der Java-Sytem-Property „mplog.domino.data“

Page 82: EntwicklerCamp 2014 - DOTS reloaded

82

Log4J2-Implementierung in DOTS

§  Beispiel-Implementierung des Logging im RunOnStart-Tasklet.

Page 83: EntwicklerCamp 2014 - DOTS reloaded

83

Agenda

§  DOTS – was, wie warum

§  Startup und Task Extension Point

§  Singleton-Nutzung

§  Konfiguration über Annotationen

§  Custom Console Commands

§  Log4J2

§  Links

Page 84: EntwicklerCamp 2014 - DOTS reloaded

84

Links

§  Domino OSGi Tasklet Service auf OpenNTF

§  http://www.openntf.org/main.nsf/project.xsp?r=project/OSGI%20Tasklet%20Service%20for%20IBM%20Lotus%20Domino

§  readme.pdf im Download beachten, enthält vielfältige Informationen

§  AD105 – Domino OSGi unleashed

§  http://public.dhe.ibm.com/software/dw/ru/download/D-Savustjan-LCTY.pdf

§  Lotusphere 2011

Page 85: EntwicklerCamp 2014 - DOTS reloaded

85

Links

§  SHOW112 – Domino OSGi DevelopmentDomino OSGi Tasklet Service auf OpenNTF

§  http://www.slideshare.net/fiorep/domino-osgi-development

§  Lotusphere 2012

§  BP207 – Meet the Java Application Server You Already Own

§  http://www.slideshare.net/sbasegmez/bp207-download

§  Connect 2013

Page 86: EntwicklerCamp 2014 - DOTS reloaded

86

Links

§  DOTS Debugging (Domino Debug Plug-In)

§  http://www.openntf.org/internal/home.nsf/project.xsp?name=IBM+Lotus+Domino+Debug+Plugin

Page 87: EntwicklerCamp 2014 - DOTS reloaded

87

Vielen Dank!