我很想知道Glassfish/Payara使用的是JAX-RS的哪个json编组/解编框架,以及如何向其中添加自定义json映射器类。
我想为我的Enum类编写一个自定义序列化程序。我在pom中使用提供的范围。jaxrs的xml-javaee api,因此使用默认的Glassfish库。
我尝试使用@JsonValue
并编写了一个类来实现javax.ws.rs.ext.MessageBodyWriter
和JsonSerializer
这是我的枚举类:
public enum ErrorCode {
MY_ERROR(123456);
private int value;
ErrorCode(final int value) {
this.value = value;
}
@JsonValue
public int getValue() {
return value;
}
}
使用枚举的类:
public class ErrorInfo {
private ErrorCode errorCode;
public String toJson() {
try {
return new ObjectMapper().writer().withDefaultPrettyPrinter().writeValueAsString(this);
} catch (JsonProcessingException e) {
// TODO: do something here...
}
}
}
还有JAX-RS类,我想在其中以json的形式发回ErrorInfo实例:
@Provider
public class MyExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable throwable) {
...
return Response
.status(errorInfo.getHttpStatus())
.type(ExtendedMediaType.APPLICATION_JSON_UTF8)
.entity(errorInfo)
.build();
}
}
如果我使用上面的代码,那么值是“MY\u ERROR”字符串,而不是int 123456值。
如果我使用额外的错误信息。toJson()
方法,然后@JsonValue注释发挥了神奇的作用,但我希望避免编写额外的代码来处理枚举序列化问题。
在Glassfish/Payara中配置/添加额外枚举映射器类到默认JAX-RS json库的正确方法是什么?
默认情况下,Payara服务器使用MOXy映射到JSON或从JSON映射。如果您将Jackson添加到应用程序并将JacksonFeature添加到JAX-RS类中,您可以使用类似Jackson的替代方法:强制Glassfish4使用Jackson而不是Moxy
在即将推出的Payara 5中,它将支持Java EE 8,JSON编组将以JSON绑定规定的标准方式处理
问题内容: 我有一个使用Jersey构建的REST服务。 我希望能够根据发送到服务器的MIME设置我的自定义异常编写器的MIME。当接收到json和接收到xml 时返回。 现在我进行了硬编码,但这使XML客户端陷入了黑暗。 我可以利用什么上下文来获取当前请求? 谢谢! 根据答案更新 对于对完整解决方案感兴趣的其他人: 连同 其中ErrorResponseConverter是自定义JAXB POJO
问题内容: 我正在尝试使用异步响应构建REST Web服务。 我已经在网上解决了这个错误,但是,没有一种解决方案对我有用。我不确定如何去做。 这是REST服务的代码,它具有AsyncResponse,并且取自,我将在下面提供该文件中指定的jar文件。问题是,在部署战争时,我遇到一个例外: 我的课如下: 我的Maven文件如下: 问题答案: 是 当应用程序试图调用一个抽象方法抛出 。 是中的抽象方法
我使用Glassfish、EclipseLink和JAX-RS提供REST服务,该服务通过AngularJS/AJAX从网站调用。我返回一个类型为SalesOrder的JSON对象,该对象具有一个类型为List的名为lineItems的属性 我已经成功地调用了REST资源,并返回了一个表示父对象的JSON对象,但是,即使服务器端日志表明响应对象具有带有(2)对象的实体,客户端/浏览器端的JSON对
这并没有改变结果,而不是失败(应该失败),帖子仍然得到响应。我知道这些注释仍然需要一个验证器来验证它们。我是(假的?)在Jboss提供这样一个验证器的印象中。
现在,当我发送包含以下json数据的POST请求时: 它工作得很好,MOXY会自动将这个json映射到用户对象,很好 但我需要使用另一层嵌套来处理json,如下所示:
问题内容: 我一直在尝试使用NetBeans Ide创建一个简单的Restful WebService。 我的Java EE版本是:Java EE 7 Web。 我创建了一个新的Java Web应用程序,设置此ContexPath: 。 现在,运行我的应用程序,浏览器在以下位置显示我的页面: 因此,一切正常。 然后,我尝试使用RESTful Web服务向导创建一个简单的Restful资源。 因此,