java - Jersey 2.22 UnsatisfiedDependencyException

标签 java maven dependency-injection jersey ejb

我正在使用 Wildfly 10 和 Java 8。我尝试绑定(bind)我的服务 like here但我仍然收到此错误。我能看到的唯一区别是 pom.xml 依赖项,但 2.0-rc1 版本很旧。

[io.undertow.request] (default task-2) UT005023: Exception handling request to /api/account: javax.servlet.ServletException: A MultiException has 3 exceptions.  They are:
1. org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=ICuentaService,parent=CuentaServiceRS,qualifiers={},position=-1,optional=false,self=false,unqualified=null,287721117)
2. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of ar.com.olx.api.rest.CuentaServiceRS errors were found
3. java.lang.IllegalStateException: Unable to perform operation: resolve on ar.com.olx.api.rest.CuentaServiceRS

我的 API REST 类

@Path("/account")
public class CuentaServiceRS {

    @Inject
    private ICuentaService cuentaService;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Cuenta getCuenta() {

        return cuentaService.getCuentas().get(0);

    }

}

pom.xml

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.22.2</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22.2</version>
</dependency>

web.xml

<servlet>
        <servlet-name>altitudeservlet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>ar.com.villat.bind.ApplicationJaxRS</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

我的应用程序 JAX-RS 类

public class ApplicationJaxRS extends ResourceConfig {

    public ApplicationJaxRS(){
        register(new CustomBinder());
        packages(true, "ar.com.villat");
    }

}

最后,我的自定义 Binder

public class CustomBinder extends AbstractBinder {

    @Override
    protected void configure() {
        bind(ICuentaService.class).to(CuentaServiceImpl.class);
    }

}

如果您需要更多详细信息,请告诉我

最佳答案

AbstractBinder中,它应该是bind(Implementation).to(Contract)。你反之亦然。他们这样做的原因是一个实现可能有多个合约,因此您可以仅链接 to 调用。

关于java - Jersey 2.22 UnsatisfiedDependencyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45872214/

相关文章:

scala - Jonas Bonér 的依赖注入(inject)策略似乎是有限的——但也许我不明白

java - 如何在JMockit中调用@Injectable注解的类实例中的真实方法?

java - 倒计时期间取消按钮

java - 在 web.xml 中存储变量的目的?

c# - mvc - 重用服务行为

java - 无法让提供者在 Jersey 工作

Graal 编译的 JavaFX 应用程序中的 java.lang.ClassNotFoundException

java - 为什么要指定@Column( nullable = false )?

java - Mailgun Java API 发送 HTML 电子邮件

Maven MultiWAR 项目 : How to deploy them all from root project?