Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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没有注入我的CDI bean_Java_Cdi - Fatal编程技术网

Java Jersey没有注入我的CDI bean

Java Jersey没有注入我的CDI bean,java,cdi,Java,Cdi,我的@Inject不能与我的web服务(@Path)一起使用,但可以与@WebServlet一起使用,为什么 我的网络服务 @Path("/autenticacao") public class UsuarioService { @Inject private UsuarioRepository usuarioRepository; @POST @Produces(MediaType.APPLICATION_JSON) public Response

我的@Inject不能与我的web服务(@Path)一起使用,但可以与@WebServlet一起使用,为什么

我的网络服务

@Path("/autenticacao")
public class UsuarioService {

    @Inject
    private UsuarioRepository usuarioRepository;

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public Response autentica(@FormParam(value = "cpf") String cpf, @FormParam(value = "senha") String senha){
        Usuario usuario = usuarioRepository.getUsuarioByCPFSenha(cpf, senha);
        return Response.status(200).entity(usuario).build();
    }

}
UsuarioRepository
接口的定义

public interface UsuarioRepository {

    public Usuario getUsuarioByCPFSenha(String cpf, String senha);

}
public class UsuarioRepositoryImp implements UsuarioRepository {

    @Inject
    private Connection connection;

    @Override
    public Usuario getUsuarioByCPFSenha(String cpf, String senha) {
        String SQL = "SELECT se01_cpf, se01_senha FROM se01_usuario WHERE replace(replace(se01_cpf,'.',''),'-','') = ? AND se01_senha = ?";

        Usuario usuario = null;

        try {
            PreparedStatement stmt = connection.prepareStatement(SQL);
            stmt.setString(1, cpf);
            stmt.setString(2, senha);

            ResultSet set = stmt.executeQuery();

            while(set.next()){
                String c = set.getString("se01_cpf");
                String s = set.getString("se01_senha");

                usuario = new Usuario(c, s);
            }

            set.close();
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        return usuario;
    }

}
我的
UsuarioRepository
接口的实现

public interface UsuarioRepository {

    public Usuario getUsuarioByCPFSenha(String cpf, String senha);

}
public class UsuarioRepositoryImp implements UsuarioRepository {

    @Inject
    private Connection connection;

    @Override
    public Usuario getUsuarioByCPFSenha(String cpf, String senha) {
        String SQL = "SELECT se01_cpf, se01_senha FROM se01_usuario WHERE replace(replace(se01_cpf,'.',''),'-','') = ? AND se01_senha = ?";

        Usuario usuario = null;

        try {
            PreparedStatement stmt = connection.prepareStatement(SQL);
            stmt.setString(1, cpf);
            stmt.setString(2, senha);

            ResultSet set = stmt.executeQuery();

            while(set.next()){
                String c = set.getString("se01_cpf");
                String s = set.getString("se01_senha");

                usuario = new Usuario(c, s);
            }

            set.close();
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        return usuario;
    }

}

我的字段
usuarioRepository
在我的请求后为空,知道吗?

Jersey依赖项注入基于HK2而不是CDI。因此,你需要在两者之间架起一座桥梁。这就是cdi的作用:

<dependency>
    <groupId>org.glassfish.jersey.containers.glassfish</groupId>
    <artifactId>jersey-gf-cdi</artifactId>
</dependency>

org.glassfish.jersey.containers.glassfish

下面是将CDIBean注入JAX-RS资源的示例:

我正在使用Tomcat 7,现在我在类路径中的cdi出现了其他错误。。java.lang.AbstractMethodError:javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:669)javax.servlet.http.HttpServlet.service(HttpServlet.java:727)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)确保您只使用一个版本的jersey,请参阅: