JobScheduler kann die Jobverarbeitung in verschiedenen Sprachen implementieren. Die meisten von ihnen sind in der Shell geschrieben und einfach zu implementieren, aber in der Shell ist es unpraktisch, ein paar aufwändige Dinge zu tun, z. B. die interne API von JobScheduler nicht aufrufen zu können. In diesem Artikel zeigen wir Ihnen, wie Sie es in Java implementieren.
Wie nachstehend Es erbt die Job_impl-Klasse im sos.spooler-Paket und implementiert die Java-Klasse.
SimpleJobApiExample.java
package sample.test;
import sos.spooler.*;
public class SimpleJobApiExample extends Job_impl {
@Override
public boolean spooler_process() throws Exception {
spooler_log.info("Hello world!");
return false;
}
}
In der Dokumentation finden Sie verfügbare Paketklassen. http://www.sos-berlin.com/doc/doxygen-docs/SOSJobSchedulerModel/html/index.html
Kompilieren Sie es nach dem Erstellen wie folgt.
sample/test/SimpleJobApiExample.java Gegen
$ cd sample/test
$ javac -classpath .:/opt/sos-berlin.com/jobscheduler/scheduler/lib/sos/com.sos-berlin.jobscheduler.engine-1.11.3.jar SimpleJobApiExample.java
Erstellen Sie Manifest.txt
$ cd ../../
$ vim Manifest.txt
Manifest-Vwersion: 1.0
Main-Class: sample.test.SimpleJobApiExample
Class-Path: /opt/sos-berlin.com/jobscheduler/scheduler/lib/sos/*
JAR-Datei erstellen
$ jar cvfm SimpleJobApiExample.jar Manifest.txt sample/test/*.class
Platzieren Sie die oben erstellte JAR-Datei in einem Klassenpfad, den JobScheduler erkennen kann.
Der Klassenpfad, den JobScheduler Master als Leseziel erkennt, befindet sich in der in factory.ini beschriebenen Kategorie [java]. Die folgenden Einstellungen.
[java]
class_path = ${SCHEDULER_HOME}/lib/pgsql/*.jar:${SCHEDULER_HOME}/lib/patches/*.jar:${SCHEDULER_HOME}/lib/user_lib/*.jar:${SCHEDULER_HOME}/lib/sos/*.jar:${SCHEDULER_HOME}/lib/3rd-party/*.jar:${SCHEDULER_HOME}/lib/jdbc/*.jar:${SCHEDULER_DATA}/config:${SCHEDULER_HOME}/lib/log/log4j/*.jar
Wenn Sie es an einem anderen Ort als dem oben genannten Standard platzieren möchten, müssen Sie die obige Einstellung ändern. Wenn Sie es nicht ändern müssen, sollten Sie es unten platzieren.
Unter /opt/sos-berlin.com/jobscheduler/scheduler/lib/user_lib/
$ cp SimpleJobApiExample.jar /opt/sos-berlin.com/jobscheduler/scheduler/lib/user_lib
Wenn mehrere JobScheduler-Master geclustert sind, legen Sie sie auf allen Master-Servern im Klassenpfadordner ab.
Implementieren Sie den Job wie folgt, wobei die JAR-Datei wie oben beschrieben platziert wird.
<job title="Simple Java API Job" order="no">
<script language="Java" java_class_path="/opt/sos-berlin.com/jobscheduler/scheduler/lib/user_lib" java_class="sample.test.SimpleJobApiExample"/>
<run_time/>
</job>
Mit den obigen Einstellungen wird die sample.test.SimpleJobApiExample-Klasse aufgerufen. Prozesse wie spooler_process (), die in der Klasse implementiert sind, werden automatisch ausgeführt. Wenn Sie es an einer anderen Stelle als dem Standardklassenpfad von JobScheduler Master platzieren möchten, fügen Sie die Einstellung java_class_path wie folgt hinzu.
<job title="Simple Java API Job" order="no">
<script language="Java" java_class_path="/hoge/lib/*.jar" java_class="sample.test.SimpleJobApiExample"/>
<run_time/>
</job>
Der obige java_class_path wird jedoch zur class_path-Einstellung des vorhandenen JobScheduler-Masters hinzugefügt, um den zu durchsuchenden Ordner anzugeben Wenn der gleichnamige in den Klassenpfad von JobScheduler Master gestellt wird, wird er mit Priorität gelesen. Seien Sie also vorsichtig.
Recommended Posts