Cuprins:
- Definirea unui serviciu web
- Scopul serviciului dvs. Web este de a permite clienților de la distanță să acceseze serviciile pe care le furnizați. Aceste servicii, numite
- În această secțiune, construiți un serviciu web sincron folosind o clasă Java obișnuită și apoi utilizând o sesiune EJB fără stat. În primul rând, trebuie să scrieți componenta backend. Aceasta va fi fie o clasă Java, un stat membru EJB, fie o metodă JMS consumatoare.
Video: Crearea unui shortcut pe Desktop catre serviciile de mail sau aplicatii web pentru acces rapid 2024
Un serviciu web este o procedură de la distanță disponibilă clienților prin TCP / IP, de obicei folosind HTTP sau SMTP ca transport și XML pentru codificare. Serviciul web este descris utilizând notarea standard XML denumită descriere de serviciu . Un serviciu web îndeplinește o singură sarcină sau un set de sarcini.
Toate detaliile serviciului web sunt ascunse de utilizator, iar serviciul este atât hardware cât și software independent. Acest lucru îi încurajează pe dezvoltatorii de software să construiască aplicații constând în servicii mici, individuale, care apoi pot fi utilizate singure sau în grupuri pentru a îndeplini sarcini și mai complexe.
Puteți crea un serviciu web în două moduri: manual, prin crearea fișierelor sursă și de configurare Java sau utilizând un sistem GUI numit WebLogic Workshop. În acest articol, creați manual un serviciu web.
Definirea unui serviciu web
Înainte de a vă crea serviciul web, trebuie să definiți ce va face. Acest lucru vă permite să construiți în mod corespunzător interfața pe care alte aplicații trebuie să o respecte dacă doresc să comunice cu serviciul dvs. Web.
Decizia cea mai de bază de proiectare este care dintre cele două tipuri generale de servicii Web pe care le veți crea:
- Serviciu sincron
- Serviciu asincron
A , care este implicită, începe când serviciul web primește un mesaj. Acest serviciu web răspunde imediat. Serviciile web sincron sunt cele mai utile atunci când programul client cere imediat datele returnate din cerere. Un exemplu de acest tip de date este oferta curentă de stoc pentru o anumită companie.
asincron este asincron, astfel încât mesajele pot fi schimbate în mod liber între client și serviciul web. Un mesaj dintr-o parte nu obligă celălalt să trimită un mesaj corespunzător. Atunci când un client trimite un mesaj unui serviciu web asincron, clientul nu așteaptă un mesaj înapoi de la serviciul web. Serviciul web poate trimite un mesaj înapoi clientului mai târziu, dar nimic nu leagă în mod inerent acest mesaj de mesajul original trimis de client. Serviciile web asincrone sunt o alegere bună atunci când trimiteți informații care nu necesită un răspuns. De exemplu, poate doriți să trimiteți un mesaj către mai multe servere, oferindu-le un nou mesaj de salut pentru a fi afișat utilizatorilor.
Alegerea și construirea unei componente backend
Scopul serviciului dvs. Web este de a permite clienților de la distanță să acceseze serviciile pe care le furnizați. Aceste servicii, numite
componentele backend, iau forma codului Java.Aveți posibilitatea să construiți componenta backend ca fiind una dintre următoarele: O metodă a unei sesiuni fără statutul EJB
- O metodă de clasă Java
- O metodă JMS
- WebLogic poate face oricare dintre aceste elemente disponibile un serviciu web. Acest lucru face convenabil să pachete codul Java existent ca un serviciu web. Dacă ați creat deja EJB-uri de sesiune fără stat, le puteți pachete ca un serviciu web. Sau dacă codul dvs. există în clase obișnuite Java, puteți oferi acces la clasă ca serviciu web. De asemenea, puteți utiliza mesajele JMS ca serviciu backend pentru serviciul dvs. Web.
Construirea unui serviciu web sincron
În această secțiune, construiți un serviciu web sincron folosind o clasă Java obișnuită și apoi utilizând o sesiune EJB fără stat. În primul rând, trebuie să scrieți componenta backend. Aceasta va fi fie o clasă Java, un stat membru EJB, fie o metodă JMS consumatoare.
Lucrul cu o componentă Java backend de clasă
Trebuie să urmați câteva reguli atunci când implementați o operațiune de serviciu web utilizând o clasă Java:
Nu începeți nici un thread. Această regulă se aplică tuturor codurilor Java care rulează pe WebLogic Server.
- Definiți un constructor implicit fără argument.
- Definiți ca public metodele clasei Java care vor fi expuse ca operațiuni de serviciu web.
- Trebuie să scrieți un cod JavaScript sigur pentru fire deoarece serverul WebLogic menține numai o singură instanță a unei clase Java care implementează o operație web și fiecare invocare a serviciului web folosește aceeași instanță.
Pentru un exemplu de implementare a unei operații WebLogic Web Service cu o clasă Java, mergeți la următorul director:
WL_HOMEsamplesserversrcexampleswebservicesbasicjavclass
unde
WL_HOME se referă la directorul principal al instalării serverului WebLogic. Pe un sistem Windows, acest director este de obicei C: beaweblogic81. Lista 1 prezintă o clasă Java pe care o puteți utiliza ca o componentă de backend. Această clasă Java conține o singură metodă, numită sampleMethod, care acceptă un int și returnează un String.
Lista 1: Componenta Java Backend Component
pachet com. manechine. EJB;
public class SampleBackendComponent
{
public String sampleMethod (int num)
{ comutator (num)
{
caz 1:
cazul 2: întoarcerea "Doi";
cazul 3: returnați "Trei";
cazul 4: returnați "Patru";
cazul 5: returnați "Cinci";
cazul 6: întoarcerea "șase";
cazul 7: întoarcerea "Șapte";
cazul 8: returnați "Opt";
cazul 9: întoarcere "Nouă";
cazul 10: returnați "Zece";
implicit: returnați "Some Number";
}
}
}
Lucrul cu o sesiune fără starea EJB backend component
De asemenea, puteți alege să construiți componenta backend ca o sesiune EJB fără stat. Scrierea codului Java pentru o sesiune apatridă EJB pentru un serviciu web nu este diferită decât scrierea unui EJB independent.
În serviciile web. xml descriptor de implementare, puteți specifica că o operațiune de serviciu web este într-un fel, ceea ce înseamnă că aplicația client care invocă serviciul web nu așteaptă un răspuns.Când scrieți codul Java pentru metoda EJB care implementează acest tip de operație, trebuie să specificați că aceasta revine la zero.
Atunci când alegeți între utilizarea unei componente EJB sau a unei componente Java backend de clasă, luați în considerare celelalte moduri în care va fi utilizată componenta backend. Dacă componenta backend va fi accesată în mod obișnuit ca EJB, construiți-o ca EJB. Acest lucru vă permite să utilizați același cod atât pentru EJB, cât și pentru serviciul web.
Sunt necesare mai multe resurse pentru a apela un serviciu web decât pentru a apela un EJB. Din acest motiv, este obișnuit să creați toate componentele backend-ului ca EJB-uri și apoi să permiteți aplicațiilor externe să acceseze componentele dvs. backend ca servicii web. Aplicațiile dvs. locale, care rulează în aceeași rețea ca și serverul dvs. WebLogic, pot utiliza metoda de apelare mai rapidă EJB.
Lista 2 arată fișierul bean care implementează componenta backend EJB. Componenta backend pentru EJB este aproape identică cu cea a componentei backend din clasa Java. Principala diferență este codul suplimentar utilizat pentru a sprijini EJB.
Lista 2: Componenta EJB Backend Component
pachet com. manechine. EJB;
import javax. EJB. *;
import java. RMI. *;
import javax. leagăn. *;
public class SampleBean implementează SessionBean
{
private SessionContext stx;
Metodele necesare, care nu sunt utilizate de acest tip de fasole
public void ejbCreate () {}
public void ejbRemove () {}
public void ejbActivate ejbPassivate () {}
// setter pentru SessionContext
void public setSessionContext (SessionContext ctx)
{
ctx = this. STX;
// metoda de eșantionare
public String sampleMethod (int num)
aruncă RemoteException
{ comutator
Unu";
cazul 2: întoarcerea "Doi";
cazul 3: returnați "Trei";
cazul 4: returnați "Patru";
cazul 5: returnați "Cinci";
cazul 6: întoarcerea "șase";
cazul 7: întoarcerea "Șapte";
cazul 8: returnați "Opt";
cazul 9: întoarcere "Nouă";
cazul 10: returnați "Zece";
implicit: returnați "Some Number";
}
}
}
Trebuie să specificați că fasolea este un EJB apatrid în ejb-jar. xml, care este afișat în listare 3. Puteți utiliza mai multe noduri și atribute.
Lista 3: ejb-jar. Fișier xml pentru o componentă de backend
' // java. soare. com / dtd / EJB-jar_2_0. dtd ">
SampleObject
com. manechine. EJB. SampleHome
com. manechine. EJB. Proba
com. manechine. EJB. SampleBean
Apatrid
Container