Tôi hiện đang làm việc trên một ứng dụng OSGi đang chạy dưới apache Karaf sử dụng JPA và QueryDSL.Có thể tích hợp OSGi với dữ liệu Spring không?
tôi đã tự hỏi nếu tôi có thể sử dụng dữ liệu mùa xuân với QueryDSL thay vì cách tiếp cận hiện nay.
Lý do cho điều này là tôi tìm kho mùa xuân là khá hữu ích và có một khuôn mẫu cho cơ sở dữ liệu NoSQL truy cập có thể có ích trong tương lai.
Tôi đã cố gắng khởi động một ứng dụng mùa xuân bình thường mà không có ngữ cảnh web với OSGi nhưng tôi nhận được một ClassNoutFoundException khi nó cố tải ứng dụngContext.xml hoặc lớp ApplicationContext.class.
Tôi không muốn sử dụng mùa xuân DM vì nó được ngưng.
Về cơ bản các lý do duy nhất vì muốn thử tích hợp này là dành cho các Repositories mùa xuân, nhưng nếu bạn nghĩ rằng đây là không cần thiết xin vui lòng cho tôi biết. Bất kỳ thông tin nào liên quan đến cách đạt được điều này hoặc nếu được chấp nhận thì điều này sẽ được hoan nghênh hơn.
Cảm ơn bạn
Cập nhật
tôi đã quản lý để làm cho công việc mùa xuân bằng cách bắt đầu bối cảnh ứng dụng với org.eclipse.gemini.blueprint.context.support.OsgiBundleXmlApplicationContext
. ApplicationContext được xuất trong OSGi như một dịch vụ và tôi có thể nhận được tất cả các bean mà tôi cần bằng cách gọi nó.
Vấn đề tôi đang gặp ngay bây giờ là khi tôi tuyên bố <jpa:repositories base-package="x.y.z" />
tôi nhận được ngoại lệ sau đây:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' defined in URL [bundle://251.13:0/META-INF/spring/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalStateException: No persistence exception translators found in bean factory. Cannot perform exception translation.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1109)[187:org.springframework.context:3.1.4.RELEASE]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.registerBeanPostProcessors(AbstractDelegatedExecutionApplicationContext.java:502)[193:org.eclipse.gemini.blueprint.core:1.0.0.RELEASE]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.registerBeanPostProcessors(AbstractDelegatedExecutionApplicationContext.java:451)[193:org.eclipse.gemini.blueprint.core:1.0.0.RELEASE]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:306)[193:org.eclipse.gemini.blueprint.core:1.0.0.RELEASE]
at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)[193:org.eclipse.gemini.blueprint.core:1.0.0.RELEASE]
at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:290)[193:org.eclipse.gemini.blueprint.core:1.0.0.RELEASE]
at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:137)[194:org.eclipse.gemini.blueprint.extender:1.0.0.RELEASE]
at java.lang.Thread.run(Thread.java:662)[:1.6.0_37]
Caused by: java.lang.IllegalStateException: No persistence exception translators found in bean factory. Cannot perform exception translation.
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:142)[195:org.springframework.transaction:3.1.4.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.<init>(PersistenceExceptionTranslationInterceptor.java:79)[195:org.springframework.transaction:3.1.4.RELEASE]
at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.<init>(PersistenceExceptionTranslationAdvisor.java:70)[195:org.springframework.transaction:3.1.4.RELEASE]
at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:103)[195:org.springframework.transaction:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1475)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1443)[185:org.springframework.beans:3.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)[185:org.springframework.beans:3.1.4.RELEASE]
Là nhà cung cấp JPA Tôi đang sử dụng OpenJPA. EntityManagerFactory là một dịch vụ mà tôi có thể nhận được bằng cách sử dụng kế hoạch chi tiết. Tôi nghĩ rằng tôi cần phải tham khảo nó trong <jpa:repositories base-package="x.y.z" />
, nhưng làm thế nào để tôi làm điều đó kể từ khi applicationContext.xml được đọc bởi mùa xuân và không phải là kế hoạch chi tiết?
Tôi thực sự đánh giá cao bất kỳ gợi ý nào về đúng hướng.
Cảm ơn bạn
Xuân DM không ngưng. Nó được đổi tên thành "Gemini Blueprint". –
Nhưng bây giờ nó là kế hoạch chi tiết hơi khác một chút so với cú pháp spring-dm, do đó người ta có thể gọi nó là "ngưng". Tôi vẫn sử dụng nó cho các tình huống nhất định ... :) –
Cảm ơn Achim Nierbeck. Vì câu trả lời của bạn, tôi thấy rằng lớp Spring DM đã làm cho Spring hoạt động. Tôi cũng đã cập nhật câu trả lời của mình. Nếu bạn biết bất cứ điều gì về việc tích hợp Apache Karaf với dữ liệu mùa xuân, tôi thực sự sẽ đánh giá cao nó. Cảm ơn một lần nữa :) – Marius