我正在学习Jersey/JAX-RS,需要一些ExceptionMapper方面的帮助。
我有一个UserFacade类、AbstractFacade类和User类本身,它们都是非常标准的,主要是通过在NetBeans中创建一个新的Web服务RestFUL项目生成的。我的问题是,我想现在开始捕捉错误,比如“唯一约束违反”错误。我想我需要实现一个异常映射器...我的门面有以下内容:
@Provider public class EntityNotFoundMapper implements ExceptionMapper { @Override public javax.ws.rs.core.Response toResponse(PersistenceException ex) { return Response.status(404).entity(ex.getMessage()).type("text/plain").build(); } }
这是我得到的错误,它没有被我的自定义异常处理程序捕获。
WARNING: StandardWrapperValve[service.ApplicationConfig]: Servlet.service() for servlet service.ApplicationConfig threw exception com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'usernamegoeshere' for key 'username'
>
始终参数化ExceptionMapper
:
public class EntityNotFoundMapper
implements ExceptionMapper<PersistenceException> { ... }
MySQLIntegrityConstraintViolationException似乎没有扩展PersistenceException。若要捕获mysqlintegrityConstraintViolationException
,您需要直接为该类或其前身之一创建ExceptionMapper
,例如:
@Provider
public class MySqlIntegrityMapper
implements ExceptionMapper<MySQLIntegrityConstraintViolationException> {
@Override
public Response toResponse(MySQLIntegrityConstraintViolationException ex) {
return ...;
}
}
或者更通用的SQLException(因为MysqlintegrityConstraintViolationException
继承自它):
@Provider
public class SqlExceptionMapper implements ExceptionMapper<SQLException> {
@Override
public Response toResponse(SQLException ex) {
return ...;
}
}
我们可以通过 实现创建JAX-RS示例。 为此,需要加载 jersey相关jar文件或使用Maven框架。 在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey示例。 Jersey Jar文件下载网址:https://jersey.github.io/download.html 打开Eclipse,创建一个Web工程: restfuljersey,如下图所示 - JAX-
我有一个基本的REST web服务可以工作,但我确实有一个问题。下面是一个简短的代码片段。
问题内容: 在详尽搜索了Web和Stackoverflow之后,我仍然坚持尝试找出如何将Jersey所提供的RESTlet风格界面与Jetty相集成的方法。 我的Jetty服务器已经启动并正在运行,因此Jersey也很容易使用,有人知道如何将两者结合在一起吗?任何具体的链接都会有所帮助- 我对servlet编程也很陌生。 问题答案: 我前一段时间使用Jetty和Jersey创建了一个应用程序。它实
问题内容: 我正在努力弄清Java中的一些概念: JSR:描述规格,但不包含实际的实现。例如,http://jsr311.java.net/是“ RESTful Web服务的Java™API”的“主页”。它用作JSR-311的所有实现的通用参考。 可以从http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api下载JSR-311的接口(?),但
我有这个实体类 } 从数据库表生成。那么我有这个Rest服务 我(应该)使用jackson API来处理json,但我没有使用maven。因此,我在构建路径中添加了以下内容。罐: jackson-annotations-2.9.3。罐子 jackson-core-2.9.3。罐子 jackson-databind-2.9.3。罐子 jackson-jaxrs-base-2.9.3。罐子 jacks
我试图在was 8.5上部署使用jersey的jax-rs客户机应用程序。 我希望我不需要在war中打包jersey JAR,因为was将提供它们。 但在试图调用servlet时,我遇到了这个错误: 我可以做些什么来使用was库,这样我就不需要把它们打包在我的应用程序中了吗?