【问题标题】:Migration from Spring DM 1.2 Spring 3 / KARAF 4.0.10 to Blueprint, Spring 5 and KARAF 4.2.0从 Spring DM 1.2 Spring 3 / KARAF 4.0.10 迁移到 Blueprint、Spring 5 和 KARAF 4.2.0
【发布时间】:2019-01-14 13:37:26
【问题描述】:

我使用的是 KARAF 4.0.10,它安装了 spring 3.1.4 作为启动功能。我们将 spring 用于 web 模块 (spring-mvc) 和 spring-dm (spring-osgi-web)。

这是我的示例 web.xml。 那是我的 web.xml Mvc Servlet

<servlet>
<servlet-name>javorai-api</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.osgi.web.context.support.osgibundlexmlwebapplicationcontext</param-value>
</init-param>

随着我们将 KARAF 升级到 4.2.0,spring 升级到了 5.0.4,spring-dm 不再支持它。现在已弃用。根据互联网搜索,我发现建议继续使用双子座蓝图作为 spring-dm 的替代品。我已经下载了gemini-blueprint/IO、Core 和extender 模块,方法是将其配置为maven 依赖项。

您能否指导一下 web.xml 中应该进行哪些更改以继续使用 Gemini 蓝图作为 spring-dm 的替代品?

还有什么方法可以让它工作而不使用蓝图并直接在 web.xml 中引用 spring jar 文件

【问题讨论】:

  • 如果我错了,请纠正我,但是双子座项目也已经死了很长时间了。如果你想有一个长期的解决方案,要么选择 OSGi,要么选择 Spring,但不要将两者一起使用。原因:Spring 是单体的,而 OSGi 是模块化的

标签: osgi apache-karaf aries eclipse-gemini


【解决方案1】:

如果你真的真的需要使用 Spring MVC,你可以使用 ServerOsgiBundleXmlWebApplicationContext 类,它会工作的。但是我必须警告你,在 osgi 环境下的 spring 是相当骇人听闻的,gemini 经常会弄乱包的生命周期并且它会破坏 aries-blueprint 包,除非你应用我为它创建的patch

【讨论】:

  • 好的,我也试过了,但似乎 org.eclipse.virgo.web.dm 在 maven 上不可用。现在看来这是一个死项目。我找到了一个 jar 并且可以看到该 jar 也仅支持 Spring 4。使用 KARAF 4.2.0,它会安装 spring 5.0.4 版本。
  • 你能在这里给我推荐一下替代方案吗,我目前在 OSGI 中使用 spring MVC,我这里有什么选择?我可以完全脱离 Spring 并使用任何其他技术来支持它吗?
  • 你可以只用ServerOsgiBundleXmlWebApplicationContext类创建一个简单的jar,它与virgo没有任何依赖关系,只有gemini和spring。您是否也在使用 MVC 部分来提供 Rest Services 或页面?
  • 我也在页面中使用 MVC 部分。
  • 正如您已经建议的那样,在 osgi 环境下的 spring 是相当 hackish,您可以建议哪些替代选项?我认为在这种情况下最好不要使用spring并在osgi中尝试其他东西来达到同样的目的。
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2012-03-25
  • 2020-07-07
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2014-03-11
相关资源
最近更新 更多