Essayez d'utiliser l'API REST de 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.
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.
【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
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
"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
Informations sur le package et emplacement du programme créé.
tmp
└─kaeru
├─ RestClient.java
├─ RestClient.class
├─ RestTest.java
└─ RestTest.class
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.
La source du corps principal de RestClient est ici.
/tmp/kaeru/RestClient.java https://qiita.com/yatabekaeru/items/b8f03cccfb8b904efe99
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.
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" } 』
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.
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.
mkdir /tmp/kaeru
Placez le fichier source.
/tmp/kaeru/RestClient.java
/tmp/kaeru/RestTest.java
Placez le fichier jar supplémentaire dans n'importe quel répertoire. (Exemple: sous /usr/java/jdk1.8.0_152/ap_lib/, etc.)
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
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
Compiler avec la commande javac
javac kaeru/RestClient.java kaeru/RestTest.java
Accordez l'autorisation d'exécution.
chmod +x /tmp/kaeru/*.class
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)
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écutez l'exemple de programme avec la commande suivante.
java kaeru.RestTest
[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]:
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.
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. ** **
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