我目前面临泽西岛和杰克逊的问题,我找不到解决方案:当我试图从JSON序列化POJO作为POST参数一个Jersey-Endpoint,如果我从uberjar调用它,它会返回一个错误。如果我在eclipse启动main方法后使用相同的wget-call,一切正常,我可以得到预期的答案。我搜索了使用球衣和后参数应用程序类型时遇到问题的其他人,如Error 415 Unsupported Media Type: POST not reaching REST if JSON, but it does if XML和JAX-RS: How to automatically serialize a collection when returning a Response object?,但是他们没有在调用中指定标题或使用错误的主要错误@ Consumes-tags,我这样做不。根据我的研究,没有人遇到类似的问题,即服务器从eclipse启动时调用起作用,但在服务器从外部启动时不起作用。从uberjar使用泽西和杰克逊不支持的媒体类型
启动服务器类如下:
public class ServerStarter {
public static final String BASE_URI = "http://localhost:8282/test/";
public static void main(String[] args) throws IOException {
final ResourceConfig rc = new ResourceConfig().packages("starter");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
System.out.println(String.format("Drücke Enter um Server zu beenden.", BASE_URI));
System.in.read();
server.stop();
}
}
和端点看起来是这样的:
@Path("testme")
public class Endpoint {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String testMe(Parameters ep) {
return ep.toString();
}
}
,参数级,这应该是POJO,看起来是这样的:
public class Parameters {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
如果我做mvn clean package assembly:single,启动服务器,然后调用wget localhost:8282/test/testme --post-data='{"x": 10 }' --header="Content-Type: application/json"
,它返回415 Unsupported Media Type
。
在pom.xml的依赖如下:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.13</version>
</dependency>
有谁知道如何解决这个问题?据我所知,我没有线索,eclipse的调用应该与uberjar中的调用类似。
也许从JAX-RS 1.0开始语法已经发生了变化,但不应该是@Consumes值中的一个字符串数组,例如'@Consumes({MediaType.APPLICATION_JSON})'? – nitind 2014-09-30 20:37:31
我遇到了与Jetty类似的问题:http://stackoverflow.com/questions/27971384/jetty-jersey-jackson-different-behavior-in-eclipse-success-vs-command-lin – Whimusical 2015-01-15 22:03:50
我有同样的问题和我能够解决它通过使用http://stackoverflow.com/questions/27971384/jetty-jersey-jackson-different-behavior-in-eclipse-success-vs-command-lin/40843828#40843828 – gihan 2016-11-28 12:03:37