Arbeitsbereichsservice: Spezielle Hinweise
Entwickler, die Arbeitsbereiche verwenden, sollten die folgenden Aspekte berücksichtigen, die möglicherweise Probleme verursachen können: Interoperabilität zwischen den Programmiermodellen EJB und CORBA sowie die Verwendung von Arbeitsbereichen mit dem Java Abstract Windowing Toolkit.
Interoperabilität zwischen EJB und CORBA
Obwohl der Arbeitsbereichsservice sowohl im EJB-Programmiermodell als auch im CORBA-Programmiermodell verwendet werden kann, gibt es viele komplexe Datentypen, die nicht über die Grenzen der beiden Programmiermodelle hinweg verwendet werden können. Wenn z. B. eine Instanz von SimpleSampleCompany aus der WebSphere-Umgebung an eine CORBA-Umgebung übergeben wird, dann kann die CORBA-Anwendung das SimpleSampleCompany-Objekt, das in einem CORBA-Any-Objekt eingeschlossen ist, aus dem Arbeitsbereich abrufen, sie kann jedoch keinen Wert aus diesem Objekt extrahieren. In ähnlicher Weise kann ein durch IDL definiertes Struct, das in einer CORBA-Anwendung definiert und in einem Arbeitsbereich festgelegt ist, von einer Anwendung, die die Klasse "UserWorkArea" verwendet, nicht gelesen werden.
Außerdem können CORBA-Any-Objekte, die entweder den Typencode "tk_null" oder "tk_void" enthalten, über die CORBA-Schnittstelle im Arbeitsbereich festgelegt werden. Die Spezifikation des Arbeitsbereichs kann es jedoch nicht zulassen, dass die J2EE-Implementierung (Java 2 Platform, Enterprise Edition) für eine Suche (Lookup) nach diesen von CORBA festgelegten Eigenschaften null zurückgibt, ohne dass damit fälschlicherweise impliziert wird, dass für den betreffenden Schlüssel kein Wert festgelegt ist. Wenn ein Benutzer beispielsweise versucht, einen nicht vorhandenen Schlüssel aus einem Arbeitsbereich abzurufen, gibt der Arbeitsbereichsservice null zurück. Damit zeigt er an, dass der angegebene Schlüssel keinen Wert enthält, d. h. dass der Schlüssel selbst nicht verwendet oder nicht vorhanden ist. Wenn CORBA Anys tk_null oder tk_void enthält und ein Benutzer den Schlüssel anfordert, der einem dieser Werte zugeordnet ist, gibt der Arbeitsbereichsservice wie erwartet null zurück. In diesem Fall kann der Schlüssel tatsächlich vorhanden sein, und der Arbeitsbereichsservice hat lediglich den Wert des Schlüssels, hier null, zurückgegeben. Wenn Sie mit CORBA Anys arbeiten und null aus einem Arbeitsbereich zurückgegeben wird, können Sie also keine Rückschlüsse ziehen, weil der Nullwert entweder bedeuten könnte, dass dem angegebenen Schlüssel keine Eigenschaft zugeordnet ist, oder dass dem angegebenen Schlüssel eine Eigenschaft zugeordnet ist und sie "tk_null" oder "tk_void" enthalten kann, z. B. eine Null in der J2EE-Umgebung. Falls eine J2EE-Anwendung versucht, Eigenschaften abzurufen, die von CORBA festgelegt wurden und die entweder nicht serialisierbar sind oder CORBA-Nullen oder void-Referenzen enthalten, dann wird die Ausnahme "com.ibm.websphere.workarea.IncompatibleValue" zurückgegeben.
Arbeitsbereiche mit dem Java Abstract Windowing Toolkit (AWT) verwenden
Bei der Verwendung von Arbeitsbereichen in Anwendungen, die das Java AWT (Abstract Windowing Toolkit) einsetzen, ist Vorsicht geboten. Die Implementierung von AWT verwendet mehrere Threads, und Arbeitsbereiche, die auf einem Thread beginnen, sind auf einem anderen Thread nicht verfügbar. Wenn ein Programm beispielsweise einen Arbeitsbereich als Antwort auf ein AWT-Ereignis, z. B. das Drücken eines Knopfes, beginnt, dann ist es möglich, dass dieser Arbeitsbereich nach Ausführung des Ereignisses für keinen anderen Teil der Anwendung verfügbar ist.