EGL-Unterstützung für JAX-WS und JAX-RPC
JAX-WS ist eine Java™ EE-Technologie, mit der die Geschwindigkeit der SOAP-Servicekommunikation und des SOAP-Servicezugriffs verbessert werden kann. Mit EGL können Sie SOAP-Services und -Serviceanforderer generieren, die entweder JAX-WS oder die Vorgängertechnologie JAX-RPC (Java API for XML-based RPC) verwenden. Die gegenwärtige Absicht besteht darin, dass zukünftige Verbesserungen der EGL-SOAP-Service-Unterstützung auf JAX-WS basieren sollen.
Auf JAX-WS basierende Services und Serviceanforderungen können mit anderer Logik interagieren, die auf JAX-RPC basiert. Laufzeitkompatibilität wird sichergestellt. Bezüglich EGL bietet JAX-WS den zusätzlichen Vorteil, dass ein Service nur einmal generiert werden muss, auch wenn Sie den Code anschließend als SOAP-Service für mehrere Zielprojekte implementieren.
- EGL-Unterstützung für JAX-WS steht nur dann zur Verfügung, wenn der SOAP-Service oder -Serviceanforderer
auf einem Server implementiert wird, der JEE Version 5 unterstützt. Tests wurden auf den folgenden Plattformen
durchgeführt:
- WebSphere Application Server 7.0.
- Apache Tomcat 5.x (unter Java 1.6)
- Apache Tomcat 6.x (unter Java 1.6)
- Bei Verwendung von JAX-WS können strukturierte EGL-Datensätze nicht zwischen einem Service und einem Serviceanforderer übertragen werden. Bei Verwendung von JAX-RPC können strukturierte Datensätze übertragen werden; werden jedoch sowohl der Anforderer als auch der Service von EGL generiert, müssen Anforderer und Service unter JAX-RPC ausgeführt werden. Einzelheiten zur EGL-Unterstützung für strukturierte Datensätze finden Sie in 'Serviceabschnittverweis'.
- Wenn das EGL-Zielprojekt ein Webprojekt ist, das Services oder Serviceanforderer einschließt,
kann das Projekt nur eine der beiden Technologien (JAX-WS oder JAX-RPC) verwenden. Bei der Generierung
oder Implementierung von Code für das Zielprojekt kann keine Unterstützung für Services oder
Serviceanforderer hinzugefügt werden, die die jeweils andere Technologie verwenden.
Auf einen bereits erwähnten Punkt sollte nochmals hingewiesen werden: Obwohl die Java EE-Technologie für den Zugriff auf oder die Implementierung von Services für die gesamte Logik in einem Zielprojekt dieselbe sein muss, kann jeder ferne SOAP-Service, auf den zugegriffen wird, mit einer der beiden Technologien implementiert werden. Laufzeitkompatibilität wird sichergestellt.
- Wenn Sie mit einer EGL-Version vor Version 8.0.1.1 gearbeitet haben und mit einer
WSDL-Datei automatisch einen Schnittstellenabschnitt, Satzabschnitte oder ein Serviceskeleton erstellt haben,
verursachen die erstellten Abschnitte wahrscheinlich Fehler, wenn der folgende Fall zutrifft:
- Sie haben die mithilfe der WSDL-Datei erstellten Abschnitte beibehalten. Und:
- Sie verwenden diese Abschnitte als Basis für Code, den Sie dann für ein Zielprojekt generieren oder implementieren, das für JAX-WS konfiguriert ist.
Wenn Sie Code konvertieren möchten, der mit einer EGL-Version vor Version 8.0.1.1 geschrieben wurde, um den Code mit JAX-WS ausführen zu können, müssen Sie den Schnittstellenabschnitt, die Datensatzabschnitte oder die Serviceskeletons neu erstellen, die in diesem Code verwendet werden.
In den folgenden Fällen ist die erneute Erstellung von Schnittstellenabschnitten, Satzabschnitten oder Serviceskeletons nicht erforderlich:- Sie generieren oder implementieren Code, der in Version 8.0.1.1 oder höher erstellt wurde. Oder:
- Sie generieren oder implementieren älteren Code erneut für ein Zielprojekt, das auch für JAX-RPC konfiguriert ist.
- Wenn der Code die Systemfunktion getContext verwendet, muss er bei einem Wechsel zwischen JAX-RPC und JAX-WS geändert werden. Dies liegt daran, dass das von getContext zurückgegebene Objekt in JAX-RPC und JAX-WS unterschiedlich ist. Details hierzu finden Sie in 'getContext'.
Ob ein Zielprojekt für JAX-WS oder JAX-RPC konfiguriert ist, wird über ein Kontrollkästchen auf der Registerkarte Übersicht im Editor für den Implementierungsdeskriptor festgelegt. Eine Variation dieser Regel gilt für Serviceanforderungen, die @WebBinding verwenden. Dies ist eine Eigenschaft, mit der Sie Servicezugriffsdetails direkt in der Codelogik, d. h. in der Deklaration der Servicezugriffsvariablen, angeben können. Im letzteren Fall ist der bestimmte Faktor für die Konfiguration der Serviceanforderung der Wert des Kontrollkästchens im Implementierungsdeskriptor, der von dem zur Generierung des Anforderers verwendeten Builddeskriptor referenziert wird.
