当前位置: 首页 > 面试题库 >

在Jax-RS(Jersey)上下文中,WebApplicationException和WebServiceException之间的区别

鞠嘉志
2023-03-14
问题内容

我正在创建Jersey网络服务,并且发现自己使用了上述两种异常类型。WebServiceException的构造函数允许您传递String作为WebApplicationException允许传递HTTP状态代码的原因。包括构造函数的区别,拥有这两种异常类型的目的是什么?

谢谢。


问题答案:

WebApplicationException是一种可以停止执行REST资源并将一些有意义的信息发送到客户端的方法。对于我一直在做的事情,我将此异常细分为子类,以便它具有将JSON作为错误消息生成给客户端的实现。如果发生错误情况,我们可以说一个丢失的文件,我可能会做这样的事情:

}catch(FileNotFoundException ex){
    throw new MyException(ex.getMessage());

客户端上,这将产生如下内容:

{ errorCode: 56, errorMessage: 'could not find file "input.txt"' };

http://download.oracle.com/javaee/6/api/javax/ws/rs/WebApplicationException.html

WebServiceException是Jersey的根运行时异常,即,它最常见是资源崩溃导致的结果,并导致HTTP 500。

http://download.oracle.com/javaee/5/api/javax/xml/ws/WebServiceException.html

因此,简短的答案是,第一个例外是您可能抛出的一个例外,另一个是您希望永不抛出的例外。:P

一个例子:

public class MyException extends WebApplicationException {

public MyException(JSONObject jsonObject) {
    super(Response.status(Response.Status.OK)
            .entity(jsonObject)
            .type(MediaType.APPLICATION_JSON)
            .build());
}

然后从您要停止执行并将错误信息发送到客户端的代码中的任何位置执行此操作:

}catch(FileNotFoundException ex){
    throw new MyException(new JSONObject(){{ this.put("errorCode", 4); .... }});


 类似资料:
  • 问题内容: 我正在努力弄清Java中的一些概念: JSR:描述规格,但不包含实际的实现。例如,http://jsr311.java.net/是“ RESTful Web服务的Java™API”的“主页”。它用作JSR-311的所有实现的通用参考。 可以从http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api下载JSR-311的接口(?),但

  • 我试图在was 8.5上部署使用jersey的jax-rs客户机应用程序。 我希望我不需要在war中打包jersey JAR,因为was将提供它们。 但在试图调用servlet时,我遇到了这个错误: 我可以做些什么来使用was库,这样我就不需要把它们打包在我的应用程序中了吗?

  • 我们可以通过 实现创建JAX-RS示例。 为此,需要加载 jersey相关jar文件或使用Maven框架。 在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey示例。 Jersey Jar文件下载网址:https://jersey.github.io/download.html 打开Eclipse,创建一个Web工程: restfuljersey,如下图所示 - JAX-

  • 我正在学习Jersey/JAX-RS,需要一些ExceptionMapper方面的帮助。 我有一个UserFacade类、AbstractFacade类和User类本身,它们都是非常标准的,主要是通过在NetBeans中创建一个新的Web服务RestFUL项目生成的。我的问题是,我想现在开始捕捉错误,比如“唯一约束违反”错误。我想我需要实现一个异常映射器...我的门面有以下内容: 这是我得到的错误

  • 我有一个基本的REST web服务可以工作,但我确实有一个问题。下面是一个简短的代码片段。

  • 我启动应用程序,登录页面不显示。当我打开登录页面时,它就像一个文档一样被下载了。我该怎么解决呢?

  • 问题内容: 之间有什么区别? JAX-WS axis2 CXF 这三个都可以用来在Java中创建Web服务。 据我所知,JAX-WS是一个 规范, 而Axis2和CXF是实现,但是如果我没看错的话,Java 1.6具有JAX-WS的实现。 因此,可以使用Java 1.6来开发JAX-WS Web服务而无需使用Axis2或CXF吗?那么Axis2,CXF的用途是什么? 问题答案: 内置到JDK中的J