2014-12-09 2 views
0

허용되는 해결책을 찾았습니다. 아래를보십시오.@Bean 메소드에서 스프링 부트를 사용하여 프로그래밍 방식으로 Kundera를 올바르게 구성하는 방법은 무엇입니까?

HBase에 내 JPA 개체를 저장하는 지속성 공급자로 Kundera를 사용하고 싶습니다. 주석 중심 방식으로 모든 작업을 수행합니다. 즉, persistence.xml이없고 필요하지 않습니다.

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
    final LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean(); 
    bean.setPersistenceProviderClass(KunderaPersistence.class); 
    final Properties props = new Properties(); 
    props.setProperty("kundera.dialect", "hbase"); 
    props.setProperty("kundera.client.lookup.class", 
      HBaseClientFactory.class.getName()); 
    props.setProperty("kundera.cache.provider.class", 
      EhCacheProvider.class.getName()); 
    props.setProperty("kundera.cache.config.resource", 
      "/ehcache.xml"); 
    props.setProperty("kundera.ddl.auto.prepare", "update"); 
    props.setProperty("kundera.nodes", "myhbase.example.com"); 
    props.setProperty("kundera.port", "2182"); 
    props.setProperty("kundera.keyspace", "foo"); 
    bean.setJpaProperties(props); 
    return bean; 
} 

src/main/resources에 기본 comfiguration과 ehcache.xml이 있습니다

지금까지 나는 다음과 같은했다. 내가 이것을 실행하려고하면

은, 그것은 밖으로 보석금, 스택 추적이 귀결은 : 나는 bean.setPersistenceUnitName("foo");를 통해 퍼시스턴스 유닛 이름을 설정

... many more ... 
Caused by: java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml} 
    at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:655) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:358) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:307) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550) 
    ... 152 more 

내가 얻을 : No persistence unit with name 'foo' found

내가 뭐하는 거지 wrong, 실제로 persistence.xml이 필요합니까? 명령 줄 스위치를 통해 구성을 설정할 수 있기를 원하기 때문에 원하지 않습니다. 이것들은 Environment에 삽입되고, 내 @Bean 메쏘드의 매개 변수로 사용할 수 있고, 내 속성 객체에 이런 식으로 넣을 수 있습니다.

--- 편집 ---

는 이제 기본 설정으로 persistence.xml을 생성하고, 그냥 내 Properties 오브젝트에서 사용자 정의 것들보다 우선합니다. 이 작동하지만 지금은 HBase에 연결하는 또 다른 문제가 Java 프로세스를 잠급니다. 또 다른 질문은 다음과 같습니다. 내 원래의 편집에 명시된 바와 같이

+0

https://github.com/impetus-opensource/Kundera/wiki/Using-Kundera-with-Spring. 이것은 봄과 함께 Kundera 사용에 관한 wiki 페이지입니다. –

+0

이 페이지를 알고 있지만 XML 구성을 사용합니다. 나는 프로그래밍으로 모든 것을 다한다. 하지만 persistence.xml을 만들고 프로그래밍 방식으로 일부 매개 변수를 재정의하는 위의 접근 방식이 효과적입니다. – rabejens

+0

Kundera를 사용하려면 persistence.xml 파일을 만들어야합니다. 앱이 Kundera를 통해 HBase에 연결을 시도하는 동안 생성되는 일부 로그를 공유 할 수 있습니까? –

답변

0

, 나는 받아 들일 솔루션을 발견 :

  1. 기본 설정
  2. 무시와 persistence.xml을 만들기를 @Bean 방법에서 사용자 설정