Struts 2是否可用作OSGi捆绑包?

我有一个服务器应用程序,包含多个OSGi包,一些是我的,一些是第三方。 其中一个bundle使用Struts提供Web前端。 必要的Struts库位于Web前端包中。

现在我想添加第二个包,它提供另一个Web前端,具有不同的依赖关系和一个非常不同的用例。 我也希望将Struts用于该捆绑包,但我不想将相同的库放入两个捆绑包中。

使用OSGi,将Struts库分离为自己的捆绑包并使用我的捆绑包中的那些应该没有问题。 但是,我找不到那种方式打包的Struts。

一些快速的谷歌搜索和看看Struts主页没有产生任何东西。 我可以找到一个Struts插件来在Struts中运行一个OSGi容器,但这不是我想要的。

在http://repo2.maven.org/maven2/org/apache/struts/struts2-core/2.1.6/上查看当前的struts包。

例如,如果您下载struts2-core-2.1.6.jar,请将其解压缩并查看META-INF / MANIFEST.MF,您会看到它确实包含OSGI头文件(Import-Package,Export-Package,Bundle- *):

C:\TMP\META-INF>more MANIFEST.MF Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: 1.5.0_10 (Sun Microsystems Inc.) Built-By: musachyb Build-Jdk: 1.5.0_10 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt Import-Package: com.opensymphony.xwork2;version="2.1",com.opensymphon  Bnd-LastModified: 1231185746365 Export-Package: org.apache.struts2.views.xslt;uses:="javax.servlet.ht Bundle-Version: 2.1.6  Bundle-Description: Apache Struts 2 Bundle-Name: Struts 2 Core Bundle-DocURL: http://www.apache.org Bundle-ManifestVersion: 2 Bundle-Vendor: Apache Software Foundation Bundle-SymbolicName: org.apache.struts.struts2-core Tool: Bnd-0.0.255 

不知道你如何在OSGi应用程序中使用它们 – 但理论上你至少可以参考它们并做“东西”! 🙂

这是你在找什么?: http : //cwiki.apache.org/S2PLUGINS/osgi-plugin.html

使用Maven,可以很容易地从任何库创建OSGi包。 由于Struts已经在Maven中央存储库中作为OSGi-Bundle提供(参见接受的答案),我将该解决方案放在一个单独的问答post中。

看看这些链接,我希望你找到一些有用的唐布朗的网络博客

阅读本文可能对java大厅有用:用OSGi模块化现有的Web应用程序

好吧,我认为你必须自己完成包装任务。

Struts是Servlet容器(分布式组件架构)的框架。 oSGI也是一种分布式组件架构。

我认为你最好的选择是看一下oscar http服务并根据oscar的代码看看他们如何将oscar HttpService,context等映射到jetty servlet容器。 然后移植struts框架以在嵌入式jetty上运行。