Lekkie usługi web z RESTEasy

Myślę, że o samym pojęciu REST nie ma co mówić, każdy szanujący się programista webowy musiał mieć styczność z tą technologią i chociaż pobieżnie wie co w reście piszczy. Ten wpis pokaże jak pracować z jedną z implementacji JAX-RS, czyli specyfikacji JavaEE opisującej jak powinno się robić RESTa po javowemu.

Obecnie RESTEasy jest częścią JBossa (jako firmy) i jest dostarczany z JBossem (jako serwerem), a więc do jego użycia wystarczy mieć zainstalowany lokalnie serwer JBoss w wersji 6. Oczywiście dla osób, które nie lubą JBossa jest opcja zainstalowania RESTEasy osobno, np. w kontenerze serwletów Tomcat. Po szczegóły zapraszam do dokumentacji. Plus użycia RESTEasy z JBossem jest taki, że bez żadnych dodatkowych kombinacji mamy zapewnioną integrację z CDI i EJB. Po prostu używamy.

Do rozpoczęcia pracy z potrzebujemy Mavena oraz IDE, w moim przypadku IntelliJ IDEA (codename Nika ;-) ). Cały projekt jest dostępny w moim repozytorium na Githubie.

Projekt tworzymy z poziomu linii komend przez wywołanie:

mvn archetype:generate

i z długiej listy dostępnych archetypów wybieramy opcję numer 142 - maven-archetype-webapp (An archetype which contains a sample Maven Webapp project.). Podajemy wymagane prametry:

Choose a number: 139: 142
Choose version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
Choose a number: 5:
Define value for property 'groupId': : org.demo.resteasy
Define value for property 'artifactId': : resteasy-demo
Define value for property 'version':  1.0-SNAPSHOT: :
Define value for property 'package':  org.demo.resteasy: :
Confirm properties configuration:
groupId: org.demo.resteasy
artifactId: resteasy-demo
version: 1.0-SNAPSHOT
package: org.demo.resteasy
Y: :

i projekt mamy gotowy.

Jednak dla komfortu pracy dodamy jeszcze serwer Jetty, aby móc odpalać aplikację za pomocą Mavena:

    <build>
        <finalName>resteasy-demo</finalName>
 
        <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.21</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <scanTargets>
                    </scanTargets>
                </configuration>
            </plugin>
        </plugins>
 
    </build>

Wystarczy z konsoli wpisać mvn jetty:run aby uruchomić cały projekt w kontenerze Jetty.

Trzeba dodać jeszcze repozytorium JBossa i zależności, ale ogólnie rzecz biorąc aplikacja oparta o RESTEasy jest zwykłym archiwum WAR. Szczegóły dotyczące repozytorium i zależności można doczytać w dokumentacji.

<repositories>
   <repository>
      <id>jboss</id>
      <url>http://repository.jboss.org/nexus/content/groups/public/</url>
   </repository>
</repositories>

Dodajemy zależności, w sumie jedną aby zacząć pracę:

<dependency>
   <groupId>org.jboss.resteasy</groupId>
   <artifactId>resteasy-jaxrs</artifactId>
   <version>2.2.1.GA</version>
</dependency>

pozostałe dodamy, gdy będą nam potrzebne. Pozostaje tylko użyć IDE do rozpoczęcia pracy.

Pierwszym elementem, jaki utworzę będzie interfejs

@Path("/library")
public interface Library {
 
    @GET
    @Path("/books")
    List<Book> getBooks();
 
    @PUT
    @Path("/book")
    public void addBook(Book book);
 
}

Kilka elementów wymaga wyjaśnienia:

  • @Path - adnotacja wskazuje pod jakim adresem URL będzie dostępny dany zasób
  • @GET i @POST - mówi na jakiego typu żądania będzie odpowiadać dana akcja

Mając interfejs pasuje utworzyć jego implementację, na potrzeby tego artykułu wystartczy taka:

public class LibraryImpl implements Library{
 
    private static List<Book> books = new ArrayList<Book>();
 
    public List<Book> getBooks() {
        return books;
    }
 
    public void addBook(Book book) {
        books.add(book);
    }
 
}

W rzeczywistym projekcie należy wstrzyknąć jakieś repozytorium (za pomocą @Inject) i ładować encję z bazy danych. To w sumie wystarczy aby odpalić naszą aplikację Webową za pomocą Jetty, a więc:

mvn jetty:run

Uruchamiamy przglądarkę i wpisujemy adres http://localhost:8080/, miłą funkcją serwera Jetty jest podpowiadanie uruchomionych aplikacji.

article/lekkie-uslugi-web-z-resteasy.txt · Last modified: 2011-11-04 16:19 by Lukasz Lenart
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki