Această regulă detectează prezenţa serviciilor web JAX-RPC pe baza următoarelor criterii:
- Prezenţa fişierului web-services.xml
- Prezenţa fişierului weblogic-webservices.xml şi
fişierului webservices.xml în acelaşi folder
Corecţia rapidă
În scanerul de sursă această regulă produce un script Ant cu anumite taskuri IBM (R) Ant. Aceste taskuri generează servicii web JAX-RPC
care sunt bazate pe descriptorii de implementare servicii web J2EE WebLogic.
Această corecţie rapidă scanează descriptorii de implementare
servicii web şi produce un script Ant dacă nu există un fişier generat IBM
Ant în folderul rădăcină al proiectului. Scriptul conţine taskuri IBM Ant pentru a genera
servicii web JAX-RPC.
Proprietăţi regulă
Trebuie să furnizaţi valorile corecte pentru proprietăţile regulii. Pentru a modifica valorile proprietăţilor pentru această regulă,
selectaţi regula în fereastra Software Analyzer Configurations. Apoi folosiţi câmpurile prezente în
fila Proprietăţi. Proprietăţile acestei reguli sunt:
- Nume script Ant generat
:
Specifică numele noului script Ant de generat. Numele de script
trebuie să fie un nume de fişier valid. Valoarea nu trebuie să includă niciun fel de slash, înainte sau înapoi. Script-ul generat va fi în folderul rădăcină al proiectului.
Valoarea implicită: build-ibm-ws.xml
- Nume folder generare :
Specifică numele directorului în care se va află artefactele de generare. Valoarea nu trebuie să includă niciun fel de slash, înainte sau înapoi. Folderul de generare va fi folderul rădăcină al proiectului.
Valoarea implicită: ibm-ws-gen
Cale clasă Ant
Calea clasei Ant este calculată din proiectul Eclipse.
Este important să verificaţi că toate elementele care sunt necesare pentru compilare sunt în calea de clasă Eclipse.
Serviciile JAX-RPC care sunt definite în fişierul web-services.xml
Bazat pe informaţiile şi tipul de servicii definite în
web-services.xml, un script Ant,
şi posibil un cod Java suplimentar care reprezintă interfaţa de punct final sunt generate pentru a reproduce serviciul JAX-RPC.
- Componente suportate
Pot fi recunoscute şi convertite doar bean-urile enterprise de sesiune stateless (<stateless-ejb>) şi componentele Java(R) (<java-class>).
- Componente EJB stateless:
Fişierul JAR EJB (Enterprise JavaBeans(TM)), aşa cum este definit în atributul de cale al elementului
<ejb-link>, trebuie să existe în proiect. Corecţia rapidă
scanează fişierul JAR EJB şi generează o nouă clasă SEI (Service
Endpoint Interface - interfaţă de punct final serviciu) bazat pe clasa EJB la distanţă.
Interfeţele SEI diferă de interfeţele EJB la distanţă prin faptul că clasa trebuie să extindă java.rmi.Remote,
şi fiecare metodă trebuie să arunce excepţia java.rmi.RemoteException.
Corecţia rapidă utilizează reflectarea Java pe interfaţa EJB la distanţă
pentru a genera noul SEI. Deoarece, calea de clasă a proiectului Eclipse
trebuie setată cu toate clasele, fişierele JAR, folderele şi celelalte necesare, pentru a permite corecţiei rapide să încarce corect clasa EJB la distanţă.
SEI este generat în folderul sei, din folderul de generare furnizat de utilizator în proprietăţile regulii.
Pachetul SEI se potriveşte cu pachetul interfeţei EJB la
distanţă, iar numele SEI va fi acelaşi cu al interfeţei EJB la
distanţă, cu cuvântul SEI adăugat la sfârşit. În plus, noul folder SEI este adăugat la calea de clase a proiectului.
- Componente clasă Java:
Similar cu componentele EJB, corecţia rapidă generează o interfaţă de punct final serviciu (SEI) din clasa Java care este definită în atributul <class-name>.
- Ţinte Ant generate:
Scriptul Ant generat conţine ţinte de generat fişierul WSDL şi serviciul JAX-RPC bazat pe noul SEI care a fost creat în timpul corecţiei rapide.
Ţinta de generare WSDL va avea numele, genWSDL_ssss, unde ssss
este numele serviciului JAX-RPC care a fost furnizat în câmpul de
atribut name al elementului <web-service>.
Ţintele de generare servicii au numele,
genService_pppp, unde pppp este numele componentei din atributul name
al elementului <stateless-ejb> sau
<java-class>.
Corecţia rapidă nu foloseşte informaţiile furnizate în alte elemente, cum ar fi <handlers-chain>, <types>,
<operations>, <security> ş.a.m.d.
Serviciile JAXRPC definite în fişierul webservices.xml
Bazat pe informaţiile şi tipurile de servicii definite în fişierul
webservices.xml este generat un script Ant pentru a reproduce serviciul JAX-RPC.
- Ţinte Ant generate:
Scriptul Ant generat conţine ţinte de generat fişierul WSDL şi serviciul JAX-RPC.
Ţinta de generare WSDL este generată doar dacă corecţia rapidă nu poate localiza fişierul WSDL aşa cum este definit în elementul
<wsdl-file>.
Dacă este creată, ţinta de generare WSDL are numele, genWSDL_ssss,
unde ssss este numele serviciului aşa cum este definit în
elementul <webservice-description-name>.
Ţintele de generare servicii vor avea numele,
genService_pppp, unde pppp este numele portului aşa cum este definit de elementul <port-component-name>.
Taskuri Ant IBM WebSphere Application Server
WebSphere(R) Application Server include taskuri Ant cum ar fi java2wsdl
şi wsdl2java pentru generarea artefactelor necesare pentru serviciile JAX-RPC.
Scriptul Ant generat utilizează aceste taskuri pentru a construi serviciul.
Informații suplimentare cu privire la aceste taskuri pot fi obținute din
documentația WebSphere Application Server.
Rulare script Ant
O dată ce corecţia rapidă produce un script Ant, vizualizaţi scriptul şi adăugaţi dacă este necesar personalizări suplimentare.
Consultați documentația serverului de aplicații privind personalizările suplimentare pentru taskurile IBM Ant.
Trebuie să rulați scriptul utilizând uneltele Ant
care sunt incluse în WebSphere Application Server. Scriptul IBM Ant
poate fi rulat de la:
- WAS_HOME\bin\ws_ant.bat pe sistemele de operare Windows(R)
- WAS_HOME\bin\ws_ant.sh pe sistemele de operare UNIX(R)
Exemplu: c:\IBM\AppServer\bin\ws_ant.bat -f
c:\eclipse\MyProject\ibm-ws-gen.xml genService_TestService
După ce ţintele Ant sunt rulate artefactele se găsesc în folderul de generare. Utilizatorul poate apoi să inspecteze codul generat şi descriptorii de implementare, apoi să adauge aceste artefacte la modulele lor.