Innehållsförteckning:
- Definiera en webbtjänst
- Syftet med din webbtjänst är att tillåta fjärrklienter att få tillgång till tjänster som du tillhandahåller. Dessa tjänster, som heter
- I det här avsnittet bygger du en synkron webbtjänst med en vanlig Java-klass och använder sedan en statslös session EJB. Först måste du skriva komponenten bakåt. Detta kommer att vara antingen en Java-klass, en statslös EJB eller en JMS-metodkonsument.
Video: Skapa grafer i webbtjänsten 2024
En webbtjänst är en fjärransluten procedur tillgänglig för klienter via TCP / IP, typiskt med HTTP eller SMTP som transport och XML för kodning. Webbservicen beskrivs med standard XML-notering kallad en servicebeskrivning. En webbtjänst uppfyller en enskild uppgift eller en uppsättning uppgifter.
Alla uppgifter om webbtjänsten är gömda från användaren, och tjänsten är både maskin- och programvaruoberoende. Detta uppmuntrar programvaruutvecklare att bygga applikationer som består av små, individuella tjänster, som sedan kan användas ensamma eller i grupper för att utföra ännu mer komplexa uppgifter.
Du kan skapa en webbtjänst på två sätt: manuellt genom att skapa Java-källa och konfigurationsfiler eller använda ett GUI-system som heter WebLogic Workshop. I den här artikeln skapar du en webbtjänst manuellt.
Definiera en webbtjänst
Innan du skapar din webbtjänst bör du definiera vad den ska göra. Detta gör det möjligt att korrekt bygga gränssnittet som andra applikationer måste följa om de vill kommunicera med din webbtjänst.
Det mest grundläggande designbeslutet är vilket av de två allmänna typerna av webbtjänster du skapar:
- Synkron tjänst
- Asynkron tjänst
A synkron webbtjänst, < som är standard, börjar när webbtjänsten mottar ett meddelande. Denna webbtjänst svarar omedelbart. Synkrona webbtjänster är mest användbara när klientprogrammet kräver att uppgifterna omedelbart returneras från begäran. Ett exempel på denna typ av data är den aktuella aktiekursen för ett visst företag.
asynkron webbtjänst är asynkron, så meddelanden kan utbytas fritt mellan klienten och webbtjänsten. Ett meddelande från en sida förpliktar inte den andra att skicka ett motsvarande meddelande. När en klient skickar ett meddelande till en asynkron webbtjänst väntar inte kunden på ett meddelande tillbaka från webbtjänsten. Webbservicen kan skicka ett meddelande tillbaka till kunden vid ett senare tillfälle, men inget i sig binder detta meddelande till det ursprungliga meddelandet som kunden skickade. Asynkrona webbtjänster är ett bra val när du skickar information som inte kräver något svar. Du kanske till exempel vill skicka ett meddelande till flera av dina servrar och ge dem ett nytt hälsningsmeddelande som ska visas för användare.
Välja och bygga en backend-komponent
Syftet med din webbtjänst är att tillåta fjärrklienter att få tillgång till tjänster som du tillhandahåller. Dessa tjänster, som heter
backend-komponenten, är formen av Java-kod.Du kan bygga din backend-komponent som ett av följande: En metod för en statslös session EJB
- En metod för en Java-klass
- En JMS-metodkonsument
- WebLogic kan göra något av dessa objekt tillgängliga som en webbtjänst. Detta gör det bekvämt att paketera befintlig Java-kod som en webbtjänst. Om du redan har skapat statslös session EJB, kan du paketera dem som en webbtjänst. Eller om din kod finns i vanliga Java-klasser kan du ge tillgång till din klass som en webbtjänst. Du kan också använda JMS messaging som en backend-tjänst för din webbtjänst.
Skapa en synkron webbtjänst
I det här avsnittet bygger du en synkron webbtjänst med en vanlig Java-klass och använder sedan en statslös session EJB. Först måste du skriva komponenten bakåt. Detta kommer att vara antingen en Java-klass, en statslös EJB eller en JMS-metodkonsument.
Arbeta med en Java-klass-backend-komponent
Du måste följa några regler när du genomför en webbtjänst med en Java-klass:
Starta inte några trådar. Denna regel gäller för all Java-kod som körs på WebLogic Server.
- Definiera en standard ingen argumentkonstruktor.
- Definiera som offentliga metoderna för Java-klassen som kommer att exponeras som webbtjänstoperationer.
- Du måste skriva trådlös Java-kod eftersom WebLogic Server bara behåller en enda instans av en Java-klass som implementerar en webbtjänst och varje invigning av webbtjänsten använder samma instans.
För ett exempel på att implementera en WebLogic webbtjänstoperation med en Java-klass, gå till följande katalog:
WL_HOMEsamplesserversrcexampleswebservicesbasicjavaclass
där
WL_HOME hänvisar till huvudkatalogen i din WebLogic Server-installation. I ett Windows-system är denna katalog vanligtvis C: beaweblogic81. Listning 1 visar en Java-klass som du kan använda som backend-komponent. Denna Java-klass innehåller en enda metod, namnet sampleMethod, som accepterar en int och returnerar en sträng.
Listning 1: Java Class Backend Component
paket com. dummies. EJB;
Public Class SampleBackendComponent
{
Public String-provmetod (int num)
{
switch (num)
{
fall 1: returnera "One";
fall 2: återgå "två";
fall 3: återgå "tre";
fall 4: återgå "fyra";
fall 5: återgå "fem";
fall 6: återgå "sex";
fall 7: återgå "sju";
fall 8: returnera "åtta";
fall 9: återgå "nio";
fall 10: återgå "tio";
standard: returnera "något nummer";
}
}
}
Arbeta med en statslös session EJB backend-komponent
Du kan också välja att bygga din backend-komponent som en statslös session EJB. Skriva Java-kod för en statslös session EJB för en webbtjänst är inte annorlunda än att skriva en fristående EJB.
I webbtjänsterna. xml-implementeringsdeskriptor, kan du ange att en webbtjänst är ett sätt, vilket innebär att klientprogrammet som påstår webbtjänsten inte väntar på ett svar.När du skriver Java-koden för EJB-metoden som implementerar denna typ av operation måste du ange att den returnerar ogiltig.
När du väljer mellan att använda en EJB eller en Java-klassbackback-komponent, överväga de andra sätten på vilken din backend-komponent ska användas. Om din backend-komponent kommer att bli allmänt tillgänglig som en EJB, bygg den som en EJB. Detta låter dig använda samma kod för både din EJB och webbtjänst.
Det krävs betydligt mer resurser för att ringa en webbtjänst än att ringa en EJB. På grund av detta är det vanligt att skapa alla komponenter i din backend som EJB och låta externa applikationer komma åt dina backend-komponenter som webbtjänster. Dina egna lokala applikationer, som körs på samma nätverk som din WebLogic-server, kan använda den snabbare EJB-anropsmetoden.
Listning 2 visar bönfilen som implementerar EJB-backend-komponenten. EJB-backend-komponenten är nästan densamma som Java-klassbacken. Huvudskillnaden är den extra kod som används för att stödja EJB.
Lista 2: EJB Backend Component
paket com. dummies. EJB;
importera javax. EJB. *;
importera java. rmi. *;
importera javax. svänga. *;
public class SampleBean implementerar SessionBean
{
privat SessionContext stx;
// Obligatoriska metoder, som inte används av denna typ av bönor
allmän tomrum ejbCreate () {}
offentligt tomrum ejbRemove () {}
offentligt tomrum ejbActivate () {}
offentligt ogiltigt ejbPassivate () {}
// setter för SessionContext
public void setSessionContext (SessionContext ctx)
{
ctx = detta. stx;
}
// provmetoden
public String sampleMethod (int num)
slår RemoteException
{
switch (num)
{
fall 1: returnera " Ett";
fall 2: återgå "två";
fall 3: återgå "tre";
fall 4: återgå "fyra";
fall 5: återgå "fem";
fall 6: återgå "sex";
fall 7: återgå "sju";
fall 8: returnera "åtta";
fall 9: återgå "nio";
fall 10: återgå "tio";
standard: returnera "något nummer";
}
}
}
Du måste ange att bönan är en statslös EJB i ejb-burken. xml-fil, som visas i Listing 3. Du kan använda många noder och attribut.
Listning 3: ejb-jar. xml-fil för en backend-komponent
' // java. Sol. com / dtd / EJB-jar_2_0. dtd ">
SampleObject
com. dummies. EJB. SampleHome
com. dummies. EJB. Prov
com. dummies. EJB. SampleBean
Stateless
Container