0

I want to use Spring Data into my osgi karaf bundle.So i need to register jpa repository as osgi service and use it to another bundle.

It is my configuration,

<?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>

The fuse exception message is,

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]

How to solve this? Any suggestions. Advance Thanks.

Sridhar
  • 89
  • 7

1 Answers1

3

This error tells you that there is no bundle installed that offers the spring data jpa namespace. Did you install the spring data bundles?

Even if you install everything correctly I am not sure if spring data works in OSGi. Spring has abandoned OSGi a long time ago. So I would try to avoid using any spring technologies in OSGi.

Christian Schneider
  • 19,420
  • 2
  • 39
  • 64
  • yes, I installed spring data bundles in karaf container. Still the same error appearing. If spring data not supported, then how to achieve spring data method in osgi?...So can we use blueprint openJpa method? – Sridhar Jan 17 '17 at 12:54
  • 2
    I want to overcome writing complex queries, that is why i choosed spring data method. Also one more thing my karaf entityManager.merge method is very slow. Can you plz suggest why it is slow? – Sridhar Jan 17 '17 at 12:56