2011-05-20 38 views
2

我的應用程序使用Spring(STS)和OSGi。 DB層使用JPA(與Eclipse的鏈接),我有:OSGi和JPA的Java DB問題 - SpringProxy不可見

  • 一個OSGi的項目吾道
  • 一個OSGi的項目我的DAO實現

由於實體管理器不承諾我的更改如this other SO question,我在我的DAO對象中添加了@Transactional註釋,用於我的創建,更新和刪除方法(如果我理解的很好,只讀方法(如find)無關)。

但是,這引發了一個異常:

java.lang.IllegalArgumentException: interface org.springframework.aop.SpringProxy 
is not visible from class loader 

我加了註釋在DAO和DAO實現了一套水平第一,然後只在DAO默認地將Impl水平,但結果是一樣的。我有時會在春季有點迷路,你能幫忙嗎?

謝謝!

+1

DAO不應該是@Transactional。將@Transactional放在使用DAO的服務層上 – 2011-05-20 11:04:17

+0

你完全正確!謝謝。 – Emmanuel 2011-05-24 07:29:48

回答

2

這實際上是一個OSGi問題:OSGi由bundle組成,每個都在自己的環境中執行,而我的一個模塊在另一個環境中缺少可見性。我們不得不使用AOP and weaving來解決這個問題。

+1

。你可以讓我知道你是如何解決這個問題的?我在嘗試啓動我的bundle時遇到了類似的錯誤。我使用@Transaction註解,但是我的理解是它支持spring-tx模塊(org.springframework。交易),而不是一蹴而就。如果你能提供一些指引,我會很感激。 – Shamik 2011-06-16 18:44:53

+0

由於您使用了@Transactional註釋,這意味着您啓用了依賴於AOP的註釋驅動事務。一些交易相關的代碼將被自動注入。 – 2015-04-15 01:41:58