Inhaltsverzeichnis:
- Webdienst definieren
- Der Zweck Ihres Web-Service besteht darin, Remote-Clients den Zugriff auf von Ihnen bereitgestellte Dienste zu ermöglichen. Diese als
- In diesem Abschnitt erstellen Sie einen synchronen Webdienst mit einer regulären Java-Klasse und verwenden dann eine EJB für eine statusfreie Sitzung. Zuerst müssen Sie die Backend-Komponente schreiben. Dies ist entweder eine Java-Klasse, ein statusfreier EJB oder ein JMS-Methoden-Consumer.
Video: soapUI - How to Test a Web Service 2024
Ein Webservice ist eine Remoteprozedur, die Clients über TCP / IP zur Verfügung steht. In der Regel wird HTTP oder SMTP als Transport und XML für die Codierung verwendet. Der Webservice wird unter Verwendung einer Standard-XML-Notation beschrieben, die als -Dienstbeschreibung bezeichnet wird. Ein Webdienst erfüllt eine einzelne Aufgabe oder eine Gruppe von Aufgaben.
Alle Details des Webdienstes sind für den Benutzer verborgen und der Dienst ist sowohl hardware- als auch softwareunabhängig. Dies ermutigt Softwareentwickler, Anwendungen zu erstellen, die aus kleinen, individuellen Diensten bestehen, die dann einzeln oder in Gruppen verwendet werden können, um noch komplexere Aufgaben auszuführen.
Sie können einen Webdienst auf zwei Arten erstellen: manuell durch die Erstellung von Java-Quell- und Konfigurationsdateien oder mithilfe eines GUI-Systems namens WebLogic Workshop. In diesem Artikel erstellen Sie manuell einen Webdienst.
Webdienst definieren
Bevor Sie Ihren Webdienst erstellen, sollten Sie definieren, was er tun wird. Auf diese Weise können Sie die Schnittstelle, die andere Anwendungen einhalten müssen, wenn sie mit Ihrem Webservice kommunizieren möchten, ordnungsgemäß erstellen.
Die grundlegendste Entwurfsentscheidung ist, welche der beiden allgemeinen Typen von Webdiensten, die Sie erstellen werden:
- Synchroner Dienst
- Asynchroner Dienst
Ein synchroner Webdienst, < Dies ist der Standardwert und beginnt, wenn der Webdienst eine Nachricht empfängt. Dieser Webservice antwortet sofort. Synchrone Webdienste sind am nützlichsten, wenn das Clientprogramm die von der Anforderung zurückgegebenen Daten sofort benötigt. Ein Beispiel für diese Art von Daten ist der aktuelle Aktienkurs für ein bestimmtes Unternehmen.
asynchroner Webservice ist asynchron, so dass Nachrichten zwischen dem Client und dem Webservice frei ausgetauscht werden können. Eine Nachricht von einer Seite verpflichtet den anderen nicht, eine entsprechende Nachricht zu senden. Wenn ein Client eine Nachricht an einen asynchronen Webdienst sendet, wartet der Client nicht auf eine Nachricht vom Webservice zurück. Der Webdienst kann eine Nachricht zu einem späteren Zeitpunkt an den Client zurücksenden, aber nichts verbindet diese Nachricht inhärent mit der ursprünglichen Nachricht, die der Client gesendet hat. Asynchrone Webdienste sind eine gute Wahl, wenn Sie Informationen senden, für die keine Antwort erforderlich ist. Zum Beispiel möchten Sie vielleicht eine Nachricht an mehrere Ihrer Server senden und ihnen eine neue Begrüßungsnachricht geben, die den Benutzern angezeigt wird.
Auswählen und Erstellen einer Back-End-Komponente
Der Zweck Ihres Web-Service besteht darin, Remote-Clients den Zugriff auf von Ihnen bereitgestellte Dienste zu ermöglichen. Diese als
Backend-Komponente bezeichneten Dienste haben die Form von Java-Code.Sie können Ihre Backend-Komponente auf eine der folgenden Arten erstellen: Eine Methode einer statusfreien Sitzung EJB
- Eine Methode einer Java-Klasse
- Ein JMS-Methoden-Consumer
- WebLogic kann diese Elemente als ein Webservice. Dies macht es bequem, vorhandenen Java-Code als Webdienst zu verpacken. Wenn Sie bereits EJBs für zustandslose Sitzungen erstellt haben, können Sie diese als Webdienst verpacken. Wenn Ihr Code in regulären Java-Klassen vorhanden ist, können Sie den Zugriff auf Ihre Klasse als Webdienst bereitstellen. Sie können JMS-Nachrichten auch als Back-End-Service für Ihren Webdienst verwenden.
Erstellen eines synchronen Webdienstes
In diesem Abschnitt erstellen Sie einen synchronen Webdienst mit einer regulären Java-Klasse und verwenden dann eine EJB für eine statusfreie Sitzung. Zuerst müssen Sie die Backend-Komponente schreiben. Dies ist entweder eine Java-Klasse, ein statusfreier EJB oder ein JMS-Methoden-Consumer.
Arbeiten mit einer Java-Klassen-Backend-Komponente
Sie müssen beim Implementieren einer Web-Service-Operation mit einer Java-Klasse einige Regeln befolgen:
Starten Sie keine Threads. Diese Regel gilt für den gesamten Java-Code, der auf WebLogic Server ausgeführt wird.
- Definieren Sie einen standardmäßigen Nicht-Argument-Konstruktor.
- Definieren Sie als public die Methoden der Java-Klasse, die als Webservice-Operationen verfügbar gemacht werden.
- Sie müssen threadsicheren Java-Code schreiben, da WebLogic Server nur eine einzelne Instanz einer Java-Klasse verwaltet, die eine Webdienstoperation implementiert, und jeder Aufruf des Webdiensts dieselbe Instanz verwendet.
Ein Beispiel für die Implementierung eines WebLogic-Webdienstvorgangs mit einer Java-Klasse finden Sie im folgenden Verzeichnis:
WL_HOMEsamplerversripxampleswebservicesbasicjavaclass
wobei
WL_HOME auf das Hauptverzeichnis Ihrer WebLogic Server-Installation verweist. Auf einem Windows-System ist dieses Verzeichnis normalerweise C: beaweblogic81. Listing 1 zeigt eine Java-Klasse, die Sie als Backend-Komponente verwenden können. Diese Java-Klasse enthält eine einzelne Methode namens sampleMethod, die ein int akzeptiert und einen String zurückgibt.
Listing 1: Java-Klasse Backend-Komponente
Paket com. Dummköpfe. ejb;
public class SampleBackendComponent
{
public Zeichenfolge sampleMethod (int num)
{
switch (num)
{
case 1: return "One";
Fall 2: Rückkehr "Zwei";
Fall 3: Rückkehr "Drei";
Fall 4: Rückkehr "Vier";
Fall 5: Rückkehr "Fünf";
Fall 6: Rückkehr "Sechs";
Fall 7: Rückkehr "Sieben";
Fall 8: Rückkehr "Acht";
Fall 9: Rückkehr "Neun";
Fall 10: Rückkehr "Zehn";
default: gibt "Einige Zahl" zurück;
}
}
}
Arbeiten mit einer statusfreien Sitzung EJB-Backend-Komponente
Sie können Ihre Back-End-Komponente auch als EJB für eine statusfreie Sitzung erstellen. Java-Code für eine statusfreie Sitzung schreiben EJB für einen Webdienst unterscheidet sich nicht von einem eigenständigen EJB.
In den Webdiensten. Mithilfe von xml Deployment Descriptor können Sie festlegen, dass ein Webdienstvorgang in eine Richtung erfolgen soll. Das bedeutet, dass die Clientanwendung, die den Webdienst aufruft, nicht auf eine Antwort wartet.Wenn Sie den Java-Code für die EJB-Methode schreiben, die diesen Operationstyp implementiert, müssen Sie angeben, dass void zurückgegeben wird.
Wenn Sie zwischen der Verwendung einer EJB- oder einer Java-Klassen-Back-End-Komponente wählen, beachten Sie die anderen Möglichkeiten, wie Ihre Back-End-Komponente verwendet wird. Wenn auf Ihre Back-End-Komponente häufig als EJB zugegriffen wird, erstellen Sie sie als EJB. Auf diese Weise können Sie den gleichen Code für EJB und Webservice verwenden.
Zum Aufruf eines Webservice sind wesentlich mehr Ressourcen erforderlich als zum Aufruf eines EJB. Aus diesem Grund ist es üblich, alle Ihre Back-End-Komponenten als EJBs zu erstellen und dann externen Anwendungen den Zugriff auf Ihre Back-End-Komponenten als Web-Services zu erlauben. Ihre eigenen lokalen Anwendungen, die im selben Netzwerk wie Ihr WebLogic-Server ausgeführt werden, können die schnellere EJB-Aufrufmethode verwenden.
Listing 2 zeigt die Bean-Datei, die die EJB-Backend-Komponente implementiert. Die EJB-Backend-Komponente ist nahezu identisch mit der Backend-Komponente der Java-Klasse. Der Hauptunterschied ist der zusätzliche Code, der zur Unterstützung des EJB verwendet wird.
Auflistung 2: EJB-Backend-Komponente
Paket com. Dummköpfe. ejb;
javax importieren. ejb. *;
importiert Java. RMI. *;
javax importieren. Swing. *;
public class SampleBean implementiert SessionBean
{
private SessionContext stx;
// Erforderliche Methoden, die von dieser Art von Bean nicht verwendet werden
public void ejbCreate () {}
public void ejbRemove () {}
public void ejbActivate () {}
public void ejbPassivate () {}
// setter für den SessionContext
public void setSessionContext (Sitzungskontext ctx)
{
ctx = this. Stx;
}
// Die Beispielmethode
public String sampleMethod (int num)
löst RemoteException aus
{
switch (num)
{
case 1: return " Ein";
Fall 2: Rückkehr "Zwei";
Fall 3: Rückkehr "Drei";
Fall 4: Rückkehr "Vier";
Fall 5: Rückkehr "Fünf";
Fall 6: Rückkehr "Sechs";
Fall 7: Rückkehr "Sieben";
Fall 8: Rückkehr "Acht";
Fall 9: Rückkehr "Neun";
Fall 10: Rückkehr "Zehn";
default: gibt "Einige Zahl" zurück;
}
}
}
Sie müssen angeben, dass die Bean ein statusfreies EJB im ejb-jar ist. XML-Datei, die in Listing 3 gezeigt wird. Sie können viele Knoten und Attribute verwenden.
Auflistung 3: ejb-jar. XML-Datei für eine Back-End-Komponente
' // java. Sonne. com / dtd / ejb-jar_2_0. dtd '>
SampleObject
com. Dummköpfe. ejb. SampleHome
com. Dummköpfe. ejb. Beispiel
com. Dummköpfe. ejb. SampleBean
Zustandsloser
Container