[JAVA] Versuchen Sie es mit der REST-API von JobScheduler

Versuchen Sie es mit der REST-API von JobScheduler

1. First-About 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.

2. Zweck dieses Dokuments

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.

3. Konfiguration

【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

[Verifizierungsumgebung]

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


[Zusätzliche Bibliothek wird eingeführt]

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


[Beispielprogramm]

Paketinformationen und Speicherort des erstellten Programms.

tmp
└─kaeru
        ├─ RestClient.java
        ├─ RestClient.class
        ├─ RestTest.java
        └─ RestTest.class

[Konstruktionsverfahren für die Überprüfungsumgebung]

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.

4. RestClient-Körperquelle

Die Quelle des Hauptteils von RestClient befindet sich hier.

/tmp/kaeru/RestClient.java https://qiita.com/yatabekaeru/items/b8f03cccfb8b904efe99

① Client für die Basisauthentifizierung

HTTP BasicAuthFilter wird beim Generieren eines Clients für die Basisauthentifizierung angewendet. Für den Anforderungshauptteil sind keine Dateneinstellungen erforderlich.

② Client für Access Token-Authentifizierung

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" }

Fünf. Testklassenquelle

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.

6. Einfache Zusammenstellung

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

Erstellen Sie ein Paketplatzierungsverzeichnis.

mkdir /tmp/kaeru

② Platzierung der Quelldatei

Platzieren Sie die Quelldatei.

/tmp/kaeru/RestClient.java
/tmp/kaeru/RestTest.java

③ Platzierung zusätzlicher JAR-Dateien

Platzieren Sie die zusätzliche JAR-Datei in einem beliebigen Verzeichnis. (Beispiel: Unter /usr/java/jdk1.8.0_152/ap_lib/ usw.)

④ Einstellung der Variablen CLASSPATH

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

⑤ Verzeichnis verschieben

Wechseln Sie in das Verzeichnis eine Ebene über dem Paketverzeichnis. (Wenn / tmp / kaeru ein Paketverzeichnis ist)

cd /tmp

⑥ Kompilieren Sie die Ausführung

Kompilieren Sie mit dem Befehl javac

javac kaeru/RestClient.java kaeru/RestTest.java

⑦ Vollstreckungsberechtigung erteilen

Ausführungsberechtigung erteilen.

chmod +x /tmp/kaeru/*.class

7. 7. Lauf

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.)

① Verzeichnis verschieben

Wechseln Sie in das Verzeichnis eine Ebene über dem Paketverzeichnis. (Wenn / tmp / kaeru ein Paketverzeichnis ist)

cd /tmp

② Beispielprogrammausführung

Führen Sie das Beispielprogramm mit dem folgenden Befehl aus.

java kaeru.RestTest

③ Ausführungsergebnis

[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]:


  1. NextStep

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.

9. Hinweis!

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. ** ** **

Zehn. Schließlich

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

Versuchen Sie es mit der REST-API von JobScheduler
Versuchen Sie es mit der REST-API von JobScheduler - Java RestClient-Implementierung -
Versuchen Sie es mit der RestClient Test-Klasse der REST-API-Java von JobScheduler.
Versuchen Sie es mit libGDX
Versuchen Sie es mit Maven
Versuchen Sie es mit powermock-mockito2-2.0.2
Versuchen Sie es mit GraalVM
Versuchen Sie es mit jmockit 1.48
Versuchen Sie es mit SwiftLint
Versuchen Sie es mit Log4j 2.0
Versuchen Sie es mit dem Axon Framework
Versuchen Sie es mit der Methode java.lang.Math
Versuchen Sie es mit der WhiteBox von PowerMock
Versuchen Sie es mit Talend Teil 2
Versuchen Sie es mit Talend Teil 1
Versuchen Sie es mit der F # -Liste
Versuchen Sie es mit der Methode each_with_index
Versuchen Sie es mit Spring JDBC
Versuchen Sie es mit RocksDB mit Java
Versuchen Sie es mit GloVe mit Deeplearning4j
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie es mit Cocoa von Ruby
Versuchen Sie es mit IntelliJ IDEA, da Sie dies nur einmal tun müssen
Versuchen Sie es mit Spring Boot Security
[Rails] Versuchen Sie, Faradays Middleware zu verwenden
[Verarbeitung] Versuchen Sie es mit GT Force.
[Vollständige Programmierung] §2 Versuchen Sie es mit Ruby
Probieren Sie Redmine auf dem Mac Docker aus
Versuchen Sie es mit Redis mit Java (jar)
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Versuchen Sie es mit dem Nachrichtensystem Pulsar
Versuchen Sie es mit der IBM Java-Methodenverfolgung
Versuchen Sie es mit dem Java SDK von Hyperledger Iroha
[Java] Wo haben Sie versucht, Java zu verwenden?
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Versuchen Sie, || anstelle des ternären Operators zu verwenden
Versuchen Sie, den Dienst auf Android Oreo zu verwenden
Versuchen Sie es mit der Stream-API in Java
Java lernen Versuchen Sie es mit einem Scanner oder einer Karte
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie es mit Spring Boot mit VS-Code
Versuchen Sie es mit Reladomos MT Loader (Multi-Threaded Matcher Loader).
Erstellen Sie eine RestAPI mit Wicketstuff-Restannotations von Apache Wicket
Versuchen Sie es mit der Emotion API von Android
Versuchen Sie es mit der Wii-Fernbedienung in Java
Versuchen Sie es mit simple_form / edit sogar untergeordneten Modellen
Versuchen Sie, einen GraphQL-Server mit grahpql-java-tools (+ kotlin) zu implementieren.