Java Jersey/JAX-RS例外Apper MySQL
我正在学习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(); } } @提供者 公共类EntityNotFoundMapper实现ExceptionMapper{ @凌驾 public javax.ws.rs.core.Response to响应(PersistenceException ex){ 返回Response.status(404).entity(例如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' 警告:StandardWrapperValve[service.ApplicationConfig]:Servlet服务的Servlet.service()引发异常 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:键“username”的重复条目“usernamegosher” 我觉得我很接近了,我不想从上面的例子中捕获MySQLIntegrityConstraintViolationException的唯一原因是因为我只是想先捕获每个可能的错误(以确保其正常工作),然后在看到语法正常工作后,我会缩小范围并具体说明 我做错了什么Java Jersey/JAX-RS例外Apper MySQL,java,web-services,rest,jersey,jax-rs,Java,Web Services,Rest,Jersey,Jax Rs,我正在学习Jersey/JAX-RS,我需要一些关于ExceptionMapper的帮助 我有一个UserFacade类、AbstractFacade类和User类本身,它们都是非常标准的,主要是通过在Netbeans中创建一个新的Web服务RestFUL项目和数据库生成的。我的问题是,我现在想开始捕捉错误,比如“唯一约束冲突”错误。我想我需要实现一个异常映射器。。。我的门面上有以下内容: @Provider public class EntityNotFoundMapper imple
异常外观
:
public class EntityNotFoundMapper
implements ExceptionMapper<PersistenceException> { ... }
或者对于更一般的(如MySQLIntegrityConstraintViolationException继承自它):
@Provider
公共类SqlExceptionMapper实现ExceptionMapper{
@凌驾
公共响应(SQLException ex){
返回。。。;
}
}
你知道我在哪里可以找到一个例子来说明如何做你答案的第二部分吗?非常感谢你迄今为止的帮助,我感觉我就快到了。现在我得到了以下错误:
警告:检测到以下警告:警告:针对[service.UserFacadeREST$sqlexceptionapper]的HK2服务具体化失败,出现异常:2 java.lang.NoSuchMethodException的多异常堆栈1:无法实例化service.UserFacadeREST$sqlexceptionapper类。不支持非静态成员类的实例化。
您的sqlexceptionapper
是UserFacadeREST
中的内部类。使sqlexceptionapper
静态(公共静态类sqlexceptionapper实现exceptionapper{…}
),或者更好地使其成为UserFacadeREST
之外的常规类。谢谢您,先生,我希望能给您买杯咖啡、苏打水或其他东西:)
@Provider
public class MySqlIntegrityMapper
implements ExceptionMapper<MySQLIntegrityConstraintViolationException> {
@Override
public Response toResponse(MySQLIntegrityConstraintViolationException ex) {
return ...;
}
}
@Provider
public class SqlExceptionMapper implements ExceptionMapper<SQLException> {
@Override
public Response toResponse(SQLException ex) {
return ...;
}
}