Oprette Web Services i WebLogic

En web service er en remote procedure til rådighed for kunderne via TCP / IP, typisk ved hjælp af HTTP eller SMTP som transport og XML til kodning. Den webservice er beskrevet ved hjælp af standard XML notation kaldes en tjeneste beskrivelse. En web tjeneste opfylder en enkelt opgave eller et sæt af opgaver.

Alle oplysninger om webservice er skjult for brugeren, og tjenesten er både hardware og software uafhængig. Dette tilskynder softwareudviklere til at bygge applikationer, der består af små, individuelle tjenester, som derefter kan bruges alene eller i grupper til at udføre endnu mere komplekse opgaver.

Du kan oprette en webservice på to måder: manuelt, gennem oprettelsen af ​​Java source og konfigurationsfiler, eller ved hjælp af en GUI system kaldet WebLogic Workshop. I denne artikel, du opretter en web service manuelt.

Definition af en web service

Før du opretter din web service, skal du definere, hvad den vil gøre. Dette giver dig mulighed for at ordentligt konstruere den grænseflade, andre programmer skal overholde, hvis de ønsker at kommunikere med din web service.

Den mest grundlæggende design beslutning, hvilken af ​​de to generelle typer af web-tjenester, du vil oprette:

  • Synkron tjeneste
  • Asynkron tjeneste

En synkron web service, som er standard, begynder, når webservice modtager en besked. Denne webservice reagerer med det samme.

Synkron web services er mest nyttige, når kunden program kræver de data, der returneres fra anmodningen straks. Et eksempel på denne type data er den aktuelle aktiekurs for en bestemt virksomhed.

En asynkron webservice er asynkron, så beskeder kan udveksles frit mellem klienten og web service. En meddelelse fra den ene side forpligter ikke den anden til at sende en tilsvarende meddelelse. Når en klient sender en besked til en asynkron web service, behøver klienten ikke vente på en besked tilbage fra webtjenesten. Den webtjeneste kan sende en besked tilbage til kunden på et senere tidspunkt, men intet i sagens natur binder denne meddelelse til den oprindelige meddelelse, at klienten sendt.

Asynkrone webservices er et godt valg, når du sender oplysninger, der ikke kræver et svar. For eksempel kan du ønsker at en sende en besked til flere af dine servere, hvilket giver dem en ny hilsen meddelelsen for at vise til brugerne.

Valg og opbygge en backend komponent

Formålet med din web service er at give eksterne kunder at få adgang til tjenester, du leverer. Disse tjenester, kaldet backend komponent, tage form af Java-kode. Du kan opbygge din backend komponent som en af ​​følgende:

  • En metode til en statsløs session EJB
  • En fremgangsmåde til en Java-klasse
  • En JMS metode forbruger

WebLogic kan gøre nogen af ​​disse elementer til rådighed som en webservice. Dette gør det nemt at pakke eksisterende Java-kode som en web service. Hvis du allerede har oprettet statsløse session EJBs, kan du pakke dem som en webservice. Eller hvis der er din kode i regelmæssige Java-klasser, kan du give adgang til din klasse som en web service. Du kan også bruge JMS beskeder som en backend service til din web service.

Opbygning af en synkron web service

I dette afsnit bygger du en synkron web service ved hjælp af en almindelig Java-klasse og derefter bruge en statsløs session EJB. Først skal du skrive backend komponent. Dette vil være enten en Java-klasse, en statsløs EJB, eller en JMS metode forbruger.

Arbejde med en Java-klasse backend komponent

Du skal følge nogle få regler, når de gennemfører en webservice drift ved hjælp af Java-klasse:

  • Start ikke nogen tråde. Denne regel gælder for alle Java-kode, der kører på WebLogic Server.
  • Definer en standard ikke-argument constructor.
  • Definer som offentlig fremgangsmåderne Java-klasse, der vil blive afsløret som web service operationer.

Du skal skrive tråd-safe Java-kode, fordi WebLogic Server fastholder kun en enkelt forekomst af en Java-klasse, der implementerer en webservice operation, og hver påkaldelse af webservice bruger denne samme instans.

For et eksempel på at gennemføre en WebLogic webservice drift med en Java-klasse, gå til følgende mappe:

WL_HOME \ samples \ server \ src \ eksempler \ webservices \ grundlæggende \ javaclass

hvor WL_HOME refererer til de vigtigste bibliotek på din WebLogic Server installation. På en Windows-system, denne mappe er normalt C: \ BEA \ weblogic81.

Oversigt 1 viser en Java-klasse, som du kan bruge som en backend komponent. Denne Java-klasse indeholder en enkelt metode, opkaldt sampleMethod, der accepterer en int og returnerer en String.

Liste 1: Java Class Backend Component

pakke com.dummies.ejb;
public class SampleBackendComponent
{
public String sampleMethod (int num)
{
kontakt (num)
{
Case 1: return "One";
tilfælde 2: vende tilbage "Two";
Situation 3: vende tilbage "tre";
Case 4: vende tilbage "Fire"
tilfælde 5: returnere "Five";
tilfælde 6: returnere "Six";
tilfælde 7: returnere "Seven";
sag 8: return "Eight"
tilfælde 9: returnere "Nine";
sag 10: vende tilbage "Ten";
default: tilbagevenden "Nogle Number";
}
}
}

Arbejde med en statsløs session EJB backend komponent

Du kan også vælge at bygge din backend komponent som en statsløs session EJB. Skrivning Java-kode for en statsløs session EJB for en web service er ikke anderledes end at skrive en standalone EJB.

I web-services.xml indsættelsen deskriptor, kan du angive, at en web service operation er én måde, hvilket betyder, at kunden program, der påberåber sig webservice ikke vente på et svar. Når du skriver Java kode for EJB metode, der implementerer denne type operation, skal du angive, at den returnerer ugyldig.

Når du vælger mellem at bruge en EJB eller en Java-klasse backend komponent, overveje andre måder, hvorpå din backend komponent vil blive anvendt. Hvis din backend komponent vil blive almindeligt adgang som en EJB, bygge det som en EJB. Dette giver dig mulighed for at bruge den samme kode til både dit EJB og web service.

Betydeligt flere ressourcer skal kalde en webservice, end at kalde en EJB. På grund af dette, er det almindeligt at oprette alle dine backend komponenter som EJBs og derefter give eksterne applikationer adgang til din backend komponenter som web services. Din egen lokale applikationer, der kører på samme netværk som din WebLogic Server kan bruge hurtigere EJB kaldende metode.

Oversigt 2 viser bønne-fil, der implementerer EJB backend komponent. EJB backend komponent er næsten den samme som Java-klasse backend komponent. Den væsentligste forskel er den ekstra kode, der bruges til at støtte EJB.

Liste 2: EJB Backend Component

pakke com.dummies.ejb;
importere javax.ejb *.;
importere java.rmi *.;
importere javax.swing *.;
public class SampleBean implementerer SessionBean
{
privat SessionContext stx;
// Krævede metoder, der ikke anvendes af denne type bønne
public void ejbCreate () {}
public void ejbRemove () {}
public void ejbActivate () {}
public void ejbPassivate () {}
// Setter for SessionContext
public void setSessionContext (SessionContext CTX)
{
CTX = this.stx;
}
// Prøven metoden
public String sampleMethod (int num)
kaster RemoteException
{
kontakt (num)
{
Case 1: return "One";
tilfælde 2: vende tilbage "Two";
Situation 3: vende tilbage "tre";
Case 4: vende tilbage "Fire"
tilfælde 5: returnere "Five";
tilfælde 6: returnere "Six";
tilfælde 7: returnere "Seven";
sag 8: return "Eight"
tilfælde 9: returnere "Nine";
sag 10: vende tilbage "Ten";
default: tilbagevenden "Nogle Number";
}
}

}

Du skal angive, at Bean er statsløs EJB i EJB-jar.xml fil, som er vist i eksempel 3. Du kan bruge mange noder og attributter.

Liste 3: EJB-jar.xml fil til en backend Component

<! DOCTYPE EJB-krukke PUBLIC "- // Sun Microsystems, Inc .// DTD Enterprise JavaBeans 2.0 // EN '
»Http://java.sun.com/dtd/ejb-jar_2_0.dtd '>
<EJB-krukke>
<enterprise-bønner>
<Session>
<EJB-navn> SampleObject </ EJB-navn>
<Forside> com.dummies.ejb.SampleHome </ home>
<Remote> com.dummies.ejb.Sample </ remote>
<EJB klasse> com.dummies.ejb.SampleBean </ EJB klasse>
<Session-typen> Stateless </ session-typen>
<Transaktion type> Container </ transaktion type>
</ Session>
</ enterprise-bønner>
</ EJB-krukke>


© 2020 Zajacperrone.com | Contact us: webmaster# zajacperrone.com