处理Jersey / GWT应用程序中的Post请求

时间:2015-10-28 21:31:01

标签: maven gwt jersey-2.0

我正在尝试使用基于Jersey的servlet(我现在正在学习)向基于GWT的Webprotege项目添加一些REST端点。 在web.xml文件中添加了一些Maven依赖项和servlet声明,我得到了它的工作。 我的iussue现在正在处理POST请求,因为传入的http正文在映射它的类中没有被解组。 GET请求工作。

这是我的虚拟类,它将包含所有RESTFul控制器:

@Path("hellos")
public class XlodAPIServiceImpl {

  @XmlRootElement
  public class Request{

      @XmlElement
      private String message;

      public Request(String message) {
          super();
          this.message = message;
      }
      public Request(){}
      public String getMessage() {
          return message;
      }
      public void setMessage(String message) {
          this.message = message;
      }
  }

  @POST
  @Produces("application/json")
  @Consumes("application/json")
  public Collection<String> get(Request request) {
      try {
          return new ArrayList<String>();
      } catch (Exception e) {
          // TODO: handle exception
          e.printStackTrace();
      }
return new ArrayList<String>();
  }
}

服务器让我总是500,没有任何stacktrace /有用的提示。 iussue可能与JSON解组有关,因为具有JSON响应的GET请求也按预期工作。

这是我在pom.xml文件中添加的内容:

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core"  -->
    <artifactId>jersey-container-servlet-core</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.3.2</version>
</dependency>

虽然这里是web.xml:

<servlet>
    <servlet-name>MyApplication</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>
            edu.stanford.bmir.protege.web.server
        </param-value>
    </init-param>       
</servlet>
<servlet-mapping>
    <servlet-name>MyApplication</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

连连呢? 提前谢谢,

FB

0 个答案:

没有答案