Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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 Jersey/JAX-RS例外Apper MySQL_Java_Web Services_Rest_Jersey_Jax Rs - Fatal编程技术网

Java Jersey/JAX-RS例外Apper MySQL

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

我正在学习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的唯一原因是因为我只是想先捕获每个可能的错误(以确保其正常工作),然后在看到语法正常工作后,我会缩小范围并具体说明

我做错了什么

  • 始终参数化
    异常外观

    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 ...;
        }
    }