java – 如何配置嵌入式jetty来访问Jersey资源?

前端之家收集整理的这篇文章主要介绍了java – 如何配置嵌入式jetty来访问Jersey资源?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试配置嵌入式jetty来与我的Jersey资源交谈,但我无法弄清楚如何做到这一点.我尝试过几种不同的东西但似乎没什么用. jetty教程并没有真正处理如何使用Jersey.任何代码建议或链接都​​非常感谢

编辑:

  1. package pojo;
  2.  
  3. import org.eclipse.jetty.server.Server;
  4. import org.eclipse.jetty.servlet.DefaultServlet;
  5. import org.eclipse.jetty.servlet.ServletContextHandler;
  6. import org.eclipse.jetty.servlet.ServletHolder;
  7. import org.glassfish.jersey.servlet.ServletContainer;
  8.  
  9. public class Main {
  10.  
  11. public static void main(String[] args) throws Exception {
  12. Server server = new Server(8112);
  13. ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
  14. context.setContextPath("/");
  15. server.setHandler(context);
  16. ServletHolder h = new ServletHolder(new ServletContainer());
  17. h.setInitParameter("com.sun.jersey.config.property.resourceConfigClass","com.sun.jersey.api.core.PackagesResourceConfig");
  18. h.setInitParameter("com.sun.jersey.config.property.packages","resources");
  19. h.setInitOrder(1);
  20. context.addServlet(h,"/*");
  21. try
  22. {
  23. server.start();
  24. server.join();
  25. }
  26. catch (Throwable t)
  27. {
  28. t.printStackTrace(System.err);
  29. }

试图连接到这个类:

  1. package resources;
  2.  
  3.  
  4. import javax.ws.rs.GET;
  5. import javax.ws.rs.Path;
  6. import javax.ws.rs.Produces;
  7. import javax.ws.rs.core.MediaType;
  8. import javax.ws.rs.PathParam;
  9. import javax.ws.rs.core.Context;
  10. import javax.ws.rs.core.Request;
  11. import javax.ws.rs.core.UriInfo;
  12.  
  13. import com.codahale.metrics.MetricRegistry;
  14. import com.codahale.metrics.Timer;
  15.  
  16.  
  17. import java.util.ArrayList;
  18. import java.util.List;
  19.  
  20. import pojo.Party;
  21.  
  22. @Path("/parties")
  23. public class AllPartiesResource {
  24.  
  25. @Context
  26. UriInfo url;
  27.  
  28. @Context
  29. Request request;
  30.  
  31. String name;
  32.  
  33. public static final Timer allTime = DBConnection.registry.timer(MetricRegistry.name("Timer","all-parties"));
  34.  
  35. @GET
  36. @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
  37. public List<Party> getAllParties() throws Exception
  38. {
  39. final Timer.Context context=allTime.time(); //start the timer
  40. List<Party> list = new ArrayList<Party>();
  41. DBConnection.readAllData();
  42. list.addAll(DBConnection.getPartyCollection().values());
  43. context.stop(); //stops timer
  44. return list;
  45.  
  46. // ---> code for Jackson
  47. // String string;
  48. // DBConnection.readAllData();
  49. // ObjectMapper jsonMapper = new ObjectMapper();
  50. // string=jsonMapper.writeValueAsString(DBConnection.getPartyCollection());
  51. // return string;
  52. }
  53.  
  54. @GET
  55. @Path("count")
  56. @Produces(MediaType.TEXT_PLAIN)
  57. public String getPartyCount() throws Exception
  58. {
  59. DBConnection.readAllData();
  60. return String.valueOf(DBConnection.getPartyCollection().size());
  61. }
  62.  
  63. @Path("{party}") //points to OnePartyResource.class
  64. public OnePartyResource getParty(@PathParam("party")String party)
  65. {
  66. name = party;
  67. return new OnePartyResource(url,request,party);
  68. }
  69. }

解决方法

您在代码中混合了两个版本的Jersey – 来自Jersey 2.x的ServletContainer(包org.glassfish.jersey.*)和来自Jersey 1.x的属性(包/前缀com.sun.jersey.*).

要使用Jersey 2.x部署您的应用,请更改这两行

  1. h.setInitParameter("com.sun.jersey.config.property.resourceConfigClass","com.sun.jersey.api.core.PackagesResourceConfig");
  2. h.setInitParameter("com.sun.jersey.config.property.packages","resources");

从你的主要方法

  1. h.setInitParameter(ServerProperties.PROVIDER_PACKAGES,"resources");

并查看其他ServerProperties您可能会觉得有用.

猜你在找的Java相关文章