微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用HikariCP连接池时收到“对象不是声明类的实例”错误

如何解决使用HikariCP连接池时收到“对象不是声明类的实例”错误

我一直在我的dropwizard项目中启用工作单元概念(如Spring Boot中的@Transaction)。我正在使用 dropwizard-guice (用于扩展程序和自定义安装程序的自动配置), guicey-jdbi (用于资源和方法级别的事务处理以及jdbi存储库的自动安装)。 guicey-jdbi 提供 @InTransaction 批注,用于在资源级别实现交易。

这些更改之后,我已经测试了我的API,并且@InTransaction运行正常。在为数据库池监视引入了 HikarCP 之后,用@InTransaction注释的资源在API调用上引发了错误(还附加了堆栈跟踪)。在我的本地系统(Macbook Pro)上不会发生此问题,但在Azure扩展坞中会发生此问题。我多次重启了微服务,然后问题自行解决(即使在重新启动几次后,API也失败了,在3-4次重启后,API自行解决了)。 我现在将分支推到master分支,而master分支也遇到了同样的问题。在解决问题时需要一些帮助。

堆栈跟踪:

java.lang.IllegalArgumentException: object is not an instance of declaring class
sun.reflect.NativeMethodAccessorImpl in invoke0
sun.reflect.NativeMethodAccessorImpl in invoke at line 62
sun.reflect.DelegatingMethodAccessorImpl in invoke at line 43
java.lang.reflect.Method in invoke at line 498
ru.vyarus.guicey.jdbi.installer.repository.RepositoryInstaller in lambda$bind$0 at line 59
ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in lambda$invoke$0 at line 26
ru.vyarus.guicey.jdbi.tx.TransactionTemplate in inTransaction at line 52
ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in invoke at line 24
com.playment.heimdall.managers.DBManager in signup at line 90
ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in lambda$invoke$0 at line 26
ru.vyarus.guicey.jdbi.tx.TransactionTemplate in inTransaction at line 52
ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in invoke at line 24
com.playment.heimdall.services.AccountService in createuser at line 149
com.playment.heimdall.resources.AccountResource in createuser at line 147
ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in lambda$invoke$0 at line 26
ru.vyarus.guicey.jdbi.tx.TransactionTemplate in lambda$inTransaction$0 at line 61
org.skife.jdbi.v2.tweak.transactions.LocalTransactionHandler in inTransaction at line 183
org.skife.jdbi.v2.BasicHandle in inTransaction at line 338
ru.vyarus.guicey.jdbi.tx.TransactionTemplate in inTransaction at line 61
ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in invoke at line 24
sun.reflect.NativeMethodAccessorImpl in invoke0
sun.reflect.NativeMethodAccessorImpl in invoke at line 62
sun.reflect.DelegatingMethodAccessorImpl in invoke at line 43
java.lang.reflect.Method in invoke at line 498
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory in lambda$static$0 at line 52
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher$1 in run at line 124
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher in invoke at line 167
org.glassfish.jersey.server.model.internal.JavaResourceMethoddispatcherProvider$ResponSEOutInvoker in dodispatch at line 176
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher in dispatch at line 79
org.glassfish.jersey.server.model.ResourceMethodInvoker in invoke at line 469
org.glassfish.jersey.server.model.ResourceMethodInvoker in apply at line 391
org.glassfish.jersey.server.model.ResourceMethodInvoker in apply at line 80
org.glassfish.jersey.server.ServerRuntime$1 in run at line 253
org.glassfish.jersey.internal.Errors$1 in call at line 248
org.glassfish.jersey.internal.Errors$1 in call at line 244
org.glassfish.jersey.internal.Errors in process at line 292
org.glassfish.jersey.internal.Errors in process at line 274
org.glassfish.jersey.internal.Errors in process at line 244
org.glassfish.jersey.process.internal.RequestScope in runInScope at line 265
org.glassfish.jersey.server.ServerRuntime in process at line 232
org.glassfish.jersey.server.ApplicationHandler in handle at line 680
org.glassfish.jersey.servlet.WebComponent in serviceImpl at line 394
org.glassfish.jersey.servlet.WebComponent in service at line 346
org.glassfish.jersey.servlet.ServletContainer in service at line 366
org.glassfish.jersey.servlet.ServletContainer in service at line 319
org.glassfish.jersey.servlet.ServletContainer in service at line 205
io.dropwizard.jetty.NonblockingServletHolder in handle at line 50
org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1651
io.dropwizard.servlets.ThreadNameFilter in doFilter at line 35
org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1638
io.dropwizard.jersey.filter.AllowedMethodsFilter in handle at line 47
io.dropwizard.jersey.filter.AllowedMethodsFilter in doFilter at line 41
org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1638
com.google.inject.servlet.FilterChainInvocation in doFilter at line 89
com.google.inject.servlet.ManagedFilterPipeline in dispatch at line 121
com.google.inject.servlet.GuiceFilter in doFilter at line 133
org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1638
org.eclipse.jetty.servlet.ServletHandler in doHandle at line 567
org.eclipse.jetty.server.handler.ScopedHandler in nextHandle at line 233
org.eclipse.jetty.server.handler.ContextHandler in doHandle at line 1377
org.eclipse.jetty.server.handler.ScopedHandler in nextScope at line 188
org.eclipse.jetty.servlet.ServletHandler in doScope at line 507
org.eclipse.jetty.server.handler.ScopedHandler in nextScope at line 186
org.eclipse.jetty.server.handler.ContextHandler in doScope at line 1292
org.eclipse.jetty.server.handler.ScopedHandler in handle at line 141
org.eclipse.jetty.server.handler.HandlerWrapper in handle at line 127
com.codahale.metrics.jetty9.InstrumentedHandler in handle at line 249
io.dropwizard.jetty.RoutingHandler in handle at line 52
org.eclipse.jetty.server.handler.gzip.GzipHandler in handle at line 717
org.eclipse.jetty.server.handler.RequestLogHandler in handle at line 54
org.eclipse.jetty.server.handler.StatisticsHandler in handle at line 173
org.eclipse.jetty.server.handler.HandlerWrapper in handle at line 127
org.eclipse.jetty.server.Server in handle at line 501
org.eclipse.jetty.server.HttpChannel in lambda$handle$1 at line 383
org.eclipse.jetty.server.HttpChannel in dispatch at line 556
org.eclipse.jetty.server.HttpChannel in handle at line 375
org.eclipse.jetty.server.httpconnection in onFillable at line 273
org.eclipse.jetty.io.AbstractConnection$ReadCallback in succeeded at line 311
org.eclipse.jetty.io.FillInterest in fillable at line 105
org.eclipse.jetty.io.ChannelEndPoint$1 in run at line 104
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in runTask at line 336
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in doProduce at line 313
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in tryProduce at line 171
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in run at line 129
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread in run at line 375
org.eclipse.jetty.util.thread.QueuedThreadPool in runJob at line 806
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner in run at line 938
java.lang.Thread in run at line 748

相关代码 java.lang.IllegalArgumentException: object is not an instance of declaring class sun.reflect.NativeMethodAccessorImpl in invoke0 sun.reflect.NativeMethodAccessorImpl in invoke at line 62 sun.reflect.DelegatingMethodAccessorImpl in invoke at line 43 java.lang.reflect.Method in invoke at line 498 ru.vyarus.guicey.jdbi.installer.repository.RepositoryInstaller in lambda$bind$0 at line 59 ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in lambda$invoke$0 at line 26 ru.vyarus.guicey.jdbi.tx.TransactionTemplate in inTransaction at line 52 ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in invoke at line 24 com.playment.heimdall.managers.DBManager in signup at line 90 ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in lambda$invoke$0 at line 26 ru.vyarus.guicey.jdbi.tx.TransactionTemplate in inTransaction at line 52 ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in invoke at line 24 com.playment.heimdall.services.AccountService in createuser at line 149 com.playment.heimdall.resources.AccountResource in createuser at line 147 ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in lambda$invoke$0 at line 26 ru.vyarus.guicey.jdbi.tx.TransactionTemplate in lambda$inTransaction$0 at line 61 org.skife.jdbi.v2.tweak.transactions.LocalTransactionHandler in inTransaction at line 183 org.skife.jdbi.v2.BasicHandle in inTransaction at line 338 ru.vyarus.guicey.jdbi.tx.TransactionTemplate in inTransaction at line 61 ru.vyarus.guicey.jdbi.tx.aop.TransactionalInterceptor in invoke at line 24 sun.reflect.NativeMethodAccessorImpl in invoke0 sun.reflect.NativeMethodAccessorImpl in invoke at line 62 sun.reflect.DelegatingMethodAccessorImpl in invoke at line 43 java.lang.reflect.Method in invoke at line 498 org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory in lambda$static$0 at line 52 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher$1 in run at line 124 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher in invoke at line 167 org.glassfish.jersey.server.model.internal.JavaResourceMethoddispatcherProvider$ResponSEOutInvoker in dodispatch at line 176 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher in dispatch at line 79 org.glassfish.jersey.server.model.ResourceMethodInvoker in invoke at line 469 org.glassfish.jersey.server.model.ResourceMethodInvoker in apply at line 391 org.glassfish.jersey.server.model.ResourceMethodInvoker in apply at line 80 org.glassfish.jersey.server.ServerRuntime$1 in run at line 253 org.glassfish.jersey.internal.Errors$1 in call at line 248 org.glassfish.jersey.internal.Errors$1 in call at line 244 org.glassfish.jersey.internal.Errors in process at line 292 org.glassfish.jersey.internal.Errors in process at line 274 org.glassfish.jersey.internal.Errors in process at line 244 org.glassfish.jersey.process.internal.RequestScope in runInScope at line 265 org.glassfish.jersey.server.ServerRuntime in process at line 232 org.glassfish.jersey.server.ApplicationHandler in handle at line 680 org.glassfish.jersey.servlet.WebComponent in serviceImpl at line 394 org.glassfish.jersey.servlet.WebComponent in service at line 346 org.glassfish.jersey.servlet.ServletContainer in service at line 366 org.glassfish.jersey.servlet.ServletContainer in service at line 319 org.glassfish.jersey.servlet.ServletContainer in service at line 205 io.dropwizard.jetty.NonblockingServletHolder in handle at line 50 org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1651 io.dropwizard.servlets.ThreadNameFilter in doFilter at line 35 org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1638 io.dropwizard.jersey.filter.AllowedMethodsFilter in handle at line 47 io.dropwizard.jersey.filter.AllowedMethodsFilter in doFilter at line 41 org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1638 com.google.inject.servlet.FilterChainInvocation in doFilter at line 89 com.google.inject.servlet.ManagedFilterPipeline in dispatch at line 121 com.google.inject.servlet.GuiceFilter in doFilter at line 133 org.eclipse.jetty.servlet.ServletHandler$CachedChain in doFilter at line 1638 org.eclipse.jetty.servlet.ServletHandler in doHandle at line 567 org.eclipse.jetty.server.handler.ScopedHandler in nextHandle at line 233 org.eclipse.jetty.server.handler.ContextHandler in doHandle at line 1377 org.eclipse.jetty.server.handler.ScopedHandler in nextScope at line 188 org.eclipse.jetty.servlet.ServletHandler in doScope at line 507 org.eclipse.jetty.server.handler.ScopedHandler in nextScope at line 186 org.eclipse.jetty.server.handler.ContextHandler in doScope at line 1292 org.eclipse.jetty.server.handler.ScopedHandler in handle at line 141 org.eclipse.jetty.server.handler.HandlerWrapper in handle at line 127 com.codahale.metrics.jetty9.InstrumentedHandler in handle at line 249 io.dropwizard.jetty.RoutingHandler in handle at line 52 org.eclipse.jetty.server.handler.gzip.GzipHandler in handle at line 717 org.eclipse.jetty.server.handler.RequestLogHandler in handle at line 54 org.eclipse.jetty.server.handler.StatisticsHandler in handle at line 173 org.eclipse.jetty.server.handler.HandlerWrapper in handle at line 127 org.eclipse.jetty.server.Server in handle at line 501 org.eclipse.jetty.server.HttpChannel in lambda$handle$1 at line 383 org.eclipse.jetty.server.HttpChannel in dispatch at line 556 org.eclipse.jetty.server.HttpChannel in handle at line 375 org.eclipse.jetty.server.httpconnection in onFillable at line 273 org.eclipse.jetty.io.AbstractConnection$ReadCallback in succeeded at line 311 org.eclipse.jetty.io.FillInterest in fillable at line 105 org.eclipse.jetty.io.ChannelEndPoint$1 in run at line 104 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in runTask at line 336 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in doProduce at line 313 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in tryProduce at line 171 org.eclipse.jetty.util.thread.strategy.EatWhatYouKill in run at line 129 org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread in run at line 375 org.eclipse.jetty.util.thread.QueuedThreadPool in runJob at line 806 org.eclipse.jetty.util.thread.QueuedThreadPool$Runner in run at line 938 java.lang.Thread in run at line 748


public class AccountResource {
    @Inject
    private AccountService accountService;

    @POST
    @Timed
    @Path("/createuser/v1")
    @ApiOperation(value = "Test API")
    @InTransaction
    public Response createuser(@ApiParam createuserRequest request) {
        request.validateRequest();

        SigninResponse signinResponse = accountService.createuser(request);
        BaseResponse baseResponse = ResponseProcessor.processSuccessfulRequest(signinResponse);

        return Response.status(Response.Status.OK).entity(baseResponse).build();
    }
}
public class AccountResource {
    @Inject
    private AccountService accountService;

    @POST
    @Timed
    @Path("/createuser/v1")
    @ApiOperation(value = "Test API")
    @InTransaction
    public Response createuser(@ApiParam createuserRequest request) {
        request.validateRequest();

        SigninResponse signinResponse = accountService.createuser(request);
        BaseResponse baseResponse = ResponseProcessor.processSuccessfulRequest(signinResponse);

        return Response.status(Response.Status.OK).entity(baseResponse).build();
    }
}
public class AccountService {
   @Inject
   private DBManager dbManager;

   @Inject
   private DBObjectFactory dbObjectFactory;

   public SigninResponse createuser(createuserRequest createuserRequest) {
      User user = dbManager.fetchUser(createuserRequest.getEmail());
      
      UsersDo userDo = dbObjectFactory.createuser(createuserRequest);
      List<UserRoleAssociatorsDo> rolesDo = dbObjectFactory.createuserRoleAssociatorsDo(userDo.getId(),createuserRequest.getRoles());
      EmailsDo emailsDo = dbObjectFactory.createEmailsDo(userDo.getId(),createuserRequest);

      dbManager.signup(userDo,rolesDo,emailsDo);
      
      return SigninResponse.builder().userId(userDo.getId()).roles(createuserRequest.getRoles()).state(userDo.getState()).build();
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。