Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS CXF异常包装_Java_Cxf_Jax Rs_Cxfrs - Fatal编程技术网

Java JAX-RS CXF异常包装

Java JAX-RS CXF异常包装,java,cxf,jax-rs,cxfrs,Java,Cxf,Jax Rs,Cxfrs,我想向CXF(2.6.1)添加一个ExceptionMapper,它不仅传递响应代码,还以有效负载格式发送异常(我现在使用JSON) @Provider 公共类CustomExceptionMapper 工具 例外情况 { ... @凌驾 公众响应(MyException mex) { //这里我需要一些东西,可以将mex对象转换为JSON并作为响应发送 //我希望这是反序列化的客户端 //下面返回状态代码 返回Response.status(Response.status.BAD_请求).bu

我想向CXF(2.6.1)添加一个ExceptionMapper,它不仅传递响应代码,还以有效负载格式发送异常(我现在使用JSON)

@Provider
公共类CustomExceptionMapper
工具
例外情况
{
...
@凌驾
公众响应(MyException mex)
{
//这里我需要一些东西,可以将mex对象转换为JSON并作为响应发送
//我希望这是反序列化的客户端
//下面返回状态代码
返回Response.status(Response.status.BAD_请求).build();
}
...
}

有没有办法做到这一点?

您可能需要使用@products将对象序列化为JSON,如:

@Produces(MediaType.APPLICATION_JSON)
然后
返回Response.ok().entity(OBJECT.build()

您可以测试服务的方式:

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
ClientResponse response = service.path(ADDRESS).type("application/json").get(ClientResponse.class);
String s = response.getEntity(String.class);
System.out.println(s); 

private static URI getBaseURI() {
        return UriBuilder.fromUri(SERVER ADDRESS).build();
}

您可能需要使用@products将对象序列化为JSON,如:

@Produces(MediaType.APPLICATION_JSON)
然后
返回Response.ok().entity(OBJECT.build()

您可以测试服务的方式:

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
ClientResponse response = service.path(ADDRESS).type("application/json").get(ClientResponse.class);
String s = response.getEntity(String.class);
System.out.println(s); 

private static URI getBaseURI() {
        return UriBuilder.fromUri(SERVER ADDRESS).build();
}

谢谢你的回复。但我想返回状态500或400,但不是200。有办法吗?找到了。这就是Response.ok(mex,MediaType.APPLICATION_JSON).status(Response.status.BAD_REQUEST.build();在客户端,我必须添加拦截器吗?似乎非200响应在我的服务器上被阻止了不应该被阻止。您是否使用Tomcat作为servlet?是的,它是Tomcat。是的。。我得到了一个类型为org.apache.cxf.jaxrs.client.ServerWebApplicationException的异常。如何从中获取“MyException”?感谢您的回复。但我想返回状态500或400,但不是200。有办法吗?找到了。这就是Response.ok(mex,MediaType.APPLICATION_JSON).status(Response.status.BAD_REQUEST.build();在客户端,我必须添加拦截器吗?似乎非200响应在我的服务器上被阻止了不应该被阻止。您是否使用Tomcat作为servlet?是的,它是Tomcat。是的。。我得到一个类型为org.apache.cxf.jaxrs.client.ServerWebApplicationException的异常如何从中获取“MyException”?