ro.anaf.ws.HelloWorldWS
package ro.anaf.ws;
import javax.ejb.Remote;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style = Style.RPC)
@Remote
public interface HelloWorldWS
{
@WebMethod
public String helloWorld();
@WebMethod
public String receiveBinary(String s);
}
ro.anaf.ws.HelloWorldWSBean
package ro.anaf.ws;
import javax.ejb.Stateless;
import javax.jws.WebService;
@Stateless
@WebService(endpointInterface = "ro.anaf.ws.HelloWorldWS")
public class HelloWorldWSBean implements HelloWorldWS
{
public String helloWorld()
{
return "Salutari de pe WS";
}
public String receiveBinary(String s)
{
return "Am primat binarul: \"" + s + "\"";
}
}
Se poate remarca usor ca interfata reprezinta de fapt endpointul pentru serviciul web de test in timp ce clasa reprezinta implementarea operatiilor din endpoint. In acest moment serviciul web este implementat. Pentru a face deploy nu ramane decat sa creati un nou proiect de tip Enterprise Application si sa alegeti un server pe care sa faceti deploy. Personal, am folosit JBoss 4.2.3(ultima versiune stabila la aceasta data), dar puteti folosi orice alt container doriti. Dupa ce ati facut deploy la proiect puteti folosi adresa: http://localhost:8080/jbossws pentru a vizualiza lista de servicii web existente pe acest server. Ar trebui sa localizati si serviciul web pe care l-ati creat. In acest moment partea de java este incheiata.
Discutam acum de partea de oracle. Pentru inceput va trebui sa downloadati dbws-callout-utility-10131.zip. Dupa ce ati downloadat aceasta arhiva dezarhivati-o. In functie de versiunea utilizata va trebui sa executati una din comenzile de mai jos:
# 10gR2Obs: daca serverul nu ruleaza pe aceeasi masina pe care faceti development este posibil sa nu aveti utilitarul loadjava. Acesta este inclus in pachetul de developer ce poate fi downloadat gratuit de pe site-ul http://www.oracle.com.
loadjava -u scott/tiger -r -v -f -genmissing dbwsclientws.jar dbwsclientdb102.jar
# 11g
loadjava -u scott/tiger -r -v -f -genmissing dbwsclientws.jar dbwsclientdb11.jar
Dupa ce ati executat pasii de mai sus, nu mai trebuie decat sa rulati scriptul urmator care realizeaza un test pentru metoda helloWorld:
declare
webservice utl_dbws.service;
webserviceCall utl_dbws.call;
wsdlURL VARCHAR2(1000) := 'http://10.18.14.32:8080/TestareServiciiEAR-ServiciiWeb/HelloWorldWSBean?wsdl';
webserviceNS VARCHAR2(1000) := 'http://ws.anaf.ro/';
webserviceName utl_dbws.qname;
webservicePort utl_dbws.qname;
webserviceOperation utl_dbws.qname;
params utl_dbws.anydata_list;
results anydata;
begin
webserviceName := utl_dbws.to_qname(webserviceNS, 'HelloWorldWSBeanService');
webservicePort := utl_dbws.to_qname(webserviceNS, 'HelloWorldWSBeanPort');
webserviceOperation := utl_dbws.to_qname(webserviceNS, 'helloWorld');
webservice := utl_dbws.create_service(wsdl_document_location => HTTPURITYPE(wsdlURL),
service_name => webservicename);
webserviceCall := utl_dbws.create_call(service_handle => webservice,
port_name => webservicePort,
operation_name => webserviceOperation);
results := utl_dbws.invoke(call_handle => webserviceCall, input_params => params);
utl_dbws.release_service(webservice);
utl_dbws.release_call(webserviceCall);
DBMS_OUTPUT.PUT_LINE(ANYDATA.AccessVarchar2(results));
end;
Setarile variabilelor: wsdlURL si webserviceNS le gasiti in wsdl. La fel si numele serviciului si numele portului. La executia blocului pl/sql de mai sus ar trebui sa primiti mesajul: 'Salutari de pe WS'.
La cele mentionate anterior mai exista un caz posibil care ar putea aparea: transmiterea parametrilor catre operatia serviciului web. Pentru a putea transmite parametrii trebuie sa utilizati vectorul params. De exemplu, pentru a adauga un parametru:
params(0):=ANYDATA.ConvertVarchar2('Cosnita Radu Viorel');
Pentru mai multe informatii consultati documentatia pentru ANYDATA.
Cam asta ar fi pentru azi. Nu ezitati sa adaugati comentarii despre acest articol.
Radu!
Niciun comentariu:
Trimiteți un comentariu