Versuchen Sie es mit der REST-API von JobScheduler
Wir haben die Erkenntnisse zusammengefasst, die wir über den Job Scheduler von SOS gewonnen haben, den wir zum ersten Mal seit Mitte letzten Monats bei der Arbeit verwendet haben. Der Reiz von JobScheduler besteht darin, dass es programmierbar und multifunktional ist und viel Platz für Mashup vorhanden ist. Es gibt viele gute Punkte, die nur für OSS gelten, und wenn Sie es berühren, sprießt es. Es ist auch wunderbar, dass Herr Funai, Vorsitzender der Benutzergruppe, freundlich und begeistert von der Popularisierung ist. Ich wollte auch Informationen verbreiten, damit dieses charmante Job-Management-Tool in Japan ein wenig populärer wird.
Hier ist ein Beispiel für RestClient for REST-API-Funktionen (JASON-basiert), die ab der neuesten Version hinzugefügt wurden. Ich habe eine Vorlage von RestClient erstellt, die die folgende Verarbeitung ausführt.
· Zertifizierung (Stellen Sie eine grundlegende Authentifizierungsanforderung und erhalten Sie ein AccesToken.)
Im Vergleich zu Skriptsprachen wie Python, die ein gutes Fahrwerk haben, scheint die Implementierung in Java problematisch zu sein. Durch die Einführung einer praktischen Bibliothek kann diese in relativ kurzer Zeit implementiert werden. Ich habe einen einfachen Code geschrieben, der von einfachen Ingenieuren, die normalerweise nicht viel Gelegenheit haben, Java zu programmieren, leicht ausprobiert werden kann.
【REST-API】 Die Spezifikationen der diesmal verwendeten REST-API finden Sie im Folgenden.
Es handelt sich um eine Liste von Empfangs-URLs der REST-API, mit denen alle Systeminformationen von JobScheduler angezeigt werden können. http://test.sos-berlin.com/JOC/raml-doc/JOC-API/
Klicken Sie hier für detaillierte I / F-Informationen der REST-API, um Bestellinformationen zu erhalten. http://test.sos-berlin.com/JOC.1.11.0/raml-doc/JOC-API/resource/orders.html
In Bezug auf die REST-API-E / A zur Authentifizierung war dieser Artikel sehr einfach zu verstehen. https://qiita.com/ike_dai/items/8eb4a542aa59937a5f64
Aufbauend auf VirtualBox (CentOS-7-x86_64-Minimal-1708.iso)
・ JobScheduler: (1.11.4) ・ Betriebssystem: RHEL Ver7.3 ・ DB: PostgreSQL 9.6.X. -Java: JDK1.8.0_152-b16
Einführung von "Trikot" für die RestClient-Implementierung Einführung von "json" zum Parsen von Daten im JSON-Format
・ Jersey-Bundle-1.18.jar ・ Jackson-Core-2.1.4.jar ・ Jackson-database-2.2.0-rc1.jar ・ Jackson-Annotations-2.0.0-rc1.jar
Paketinformationen und Speicherort des erstellten Programms.
tmp
└─kaeru
├─ RestClient.java
├─ RestClient.class
├─ RestTest.java
└─ RestTest.class
Ausführliche Informationen zum Erstellen der Verifizierungsumgebung finden Sie in dem Artikel von Herrn Funai, dem Vorsitzenden der Benutzergruppe. https://qiita.com/satoruf/items/fd78523c68a7c2a0593e
Starten Sie nach dem Erstellen JOC (Jetty) und Manager.
Die Quelle des Hauptteils von RestClient befindet sich hier.
/tmp/kaeru/RestClient.java https://qiita.com/yatabekaeru/items/b8f03cccfb8b904efe99
HTTP BasicAuthFilter wird beim Generieren eines Clients für die Basisauthentifizierung angewendet. Für den Anforderungshauptteil sind keine Dateneinstellungen erforderlich.
Der Client, der die Anforderung nach der Ausgabe des AccessToken ausgibt, legt das AccessToken im Headerfeld fest. Stellen Sie im Anforderungshauptteil die Daten entsprechend den verschiedenen Schnittstellenspezifikationen der REST-API entsprechend ein.
Bei der Ausgabe einer Anforderung an "Bestellungen" wird die folgende Zeichenfolge im JASON-Format im Anforderungshauptteil festgelegt. 『 { jobschedulerId:"scheduler" } 』
Die Testklasse ist hier.
/tmp/kaeru/RestTest.java https://qiita.com/yatabekaeru/items/06e7d40a12935f107458
Zweimal, wenn ein Zugriffstoken durch Standardauthentifizierung und eine Anforderung an die REST-API "Bestellungen" ausgestellt wird. Stellen Sie eine POST-Anfrage an die angegebene URL. Die als letztere Antwort zurückgegebenen Daten werden vom JASON-Parser analysiert.
Gehen Sie zum Kompilieren wie folgt vor. Es ist eine super einfache Ausführungsumgebung. Sie können einen groben Stapelprozess mit einem einfachen Verfahren ohne ein Bereitstellungstool erstellen.
** ★ Stellen Sie unten mit einem Terminal eine Verbindung zur Verifizierungsumgebung her und führen Sie sie als Scheduler-Benutzer aus. ** ** **
Erstellen Sie ein Paketplatzierungsverzeichnis.
mkdir /tmp/kaeru
Platzieren Sie die Quelldatei.
/tmp/kaeru/RestClient.java
/tmp/kaeru/RestTest.java
Platzieren Sie die zusätzliche JAR-Datei in einem beliebigen Verzeichnis. (Beispiel: Unter /usr/java/jdk1.8.0_152/ap_lib/ usw.)
Setzen Sie die Variable CLASSPATH auf eine Umgebungsvariable.
CLASSPATH=/usr/java/jdk1.8.0_152/ap_lib/jersey-bundle-1.18.jar:/usr/java/jdk1.8.0_152/ap_lib/jackson-core-2.1.4.jar:/usr/java/jdk1.8.0_152/ap_lib/jackson-databind-2.2.0-rc1.jar:/usr/java/jdk1.8.0_152/ap_lib/jackson-annotations-2.0.0-rc1.jar:/usr/java/jdk1.8.0_152/jre/lib:/tmp/
export CLASSPATH
Wechseln Sie in das Verzeichnis eine Ebene über dem Paketverzeichnis. (Wenn / tmp / kaeru ein Paketverzeichnis ist)
cd /tmp
Kompilieren Sie mit dem Befehl javac
javac kaeru/RestClient.java kaeru/RestTest.java
Ausführungsberechtigung erteilen.
chmod +x /tmp/kaeru/*.class
Die Befehlsausführungsprozedur wird unten beschrieben.
** ★ Als Scheduler-Benutzer im selben Terminal wie das unten stehende kompilierte Terminal ausführen. ** ** ** (Wenn Sie von einem anderen Terminal booten, setzen Sie den CLASSPATH zurück.)
Wechseln Sie in das Verzeichnis eine Ebene über dem Paketverzeichnis. (Wenn / tmp / kaeru ein Paketverzeichnis ist)
cd /tmp
Führen Sie das Beispielprogramm mit dem folgenden Befehl aus.
java kaeru.RestTest
[scheduler@localhost tmp]$ java kaeru.RestTest
<Zugriffstoken ausgestellt>
*****1cf7ffa4-ab60-4604-a0e8-36d93b7abe95
<Daten im JSON-Format>
[orderId]: createDailyPlan [job]: /sos/dailyplan/CreateDailyPlan [path]: /sos/dailyplan/CreateDailyPlan,createDailyPlan [status]: PENDING [nextStart]: 2018-01-08T15:01:00Z
[orderId]: MonitorSystem [job]: /sos/notification/SystemNotifier [path]: /sos/notification/SystemNotifier,MonitorSystem [status]: PENDING [nextStart]:
[orderId]: AcknowledgeMonitorSystem [job]: /sos/notification/ResetNotifications [path]: /sos/notification/ResetNotifications,AcknowledgeMonitorSystem [status]: PENDING [nextStart]:
[orderId]: Reporting [job]: /sos/reporting/ReportingAggregation [path]: /sos/reporting/Reporting,Reporting [status]: PENDING [nextStart]:
[orderId]: Cleanup [job]: /sos/notification/CleanupNotifications [path]: /sos/notification/CleanupNotifications,Cleanup [status]: PENDING [nextStart]:
[orderId]: Unskip [job]: /sos/operations/criticalpath/UncriticalJobNodes [path]: /sos/operations/criticalpath/UncriticalJobNodes,Unskip [status]: PENDING [nextStart]:
[orderId]: Skip [job]: /sos/operations/criticalpath/UncriticalJobNodes [path]: /sos/operations/criticalpath/UncriticalJobNodes,Skip [status]: PENDING [nextStart]:
Wenn Sie es etwas Java-ähnlicher machen möchten, bereiten Sie eine Datenspeicherklasse und einen Mapper vor und implementieren Sie die Objektzuordnung. Das Erstellen einer Reihe von REST-APIs, die für den Betrieb und die Überwachung erforderlich sind, macht es zu einem nützlichen Operationstool.
JOC verwendet Jersey auch, um den RESTful-API-Dienst zu starten. Das Platzieren zusätzlicher Bibliotheken auf dem von Jetty referenzierten PATH funktioniert möglicherweise nicht richtig!
** Stellen Sie sicher, dass Sie die zusätzlichen JAR-Dateien einzeln platzieren, damit nicht verwandte Dienste nicht auf sie verweisen. ** ** **
Bisher habe ich das REST-API-Beispielprogramm in Eile eingeführt. (Bitte verzeihen Sie mir die Qualität des neuen Jahres.)
Darüber hinaus möchte ich das Manuskript überarbeiten und einen Artikel hochladen, der auf das eigentliche Operationswerkzeug zugeschnitten ist.
Recommended Posts