【问题标题】:Crash when adding parameter that is a pojo添加 pojo 参数时崩溃
【发布时间】:2015-11-26 13:39:54
【问题描述】:

我正在使用 Dropwizard api。当我使用 0.7.2 时它运行良好但现在我已将其更改为 0.8.2

我遇到了所有你能找到的最奇怪的崩溃。但我设法解决了大部分问题。但是当我添加一个 POJO 参数时,我无法启动服务器

  @POST
  @Path("remove")
  @Produces(MediaType.TEXT_HTML)
  @Consumes(MediaType.APPLICATION_JSON)
  public Response removeUser(@Auth User user, User removedUser) {
    if(user == null || user.getSuperAdmin() != 1){
      return Response.status(401).build();
    }

    userDAO.delete(removedUser.getId());

    return Response.ok().build();
  }

如果您查看代码。当我添加用户变量removedUser。我将无法启动服务器。但是当我删除它时。它工作正常。 但我需要项目中的removedUser

我在项目的不同领域有同样的问题。所以任何可以帮助我解决这个问题的东西都会被接受

例外:

 javax.ws.rs.core.Response}, nameBindings=[]}']
! at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:554) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:183) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:349) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:346) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:346) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:339) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:362) ~[support-server-0.0.0001.jar:0.0.0001]
! at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:612) ~[support-server-0.0.0001.jar:0.0.0001]
! ... 36 common frames omitted
! Causing: javax.servlet.ServletException: org.glassfish.jersey.servlet.ServletContainer-159e366@f02ec575==org.glassfish.jersey.servlet.ServletContainer,1,false
! at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:633) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:395) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:871) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:298) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at com.codahale.metrics.jetty9.InstrumentedHandler.doStart(InstrumentedHandler.java:103) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.RequestLogHandler.doStart(RequestLogHandler.java:140) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:232) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.Server.start(Server.java:387) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.Server.doStart(Server.java:354) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:43) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.Cli.run(Cli.java:70) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.Application.run(Application.java:73) [support-server-0.0.0001.jar:0.0.0001]
! at com.car.SupportServerApplication.main(SupportServerApplication.java:51) [support-server-0.0.0001.jar:0.0.0001]
ERROR [2015-09-01 10:36:33,250] io.dropwizard.cli.ServerCommand: Unable to start server, shutting down
! org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
! [[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response com.car.resource.AdminResource.removeUser(com.car.core.User,java.lang.String) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[application/json], producedTypes=[text/html], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.car.resource.AdminResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@74294c1a]}, definitionMethod=public javax.ws.rs.core.Response com.car.resource.AdminResource.removeUser(com.car.core.User,java.lang.String), parameters=[Parameter [type=class com.car.core.User, source=null, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
! at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:554) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:183) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:349) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:346) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:346) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:339) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:362) ~[support-server-0.0.0001.jar:0.0.0001]
! at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:612) ~[support-server-0.0.0001.jar:0.0.0001]
! ... 36 common frames omitted
! Causing: javax.servlet.ServletException: org.glassfish.jersey.servlet.ServletContainer-159e366@f02ec575==org.glassfish.jersey.servlet.ServletContainer,1,false
! at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:633) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:395) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:871) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:298) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at com.codahale.metrics.jetty9.InstrumentedHandler.doStart(InstrumentedHandler.java:103) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.RequestLogHandler.doStart(RequestLogHandler.java:140) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:232) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.Server.start(Server.java:387) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.server.Server.doStart(Server.java:354) ~[support-server-0.0.0001.jar:0.0.0001]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:43) ~[support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.cli.Cli.run(Cli.java:70) [support-server-0.0.0001.jar:0.0.0001]
! at io.dropwizard.Application.run(Application.java:73) [support-server-0.0.0001.jar:0.0.0001]
! at com.car.SupportServerApplication.main(SupportServerApplication.java:51) [support-server-0.0.0001.jar:0.0.0001]
INFO  [2015-09-01 10:36:33,259] org.eclipse.jetty.server.ServerConnector: Stopped application@3b582111{HTTP/1.1}{0.0.0.0:8095}
INFO  [2015-09-01 10:36:33,269] org.eclipse.jetty.server.ServerConnector: Stopped admin@2899a8db{HTTP/1.1}{0.0.0.0:8096}
Exception in thread "main" javax.servlet.ServletException: org.glassfish.jersey.servlet.ServletContainer-159e366@f02ec575==org.glassfish.jersey.servlet.ServletContainer,1,false
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:633)
    at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:395)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:871)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:298)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at com.codahale.metrics.jetty9.InstrumentedHandler.doStart(InstrumentedHandler.java:103)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.server.handler.RequestLogHandler.doStart(RequestLogHandler.java:140)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:232)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.server.Server.start(Server.java:387)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.server.Server.doStart(Server.java:354)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:43)
    at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43)
    at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76)
    at io.dropwizard.cli.Cli.run(Cli.java:70)
    at io.dropwizard.Application.run(Application.java:73)
    at com.car.SupportServerApplication.main(SupportServerApplication.java:51)
Caused by: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response com.car.resource.AdminResource.removeUser(com.car.core.User,java.lang.String) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[application/json], producedTypes=[text/html], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.car.resource.AdminResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@74294c1a]}, definitionMethod=public javax.ws.rs.core.Response com.car.resource.AdminResource.removeUser(com.car.core.User,java.lang.String), parameters=[Parameter [type=class com.car.core.User, source=null, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:554)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:183)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:349)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:346)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:346)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:339)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:362)
    at javax.servlet.GenericServlet.init(GenericServlet.java:244)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:612)
    ... 36 more

更新

认证服务的实现:

LdapConfiguration ldapConfiguration = configuration.getLdapConfiguration();
Authenticator<BasicCredentials, BasicCredentials> ldapAuthenticator = new CachingAuthenticator<>(
        environment.metrics(),
        new ResourceAuthenticator(new LdapAuthenticator(ldapConfiguration)),
        ldapConfiguration.getCachePolicy());
ldapAuthenticator.authenticate(new BasicCredentials("proxyuser", "test123"));

environment.jersey().register(AuthFactory.binder(new BasicAuthFactory<>(ldapAuthenticator, "realm", BasicCredentials.class)));

【问题讨论】:

    标签: java jersey-2.0 dropwizard


    【解决方案1】:
    Caused by: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
    [[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response com.car.resource.AdminResource.removeUser(com.car.core.User,java.lang.String) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[application/json], producedTypes=[text/html], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.car.resource.AdminResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@74294c1a]}, definitionMethod=public javax.ws.rs.core.Response com.car.resource.AdminResource.removeUser(com.car.core.User,java.lang.String), parameters=[Parameter [type=class com.car.core.User, source=null, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    

    很可能您尚未配置身份验证机制。例如

    env.jersey().register(AuthFactory.binder(
            new BasicAuthFactory<SimplePrincipal>(
                    authenticator,
                    "Example Realm", 
                    SimplePrincipal.class)));
    

    这是错误的原因。在启动 Jersey 时,它会执行它所谓的模型验证来验证所有资源模型是否“正确”。这主要是为了避免在运行时出现任何问题。验证removeUser 方法时会发生错误。

    Jersey 看到两个未知(或未注释)类型对象的参数,如果它只是一个,这不是问题,因为通常有一个实体主体对象。对于其他人,它们通过注释识别。对于自定义注解,如@Auth,需要配置自定义ValueFactoryProvider/InjectionResolver。 Dropwizard 的@Auth 注入实现可以在AuthFactoryProvider 类中找到hereAuthFactory.binder(如上所示)是提供者的注册方式。

    另请参阅:

    【讨论】:

    • 但这是我所做的。也许我走错了。但是我会更新我的帖子以显示我是如何做到的
    • 如果您要尝试注入@Auth User,那么User 应该是实际的主体类型。 User.class 应该是 AuthFactory.binder 的最后一个参数。它也应该是您的 Authenticator&lt;BasicCredentials, User&gt; 声明的第二个通用参数。查看我提供的链接。
    • 您可能还想参数化BasicAuthFactory&lt;User&gt;
    • 基本上无论您的主体类型是什么,这都是您应该注入的类型。如果BasicCrendentials 真的 主体类型,那么这就是您需要注入的内容。如果不是,那么您需要修复您的配置和/或身份验证器。
    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2020-10-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多