Mit dem EJB-Provider können WSIF-Clients Enterprise-Beans über
RMI/IIOP (Remote Method Invocation over Internet Inter-ORB Protocol)aufrufen. Verwenden Sie diese Informationen und die zugehörigen Codefragmente, um die WSDL-Erweiterung zu schreiben, die Ihren
WSIF-Service mit einem als Enterprise-Bean implementiertern Service verknüpft.
Vorbereitende Schritte
Obwohl Sie den EJB-Provider für den EJB(IIOP)-basierten
Aufruf von Web Services verwenden können, wird die Verwendung von
RMI-IIOP-Web-Services mit JAX-RPC empfohlen.
Die EJB-Client-JAR-Datei muss in der Laufzeitumgebung des Clients mit dem aktuellen Provider
verfügbar sein.
Der EJB-Provider unterstützt
keine synchronen WSIF-Zeitlimits. Der EJB-Provider unterstützt kein Zeitlimit, d. h., er wartet unbegrenzt auf den Abschluss einer Java-Methode.
Informationen zu diesem Vorgang
Ihr WSIF-Client kann eine Enterprise-Bean über
RMI-IIOP mit den aktuellen Sicherheits- und Transaktionskontexten aufrufen.
Wenn der
EJB-Provider innerhalb einer Transaktion aufgerufen wird, wird die
Transaktion an den Anschlussservice übergeben, so dass das Standard-EJB-Transaktionsattribut
angewendet wird.
Wenn es mehrere Implementierungen des Service gibt, muss der Provider des Service
sicherstellen, dass diese dieselbe Semantik haben. Bei Transaktionen muss der Bean-Deployer beispielsweise
TX_REQUIRES_NEW angeben, um eine neue Transaktion zu erzwingen.
Verwenden Sie diese Vorgehensweise und
die zugehörigen Codefragmente, um die WSDL-Erweiterung zu schreiben,
mit der Ihr WSIF-Service eine Enterprise-Bean aufruft.
Vorgehensweise
- Geben Sie die EJB-Bidung an.
<!-- EJB-Bindung -->
<binding .... >
<ejb:binding />
<format:typeMapping style="Java" encoding="Java"/>?
<format:typeMap name="qname" formatType="nmtoken"/>*
</format:typeMapping>
<operation>*
<ejb:operation
methodName="nmtoken"
parameterOrder="nmtoken"
returnPart="nmtoken"?
interface="remote|home" />
<input name="nmtoken"? />?
<output name="nmtoken"? />?
<fault name="nmtoken"? />?
</operation>
</binding>
Für dieses Beispiel gilt Folgendes:
- Ein Fragezeichen (?) bedeutet "optional" und ein Stern (*)
steht für einen Wert von 0 oder mehr.
- Das Attribut name des Elements <format:typeMap> ist der qualifizierte Name
eines von einer EJB-Operation verwendeten einfachen oder komplexen Typs.
- Das Attribut formatType des Elements <format:typeMap> ist der vollständig
qualifizierte Klassenname der Java™-Klasse, der das mit
name angegebene Element zugeordnet wird.
- Das Attribut methodName des Elements <ejb:operation> ist der Name der
Methode, die die Operation für die Enterprise-Bean aufruft.
- Das Attribut parameterOrder des Elements <ejb:operation> enthält eine Liste mit durch
Leerzeichen voneinander getrennten Abschnittsnamen. Diese Liste definiert die Reihenfolge,
in der die Abschnitte an die EJB-Methode übergeben werden.
- Das Attribut interface des Elements <ejb:operation> muss auf
remote oder home gesetzt werden. Der Wert gibt die Schnittstelle der Enterprise-Bean an, auf der die vom Attribut
methodName angegebene Methode zugänglich ist.
- Geben Sie das Element <ejb:address> an.
<service ... >
<port>*
<ejb:address
className="nmtoken"
jndiName="nmtoken"
initialContextFactory="nmtoken" ?
jndiProviderURL="nmtoken" ? />
</port>
</service>
Für dieses Beispiel gilt Folgendes:
- Das Attribut className des Elements <ejb:address> gibt
den vollständig qualifizierten Klassennamen der Home-Schnittstellenklasse der Enterprise-Bean an.
- Das Attribut jndiName des Elements <ejb:address> gibt den vollständigen
JNDI-Namen an, mit dem nach der Enterprise-Bean gesucht wird.
- Das Attribut initialContextFactory des Elements <ejb:address> ist
optional und gibt die Klasse der Ausgangskontextfactory an.
- Das Attribut jndiProviderURL des Elements <ejb:address> ist
optional und gibt die Webadresse des JNDI-Providers an.