代码之家  ›  专栏  ›  技术社区  ›  James McMahon

Struts2是否作为OSGi包提供?

  •  4
  • James McMahon  · 技术社区  · 15 年前

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

    现在,我想添加第二个包,它提供另一个Web前端,具有不同的依赖性和非常不同的用例。我也希望为这个包使用struts,但我不希望将同一个库放在两个包中。

    对于OSGi,将struts-libs单独放在它们自己的包中并从我的两个包中使用应该没有问题。但是,我找不到这样包装的Struts。

    一些快速的谷歌搜索和看看 the Struts homepage 没有任何让步。我可以为struts找到一个插件来运行struts内部的OSGi容器,但这不是我想要的。

    5 回复  |  直到 15 年前
        1
  •  5
  •   Martin    15 年前

    看看当前Struts捆绑包 http://repo2.maven.org/maven2/org/apache/struts/struts2-core/2.1.6/ .

    例如,如果您下载struts2-core-2.1.6.jar,将其解压缩并查看meta-inf/manifest.mf,您将看到它确实包含OSGi头文件(导入包、导出包、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
     <SNIP>
    Bnd-LastModified: 1231185746365
    Export-Package: org.apache.struts2.views.xslt;uses:="javax.servlet.ht
    Bundle-Version: 2.1.6
     <SNIP>
    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应用程序中使用它们——但理论上你至少可以参考它们并做“事情”!!:)

        2
  •  0
  •   Praveen Angyan    15 年前
        3
  •  0
  •   Community CDub    7 年前

    使用Maven,很容易从任何库中创建OSGi包。由于Struts已经在中央Maven存储库中作为OSGi包提供(请参见接受的答案),所以我将该解决方案放在单独的 question 和; answer 邮政。

        4
  •  -1
  •   sazamsk    15 年前

    看看这些链接,希望你能找到一些有用的 don brown's web blog

    读这篇文章可能会有所帮助 java lobby: Modularizing existing web applications with OSGi

    我想你得自己完成包装任务。

        5
  •  -3
  •   alphazero    15 年前

    Struts是servlet容器(分布式组件体系结构)的框架。OSGi也是一种分布式组件体系结构。

    我想你最好看一下 oscar http service 基于Oscar的代码,看看他们是如何将OscarHTTPService、Context等映射到JettyServlet容器的。然后将Struts框架移植到嵌入式码头的顶部。