Anche se il titolo è un po' troppo altisonante (infatti mi sono permesso di cambiarlo) questa è la notizia.
Anche se non è che Drupal mi esalti tantissimo (ho provato a capirlo, è un po' contorta la gestione e la creazione di un template, preferisco Joomla), mi esalta il fatto.
Finalmente è un dato di fatto che un prodotto open è allo stesso livello di uno closed e che si può fare affidamento su di esso.
lunedì 26 ottobre 2009
domenica 25 ottobre 2009
Spring 3 e i Web Services
Leggendo la documentazione di Spring 3 si dichiara che Spring supporta 2+1 modi di esporre i Web Services:
Rimangono quindi le altre due strade e fra le due scelgo volentieri quella JAX-WS, una specifica più recente di JAX-RPC, che permette di esporre come Web Services dei semplici POJO.
Per esporli al mondo esterno basta creare una Web Application ed esporre come servlet il POJO.
Vediamo quindi come è la classe che rappresente il Web Service.
@WebService(serviceName="TestService")
public class TestServiceEndpoint {
@WebMethod
public String sayHello() {
return "Hello";
}
}
Questa classe è un banalissimo POJO con 2 annotation una che dichiara che è un webservice, dal nome "TestService" e l'altra che dice che il metodo sayHello è un WebMethod. Ovviamente queste 2 annotations hanno molti altri parametri che permettono una configurazione minuziosa di tutto il Webservice, ma per l'esempio a noi va bene così.
Esponiamo ora il WebService al mondo. Basta creare una WebApplication e nel web.xml, dichiarare il POJO come servlet.
Questo basta per avere un bel WebService. Deploiando ad esempio su JBoss (purtroppo ci vuole un container j2EE per deploiare, ma ormai sono all'ordine del giorno) il gioco è fatto.
Bene, e fin qui abbiamo usato solo J2EE, neanche una traccia di Spring.
Come possiamo fare ad integrare Spring con JAX-WS?
Basta far si che il nostro POJO (o la nostra servlet, se così vogliamo pensarla) estenda SpringBeanAutowiringSupport. Facendo così si può accedere ai bean gestiti da Spring. L'unica limitazione è che queste due "parti" (il POJO e lo Spring context) devono girare nella stessa webApplication.
La classe diventa quindi
@WebService(serviceName="TestService")
public class TestServiceEndpoint extends SpringBeanAutowiringSupport {
@Autowired
private HelloService biz;
@WebMethod
public String sayHello() {
return biz.sayHello();
}
}
L'interfaccia HelloService viene, grazie all'annotation @Autowired, gestita da Spring: questo è il punto di unione tra le due tecnologie.
Per far funzionare il tutto dobbiamo fare una modifica anche al web.xml, aggiungendo la gestione dello SpringContext.
Quindi in fondo al web.xml si aggiunge
Per la parte Spring, basta creare l'xml ApplicationContext.xml (anche qui, si usano i default per velocità)
Qui si dice appunto che la classe che implementa helloService (notare la consonanza di nome tra l'interfaccia e l'id del bean, è uno dei modi in cui Spring ricerca i bean per il metodo @Autowired) è it.ws.test.HelloServiceImpl, che ovviamente implementerà l'interfaccia HelloService.
Tutto qua, nulla di più. Facile vero?
- via JAX-RPC
- via JAX-WS
- via Spring Web Services
Rimangono quindi le altre due strade e fra le due scelgo volentieri quella JAX-WS, una specifica più recente di JAX-RPC, che permette di esporre come Web Services dei semplici POJO.
Per esporli al mondo esterno basta creare una Web Application ed esporre come servlet il POJO.
Vediamo quindi come è la classe che rappresente il Web Service.
@WebService(serviceName="TestService")
public class TestServiceEndpoint {
@WebMethod
public String sayHello() {
return "Hello";
}
}
Questa classe è un banalissimo POJO con 2 annotation una che dichiara che è un webservice, dal nome "TestService" e l'altra che dice che il metodo sayHello è un WebMethod. Ovviamente queste 2 annotations hanno molti altri parametri che permettono una configurazione minuziosa di tutto il Webservice, ma per l'esempio a noi va bene così.
Esponiamo ora il WebService al mondo. Basta creare una WebApplication e nel web.xml, dichiarare il POJO come servlet.
Bene, e fin qui abbiamo usato solo J2EE, neanche una traccia di Spring.
Come possiamo fare ad integrare Spring con JAX-WS?
Basta far si che il nostro POJO (o la nostra servlet, se così vogliamo pensarla) estenda SpringBeanAutowiringSupport. Facendo così si può accedere ai bean gestiti da Spring. L'unica limitazione è che queste due "parti" (il POJO e lo Spring context) devono girare nella stessa webApplication.
La classe diventa quindi
@WebService(serviceName="TestService")
public class TestServiceEndpoint extends SpringBeanAutowiringSupport {
@Autowired
private HelloService biz;
@WebMethod
public String sayHello() {
return biz.sayHello();
}
}
L'interfaccia HelloService viene, grazie all'annotation @Autowired, gestita da Spring: questo è il punto di unione tra le due tecnologie.
Per far funzionare il tutto dobbiamo fare una modifica anche al web.xml, aggiungendo la gestione dello SpringContext.
Quindi in fondo al web.xml si aggiunge
Per la parte Spring, basta creare l'xml ApplicationContext.xml (anche qui, si usano i default per velocità)
Qui si dice appunto che la classe che implementa helloService (notare la consonanza di nome tra l'interfaccia e l'id del bean, è uno dei modi in cui Spring ricerca i bean per il metodo @Autowired) è it.ws.test.HelloServiceImpl, che ovviamente implementerà l'interfaccia HelloService.
Tutto qua, nulla di più. Facile vero?
giovedì 22 ottobre 2009
venerdì 16 ottobre 2009
IntelliJ è ora OpenSource!
JetBrains ha finalmente rilasciato il suo famoso IntelliJ anche sotto la community edition.
La notizia qua
Ed ora, usare, usare, usare!
La notizia qua
Ed ora, usare, usare, usare!
Iscriviti a:
Post (Atom)