2017-01-25 33 views
0

私の現在の仕事はJava EEアプリケーションをJboss 7サーバーからWildfly 10に移行することです。私はCDIとSpring-Dataの統合に問題があります。私はJboss 7で働いたのと同じ設定を使用しています。アプリケーションをWildflyサーバーにデプロイしようとすると、春のデータリポジトリをいくつかのCDIとEJB Beanに挿入するというエラーが発生します。WELD-001408:Springデータからのリポジトリの満足していない依存関係

エラーは次のようになります。

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type StudentExtTrainingRepository with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private pl.mynetwork.mylearning.logic.historyTraining.HistoryTrainingService.studentExtTrainingRepository 
    at pl.mynetwork.mylearning.logic.historyTraining.HistoryTrainingService.studentExtTrainingRepository(HistoryTrainingService.java:0) 

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:359) 
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281) 
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134) 
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155) 
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 

私は私がここにhttps://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpd.misc.cdi-integrationが、それは仕事をdoesntのwildflyに見つけた、春のデータ設定ガイドに従って、自分のアプリケーションを構成しました。

は、私はファイルがMETA-INFディレクトリの下に私のプロジェクトにbeans.xmlの私が持っているもちろん、この

@Dependent 
public class SpringDataConfigurationProducer { 


    @Produces 
    @ApplicationScoped 
    public EntityManagerFactory createEntityManagerFactory() { 
    return Persistence.createEntityManagerFactory("base-pu"); 
    } 

    @Produces 
    @RequestScoped 
    public EntityManager createEntityManager(EntityManagerFactory entityManagerFactory) { 
    return entityManagerFactory.createEntityManager(); 
    } 
} 

のようなエンティティマネージャのプロデューサークラスを持っています。

リポジトリ、注入しようとしているイムは、次のようになります。私はリポジトリを注入したい

@Repository 
@Transactional 
@Dependent 
public interface StudentExtTrainingRepository extends JpaRepository<StudentExtTraining, Long> { 
} 

サービスになります。

@Service 
public class HistoryTrainingService { 

    @Inject 
    private StudentExtTrainingRepository studentExtTrainingRepository; 
} 

私は/春のデータリポジトリの別のプロジェクトを持っており、サービスの分離しますEJB。両方とも1つのEARにパックされています。誰も何が間違っているsugestionsを持っていますか?私はこの問題で何時間も過ごしました。私は解決策を見つけることができません。

+0

代わりにSpringを完全に削除し、代わりにApache Deltaspikeを使用してください。それでも問題はありません。 Spring DataとCDIを統合する内部ブリッジがあります。そして、彼らは本当によく書かれていません。 Java EEとSpringを混用しないでください。私のアドバイスです。春は独自のもので、うまく動作しません。 –

答えて

0

このクラスも追加します。

class CdiConfig {  
    @Produces 
    @RequestScoped 
    @PersistenceContext 
    public EntityManager entityManager; 
} 
+0

私はこのアプローチを試みましたが、効果は同じでした。 – user2514376

+0

SpringDataConfigurationProducerとCdiConfigだけを削除しようとしましたか?私にとってはweblogicで働いていました。 @PersistenceContext(unitName = "base-pu")もここに追加してください。 – mhshimul

+0

まだ動作していません。私がそれをしたときにエラー '持続ユニットをCDIマネージドBeanに注入する際にエラーが発生しました。注入ポイントjavax.persistence.EntityManagerFactory pl.mynetworkのデプロイメントmylearning-scheduler.earで 'base-pu'という永続性ユニットを見つけることができません。mylearning.springdata.config.CdiConfig.customerDatabasePersistenceUnit' – user2514376

0

私のプロジェクト構造には多分問題がありますか?

jarの中にpersistence.xmlファイルがあります。これはservices.ear内のlibディレクトリに追加されています。 私はマニフェストファイルのservices.earに依存している別のear - scheduler.earを持っています。 誰でも知っていますか?この設定では動作しますか?

それは次のようになります。

依存性::deployment.mylearning-サービス - ここで、app.ear

リポジトリクラス、私ができること

--services.ear 
       ----lib 
        -----domain.jar 
            ---persistence.xml 
        -----jdbc.jar 
--scheduler.ear 
       ----META-INF 
          ----Manifest.mf 

内部マニフェストファイル私はこのようなラインを持っています注入はjdbc.jarの中にあります。 スケジューラをデプロイする段階でデプロイメントが失敗しました。

関連する問題