Bom dia,
Eu tenho uma aplicação desktop pronta em Java Swing e Hibernate e gostaria de implementar alguns serviços REST sem mudar a estrutura do projeto para um WebApp, usando apenas Jersey e Grizzly. Eu simplesmente criei um pacote resources para os meus recursos JAX-RS. As entidades estão todas marcadas com @XmlRootElement.
No exemplo do curso eu deletei as pastas usadas em projeto web(webapp, web-inf, web.xml), importei as libs do projeto pelo Eclipse e deu certo...consegui testar os serviços sem web.xml, e etc...só que o projeto do curso não usa maven e já vem com todas as dependências "de mão beijada" e estou tendo dificuldades na escolha das dependências corretas...Quando eu acesso a url abaixo eu tenho erro 500...Eu queria gerar o xml usando jaxb...
http://localhost:8081/exemplo/categorias/1
Eu adicionei essas quatro dependências no meu pom.xml
<dependency>
<groupId>org.glassfish.grizzly</groupId>
<artifactId>grizzly-http-server</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
Minha classe de servidor:
package com.exemplo;
import java.io.IOException;
import java.net.URI;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
import com.floreantpos.model.dao.MenuCategoryDAO;
import com.floreantpos.util.DatabaseUtil;
public class GrizzlyServer {
public static final String BASE_URI = "http://localhost:8081/exemplo/";
public static HttpServer startServer() {
final ResourceConfig rc = new ResourceConfig().packages("com.floreantpos");
return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}
public static void main(String[] args) throws IOException {
final HttpServer server = startServer();
System.out.println(String.format("Servidor Grizzly inicializado", BASE_URI));
System.in.read();
server.stop();
}
}
Meu recurso:
package com.exemplo.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.exemplo.model.MenuCategory;
import com.exemplo.model.dao.MenuCategoryDAO;
@Path("categorias")
public class MenuCategoryResource {
@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_XML)
public MenuCategory busca(@PathParam("id") int id) {
MenuCategoryDAO categoryDao = new MenuCategoryDAO().getInstance();
return categoryDao.get(id);
}
}
Entidade:
package com.exemplo.model;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import org.apache.commons.lang.StringUtils;
@XmlRootElement(name = "menu-category")
@XmlAccessorType(XmlAccessType.FIELD)
public class MenuCategory extends BaseMenuCategory {
private static final long serialVersionUID = 1L;
public MenuCategory () {
}
...