3

SpringデータJPAをEJBおよびCDI(Java EE 7)と連携させようとしています。さて、私はドキュメントに従いました(http://docs.spring.io/spring-data/jpa/docs/1.4.2.RELEASE/reference/html/jpa.repositories.html#jpd.misc.cdi-integration)、しかし、ステートレス ejb で私のリポジトリを @inject することはできません。コードは次のとおりです。

@Configuration
@EnableJpaRepositories
public class EntityManagerFactoryProducer {

@Produces
@ApplicationScoped
public EntityManagerFactory entityManagerFactory() {
    return Persistence.createEntityManagerFactory("mypu");
}

public void close(@Disposes EntityManagerFactory entityManagerFactory) {
    entityManagerFactory.close();
}
}

$

public interface TipoFolhaRepository extends JpaRepository<TipoFolha, Long> {

List<TipoFolha> findByNome(String nome);

TipoFolha findByTipo(String tipo);
}

$

@Stateless
public class TipoFolhaFacade extends AbstractFacade<TipoFolha> {

@Inject
TipoFolhaRepository tpRepo;

@Override
public  List<TipoFolha> findAll(){
    return tpRepo.findAll();
}
}

エラーに従います。WELD-001408 インジェクション ポイント [[BackedAnnotatedField] @Inject com.mycompany.ejb.TipoFolhaFacade.tpRepo] での修飾子 [@Default] を持つ型 [TipoFolhaRepository] ​​の満たされていない依存関係

私は行方不明ですか?=S

4

1 に答える 1

3

bean-discovery-mode="all"リポジトリ クラスが存在するモジュールでCDI を有効にする必要があります。これは、次の内容で META-INF フォルダーに beans.xml を作成することを意味します。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
       http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="all">
</beans>

さまざまな検出モードの簡単な説明は、この Oracle ブログ投稿にあります。

于 2017-01-03T11:22:08.453 に答える