2017-01-17 3 views
0

스프링 데이터를 내 osgi karaf 번들에 사용하고 싶습니다. 따라서 jpa 저장소를 osgi 서비스로 등록하고 다른 번들에 사용해야합니다.OSGi 스프링 데이터 JPA가 작동하지 않습니다.

그것은

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:osgi="http://www.springframework.org/schema/osgi" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/data/jpa 
     http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/osgi 
     http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd"> 


    <context:annotation-config/> 


    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <constructor-arg ref="entityManagerFactory"/> 
    </bean> 

    <osgi:reference id="entityManagerFactory" interface="javax.persistence.EntityManagerFactory"/> 

    <tx:annotation-driven/> 

    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/> 

    <jpa:repositories base-package="org.redhat.support.repository"/> 

     <osgi:service interface="org.redhat.support.repository.TestingRepository" ref="testingRepository"/> 

</beans> 

퓨즈 예외 메시지는이

12:05:07,920 | ERROR | xtenderThread-19 | ContextLoaderListener   | 210 - org.springframework.osgi.extender - 1.2.1 | Application context refresh failed (OsgiBundleXmlApplicationContext(bundle=business-service, config=osgibundle:/META-INF/spring/*.xml)) 
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/data/jpa] 
Offending resource: URL [bundle://500.0:0/META-INF/spring/spring.xml] 

    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:315)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1429)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1422)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:147)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:101)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:495)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)[203:org.apache.servicemix.bundles.spring-beans:3.2.16.RELEASE_1] 

어떻게이 문제를 해결하기 위해, 내 구성입니다? 어떤 제안. 사전 감사.

답변

2

이 오류는 스프링 데이터 jpa 네임 스페이스를 제공하는 번들이 설치되어 있지 않음을 나타냅니다. 스프링 데이터 번들을 설치 했습니까?

모든 것을 올바르게 설치하더라도 스프링 데이터가 OSGi에서 작동하는지 잘 모르겠습니다. 오랜 시간 전에 OSGi를 버렸다. 그래서 저는 OSGi에서 어떤 스프링 기술을 사용하지 않도록 노력할 것입니다.

+0

예, 저는 karaf 컨테이너에 스프링 데이터 번들을 설치했습니다. 여전히 같은 오류가 나타납니다. 만약 스프링 데이터가 지원되지 않는다면, 어떻게 osgi에서 스프링 데이터 메소드를 구현할 수 있을까요? ... 그래서 우리는 청사진 openJpa 메소드를 사용할 수 있습니까? – Sridhar

+0

복잡한 쿼리를 작성하는 것을 극복하고자합니다. 그 이유는 스프링 데이터 방식을 선택했기 때문입니다. 또한 한 가지 더 내 karaf entityManager.merge 메서드는 매우 느립니다. 당신은 왜 느린지 plz 제안 할 수 있습니까? – Sridhar

관련 문제