2012-10-26 53 views
0

基本上,我希望能够用Spring这样做了OSGi包:如何在OSGI环境中使用Spring?

  • 使用的applicationContext.xml定义豆类和代理和装饰他们
  • 使用@Transactional上的方法给它一个交易(春季将需要代理它)

我知道有春天DM已经退休到Eclipse双子座。我仍然可以使用弹簧DM 2.0,这将允许我在弹簧蓝图中指向1?有没有一种方法可以使用'普通'Spring来做到这一点?

我该如何做点2?是否可以在OSGI包中使用Spring来提供事务?有没有人成功做到这一点?

我应该在OSGI中远离Spring吗?还是我还没有意识到更多?

+0

看看这个:http://stackoverflow.com/questions/8039931/how-to-use-a-spring-bean-inside-a-osgi-bundle –

回答

0

那么你仍然可以使用Spring-DM,即使是“老”1.2.1,尽管我真的建议切换到Blueprint,但它只能在OSGi上顺利运行,与Spring本身并没有多大差别。特别是因为你想在你的bean上做交易。 我最喜欢的设置是带有OpenJPA的Blueprint(Aries或Gemini),它在OSGi环境中效果最佳。

这里如何与白羊座蓝图

<bean id="myDao" class="my.project.dao.jpa.MyJpaDao"> 
<jpa:context property="em" unitname="persistenc-unit" /> 
<tx:transaction method="*" value="Required" /> 
</bean> 

做到这一点随着你能做出这个类的任何方法交易一个简单的示例。 我通常将这些DAO对象保存在一个单独的包中,只包含我的实体类和DAO。为了让我的应用程序,这些DAO中的保持我注册为服务

<service id="myDAO" ref="myDao" interface="my.project.dao.MyDao" /> 

现在,你仍然可以做一个“软” transferal到与该蓝图。 如果你把你的实体单独存放在一个额外的包中,就像我一样,你只需要引用你的Spring的DAO服务(与Spring-DM一起使用,在这种情况下,它重新推荐使用spring-dm 1.2.1,否则会遇到非常糟糕的问题),然后从你的std开始。春季应用。这是OSGi的真正优点,您可以根据需要混合使用所有这些服务框架。

+0

那么你如何实际设置交易?你只是在blueprint.xml中使用Aries交易,我想知道什么是最好的Spring方法。 –

+0

我希望我的更详细的解释给你一个更好的想法 –