Rechenintensive Anwendungen verarbeiten rechenintensive Anforderungen, die nicht gut in das traditionelle J2EE-Konzept von Antwort und Anforderung passen.
Die folgenden Abschnitte bieten weitere Informationen zu den Erweiterungen des Asynchronous-Beans-Programmiermodells.
<session id="geeigneten Name angeben"> <ejb-name>CIController</ejb-name> <home>com.ibm.ws.ci.CIControllerHome</home> <remote>com.ibm.ws.ci.CIController</remote> <ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> <resource-ref id="WorkManager_ResourceRef"> <description> WorkManager, der zum Ausführen von Jobs verwendet wird. <res-ref-name>wm/CIWorkManager</res-ref-name> <res-type>commonj.work.WorkManager</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope>
Die Logik für eine rechenintensive Anwendung (eine Reihe von CIWork-Objekten und die Klassen, die zur Unterstützung dieser CIWork-Objekte erforderlich sind, wird in einem Enterprise-Bean-Modul in einer EAR-Datei der J2EE-Anwendung gepackt. Beachten Sie, dass der Implementierungsdeskriptor für das Enterprise-Bean-Modul die Definition der zuvor beschriebenen Stateless-Session-Bean enthalten muss. Wenn die Anwendung selbst andere Enterprise-Beans oder Ressourcen verwendet, können die Definitionen für diese Beans und Ressourcen ebenfalls im Implementierungsdeskriptor erscheinen. J2EE-Entwicklungstools, wie z. B. IBM Rational Application Developer, können verwendet werden, um rechenintensive Anwendungen zu entwickeln und zu packen, und zwar auf dieselbe Weise, wie dies beim Erstellen von J2EE-Anwendungen, die Enterprise-Bean-Module und Asynchronous Beans enthalten, der Fall ist.
Wenn der Job abgebrochen wird, bevor die Methode "run()" zurückgegeben wird, ruft die Bean "CIControllerBean" die Methode "release()" des CIWork-Objekts in einem separaten Thread auf. Es obliegt dem Entwickler der Anwendung mit langer Laufzeit, entsprechende Logik in die Methode "release()" einzufügen, die bewirkt, dass die Methode "run()" unmittelbar zurückgegeben wird. Der Job bleibt im Status Abbrechen anstehend, bis die Methode "run()" zurückgegeben wird.
Wenn der Job nicht abgebrochen wird und die Methode "run()" ohne Rückgabe einer Ausnahme zurückkehrt, wurde der Job erfolgreich ausgeführt. Gibt die Methode "run()" eine Ausnahme zurück, lautet der Jobstatus Ausführung fehlgeschlagen. Nach der Rückkehr der Methode "run()" (erfolgreich oder durch Rückgabe einer Ausnahme), werden keine weiteren Aufrufe an das CIWork-Objekt abgesetzt, und alle Referenzen auf das Objekt werden gelöscht.
Wie alle Jobs mit langer Laufzeit sind alle rechenintensiven Jobs in mehrere Jobabschnitte unterteilt. Im Falle der rechenintensiven Jobs wird jeder Jobabschnitt durch die Instanz einer Klasse, die die Schnittstelle "com.ibm.websphere.ci.CIWork" implementiert, dargestellt. Die Schnittstelle "CIWork" erweitert die Work-Schnittstelle "commonj.Work" aus dem Programmiermodell für asynchrone Beans des Anwendungsservers und JSR 237. Diese Erweiterungen bestehen aus zwei Methoden, die einen Weg zur Übergabe der im Job angegebenen jobspezifischen Eigenschaften an das "CIWork"-Objekt bereitstellen.
Weitere Informationen finden Sie in der API-Dokumenation.
Informationen zu Asynchronous Beans enthält der Artikel Asynchronous Beans verwenden des Information Center von WebSphere Application Server.