[JAVA] Essayez d'utiliser l'API REST de JobScheduler

Essayez d'utiliser l'API REST de JobScheduler

1. First-About JobScheduler-

Nous avons résumé les résultats que nous avons obtenus sur le Job Scheduler de SOS, que nous avons utilisé pour la première fois au travail depuis le milieu du mois dernier. L'attrait de JobScheduler est qu'il est programmable et multifonctionnel, et qu'il y a beaucoup de place pour Mashup. Il y a beaucoup de bons points uniques à OSS, et quand vous le touchez, il germera. Il est également merveilleux que M. Funai, le président du groupe d'utilisateurs, soit gentil et enthousiaste à propos de la vulgarisation. Je voulais aussi diffuser des informations pour que ce charmant outil de gestion des emplois devienne un peu plus populaire au Japon.

2. Objectif de ce document

Voici un exemple de fonctions RestClient pour REST-API (basées sur JASON) ajoutées à partir de la dernière version. J'ai créé un modèle de RestClient qui effectue le traitement suivant.


・ Certification (Faites une demande d'authentification de base et obtenez un AccesToken) -Emettre une requête à REST-API (Émettre une demande pour acquérir des informations de commande auprès de RescClient à l'aide d'AccessToken) ・ Analyse de la valeur retournée (Analyser la valeur de retour avec la hiérarchie du format JSON)


Comparé aux langages de script tels que Python, qui ont un bon train de roulement, l'implémenter en Java semble poser beaucoup de problèmes. En introduisant une bibliothèque pratique, elle peut être mise en œuvre en un temps assez court. J'ai écrit un code simple qui peut être facilement essayé par des ingénieurs de base qui n'ont généralement pas beaucoup de possibilités de programmer Java.

3. Configuration

【REST-API】 Veuillez consulter ce qui suit pour les spécifications de l'API REST utilisée cette fois.

Il s'agit d'une liste d'URL de réception de REST-API qui peuvent obtenir une vue de toutes les informations système de JobScheduler. http://test.sos-berlin.com/JOC/raml-doc/JOC-API/

Cliquez ici pour obtenir des informations détaillées sur l'I / F de REST-API afin d'acquérir des informations de commande. http://test.sos-berlin.com/JOC.1.11.0/raml-doc/JOC-API/resource/orders.html

Concernant l'I / F REST-API pour l'authentification, cet article était très simple à comprendre. https://qiita.com/ike_dai/items/8eb4a542aa59937a5f64

[Environnement de vérification]

Construit sur VirtualBox (CentOS-7-x86_64-Minimal-1708.iso)


・ JobScheduler: (1.11.4) ・ Système d'exploitation: RHEL Ver7.3 ・ Base de données: PostgreSQL 9.6.X -Java: JDK1.8.0_152-b16


[Bibliothèque supplémentaire à introduire]

"Jersey" introduit pour l'implémentation de RestClient Introduction de "json" pour analyser les données au format JSON


・ Jersey-bundle-1.18.jar ・ Jackson-core-2.1.4.jar ・ Jackson-databind-2.2.0-rc1.jar ・ Jackson-annotations-2.0.0-rc1.jar


[Exemple de programme]

Informations sur le package et emplacement du programme créé.

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

[Procédure de construction de l'environnement de vérification]

Pour la procédure détaillée de création de l'environnement de vérification, reportez-vous à l'article de M. Funai, le président du groupe d'utilisateurs. https://qiita.com/satoruf/items/fd78523c68a7c2a0593e

Après la construction, démarrez JOC (Jetty) et manager.

4. Source corporelle RestClient

La source du corps principal de RestClient est ici.

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

① Client pour l'authentification de base

HTTP BasicAuthFilter est appliqué lors de la génération d'un client pour l'authentification de base. Aucun paramètre de données n'est requis pour le corps de la demande.

② Client pour l'authentification par jeton d'accès

Le client qui émet la demande après avoir émis le AccessToken définit le AccessToken dans le champ d'en-tête. Dans le corps de la requête, définissez les données comme il convient en fonction des diverses spécifications d'interface de REST-API.

Lors de l'émission d'une requête à "Commandes", la chaîne de caractères au format JASON suivante est définie dans le corps de la requête. 『 { jobschedulerId:"scheduler" }

Cinq. Source de la classe de test

La classe de test est ici.

/tmp/kaeru/RestTest.java https://qiita.com/yatabekaeru/items/06e7d40a12935f107458

Deux fois, lorsqu'un jeton d'accès est émis par authentification de base et une demande aux «commandes» de l'API REST Faites une requête POST à l'URL donnée. Les données renvoyées dans cette dernière réponse sont analysées par l'analyseur JASON.

6. Compilation facile

Suivez la procédure ci-dessous pour compiler. C'est un environnement d'exécution super facile. Vous pouvez créer un processus par lots approximatif avec une procédure simple sans outil de déploiement.

** ★ Ci-dessous, connectez-vous à l'environnement de vérification avec un terminal et exécutez-le en tant qu'utilisateur du planificateur. ** **

① Créez un répertoire de placement de package

Créez un répertoire de placement de package.

mkdir /tmp/kaeru

② Placement du fichier source

Placez le fichier source.

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

③ Placement de fichiers jar supplémentaires

Placez le fichier jar supplémentaire dans n'importe quel répertoire. (Exemple: sous /usr/java/jdk1.8.0_152/ap_lib/, etc.)

④ Réglage de la variable CLASSPATH

Définissez la variable CLASSPATH sur une variable d'environnement.

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

⑤ Déplacer le répertoire

Accédez au répertoire un niveau au-dessus du répertoire du package. (Si / tmp / kaeru est un répertoire de packages)

cd /tmp

⑥ Exécution de la compilation

Compiler avec la commande javac

javac kaeru/RestClient.java kaeru/RestTest.java

⑦ Autorité d'exécution des subventions

Accordez l'autorisation d'exécution.

chmod +x /tmp/kaeru/*.class

7. 7. Courir

La procédure d'exécution de la commande est décrite ci-dessous.

** ★ Exécutez en tant qu'utilisateur du planificateur dans le même terminal que le terminal compilé ci-dessous. ** ** (Si vous démarrez depuis un autre terminal, réinitialisez le CLASSPATH)

① Déplacer le répertoire

Accédez au répertoire un niveau au-dessus du répertoire du package. (Si / tmp / kaeru est un répertoire de packages)

cd /tmp

② Exemple d'exécution de programme

Exécutez l'exemple de programme avec la commande suivante.

java kaeru.RestTest

③ Résultat de l'exécution

[scheduler@localhost tmp]$ java kaeru.RestTest

<Jeton d'accès émis>

*****1cf7ffa4-ab60-4604-a0e8-36d93b7abe95

<Données au format JSON>

[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

Si vous voulez le rendre un peu plus semblable à Java, préparez une classe de stockage de données et un mappeur et implémentez le mappage d'objets. La création d'un ensemble d'API REST requises pour le fonctionnement et la surveillance en fait un outil d'exploitation intéressant.

9. Mise en garde!

JOC utilise également Jersey pour démarrer le service API RESTful. Placer des bibliothèques supplémentaires sur le PATH référencé par Jetty peut ne pas fonctionner correctement!

** Assurez-vous de placer les fichiers jar supplémentaires individuellement afin que les services non liés ne s'y réfèrent pas. ** **

Dix. finalement

Jusqu'à présent, j'ai rapidement présenté l'exemple de programme REST-API. (Veuillez me pardonner pour la qualité de la nouvelle année.)

De plus, j'aimerais réviser le manuscrit et télécharger un article conçu comme un outil opérationnel réel.

Recommended Posts

Essayez d'utiliser l'API REST de JobScheduler
Essayez d'utiliser l'API REST de JobScheduler - implémentation Java RestClient--
Essayez d'utiliser la classe de test RestClient de JobScheduler REST-API-Java-
Essayez d'utiliser libGDX
Essayez d'utiliser Maven
Essayez d'utiliser powermock-mockito2-2.0.2
Essayez d'utiliser GraalVM
Essayez d'utiliser jmockit 1.48
Essayez d'utiliser SwiftLint
Essayez d'utiliser Log4j 2.0
Essayez d'utiliser le Framework Axon
Essayez d'utiliser la méthode java.lang.Math
Essayez d'utiliser la WhiteBox de PowerMock
Essayez d'utiliser Talend Part 2
Essayez d'utiliser Talend Part 1
Essayez d'utiliser la liste F #
Essayez d'utiliser la méthode each_with_index
Essayez d'utiliser Spring JDBC
Essayez d'utiliser RocksDB avec Java
Essayez d'utiliser GloVe avec Deeplearning4j
Essayez de gratter en utilisant Java [Note]
Essayez d'utiliser Cocoa de Ruby
Essayez d'utiliser IntelliJ IDEA car vous ne devez le faire qu'une seule fois
Essayez d'utiliser Spring Boot Security
[Rails] Essayez d'utiliser le middleware de Faraday
[Traitement] Essayez d'utiliser GT Force.
[Programmation complète] §2 Essayez d'utiliser Ruby
Essayez Redmine sur le docker Mac
Essayez d'utiliser Redis avec Java (jar)
[Java] Essayez de mettre en œuvre à l'aide de génériques
Essayez d'utiliser le système de messagerie Pulsar
Essayez d'utiliser le traçage de méthode IBM Java
Essayez d'utiliser le SDK Java d'Hyperledger Iroha
[Java] Où avez-vous essayé d'utiliser java
Essayez d'utiliser le framework Java Nablarch [Application Web]
Essayez d'utiliser || au lieu de l'opérateur ternaire
Essayez d'utiliser le service sur Android Oreo
Essayez d'utiliser l'API Stream en Java
Étude de Java Essayez d'utiliser un scanner ou une carte
Essayez d'utiliser l'API au format JSON en Java
Essayez d'utiliser Spring Boot avec VS Code
Essayez d'utiliser MT Loader de Reladomo (chargeur de matrices multi-threads)
Créez un RestAPI à l'aide de wicketstuff-restannotations d'Apache Wicket
Essayez d'utiliser l'API Emotion d'Android
Essayez d'utiliser la télécommande Wii en Java
Essayez d'utiliser simple_form / modifier même les modèles enfants
Essayez d'implémenter un serveur GraphQL en utilisant grahpql-java-tools (+ kotlin)