【问题标题】:Spring-Data-jpa with Spring XDSpring-Data-jpa 与 Spring XD
【发布时间】:2014-11-05 14:48:36
【问题描述】:

我有如下所述的带有 Beans 的配置类

  @Bean(name = "entityManagerFactory")
  public LocalContainerEntityManagerFactoryBean  entityManagerFactory(@Qualifier("sqlServerDataSource") DataSource dataSource) {
      LocalContainerEntityManagerFactoryBean lef = new    LocalContainerEntityManagerFactoryBean();
      lef.setDataSource(dataSource);
      lef.setJpaVendorAdapter(jpaVendorAdapter());
      lef.setPackagesToScan("de.id.dih");
      return lef;
  }

  private JpaVendorAdapter jpaVendorAdapter() {
      HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
      hibernateJpaVendorAdapter.setShowSql(true);
      hibernateJpaVendorAdapter.setDatabase(Database.SQL_SERVER);
      hibernateJpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.SQLServer2008Dialect");
      return hibernateJpaVendorAdapter;
  }

  @Bean
  public PlatformTransactionManager   transactionManager(LocalContainerEntityManagerFactoryBean emf) {
      JpaTransactionManager transactionManager = new JpaTransactionManager();
      transactionManager.setEntityManagerFactory(emf.getObject());
      return transactionManager;
  } 

Maven 依赖项如下所示:

<dependency>
    <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
    <!--<scope>provided</scope>-->
</dependency>

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency> 

当我在 Spring XD 中部署我的模块时,出现以下异常

ERROR DeploymentsPathChildrenCache-0 server.ContainerRegistrar - Exception deploying module
java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener : org.springframework.boot.context.event.EventPublishingRunListener
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:381)
    at org.springframework.boot.SpringApplication.getRunListeners(SpringApplication.java:352)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:274)
    at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:142)
    at org.springframework.xd.module.core.SimpleModule.initialize(SimpleModule.java:203)
    at org.springframework.xd.dirt.module.ModuleDeployer.deploy(ModuleDeployer.java:98)
    at org.springframework.xd.dirt.module.ModuleDeployer.deployAndStore(ModuleDeployer.java:88)
    at org.springframework.xd.dirt.module.ModuleDeployer.deployAndStore(ModuleDeployer.java:78)
    at org.springframework.xd.dirt.server.ContainerRegistrar.deployModule(ContainerRegistrar.java:231)
    at org.springframework.xd.dirt.server.ContainerRegistrar.deployJobModule(ContainerRegistrar.java:530)
    at org.springframework.xd.dirt.server.ContainerRegistrar.onChildAdded(ContainerRegistrar.java:447)
    at org.springframework.xd.dirt.server.ContainerRegistrar.access$800(ContainerRegistrar.java:95)
    at org.springframework.xd.dirt.server.ContainerRegistrar$DeploymentListener.childEvent(ContainerRegistrar.java:826)
    at org.apache.curator.framework.recipes.cache.PathChildrenCache$5.apply(PathChildrenCache.java:509)
    at org.apache.curator.framework.recipes.cache.PathChildrenCache$5.apply(PathChildrenCache.java:503)
    at org.apache.curator.framework.listen.ListenerContainer$1.run(ListenerContainer.java:92)
    at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
    at org.apache.curator.framework.listen.ListenerContainer.forEach(ListenerContainer.java:83)
    at org.apache.curator.framework.recipes.cache.PathChildrenCache.callListeners(PathChildrenCache.java:500)
    at org.apache.curator.framework.recipes.cache.EventOperation.invoke(EventOperation.java:35)
    at org.apache.curator.framework.recipes.cache.PathChildrenCache$10.run(PathChildrenCache.java:762)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
   Caused by: java.lang.IllegalArgumentException: class    org.springframework.boot.context.event.EventPublishingRunListener is not assignable to interface org.springframework.boot.SpringApplicationRunListener
    at org.springframework.util.Assert.isAssignable(Assert.java:369)
    at org.springframework.util.Assert.isAssignable(Assert.java:352)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:375)
    ... 29 more

在 Spring XD 环境中是否可以有上面提到的 Bean 的配置类??

非常感谢您尽快提供帮助。

谢谢

【问题讨论】:

    标签: hibernate jpa spring-boot hibernate-entitymanager spring-xd


    【解决方案1】:

    似乎是类加载器问题。确保您的模块 lib/ 目录不包含任何已在 XD 的全局 lib/ 目录中的 jar(相同或不同版本)。

    如果你想自动化这个并且对 gradle 没问题,你可以从 https://github.com/pperalta/spring-xd-source-template 构建文件中汲取灵感(这是针对 source 模块的,但我敢打赌,你可以为其他类型的模块派生相同的东西)

    【讨论】:

    • 我仔细检查了没有相同或不同版本的罐子。但是有些方法,我觉得 Spring XD 不支持 HibernateJpaVendorAdapter 。有没有人有示例 POC 或它的工作示例??
    • 是否可以在某个地方看到您的模块文件,或者这是封闭源代码?
    猜你喜欢
    • 2017-07-17
    • 2017-05-09
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2012-05-10
    相关资源
    最近更新 更多