Ho cercato di capire come sia possibile avviare Jersey in modalità standalone, cioè senza dover ricorrere ad inutili (per ora) complessità, come:
- application servers (e.g. Glasshfish)
- web containers (e.g. Tomcat)
- sistemi di build lenti e complicati (e.g.maven)
Ho scoperto che è possibile! La documentazione non è facile da trovare, sembra quasi che Oracle (ex Sun) spinga per complicarti la vita.
Se volete provare anche voi dovete prima di tutto procurarvi le librerie necessarie:
- grizzly-servlet-webserver-1.9.18-e.jar
- asm-3.1.jar
- jersey-core-1.1.5.jar
- jersey-server-1.1.5.jar
- jsr311-api-1.1.1.jar
Una volta aggiunte le librerie al progetto potete passare alla creazione della risorsa di esempio:
// file Hello.java
package learn.jersey.grizzly;
import javax.ws.rs.*;
@Path("/hello")
public class Hello {
@GET @Produces("text/plain")
public String sayHello() {
return "Hello World!";
}
}
E infine il main (che è cortissimo!):
// Main.java
package learn.jersey.grizzly;
import com.sun.grizzly.tcp.Adapter;
import com.sun.jersey.api.container.ContainerFactory;
import com.sun.jersey.api.container.grizzly.GrizzlyServerFactory;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
Adapter adapter = ContainerFactory.createContainer(Adapter.class, Hello.class);
GrizzlyServerFactory.create("http://localhost/", adapter);
}
}
Dopo aver avviato verificatene il funzionamento seguendo
http://localhost/hello.
Che bella la semplicità!