2009-05-21 16 views
4

私は複数のOSGiバンドル、いくつかの鉱山、いくつかのサードパーティ製のサーバーアプリケーションを持っています。バンドルの1つは、Strutsを使用してWebフロントエンドを提供します。必要なStrutsライブラリは、Webフロントエンドバンドル内に存在します。Struts 2はOSGiバンドルとして利用できますか?

別のWebフロントエンドに異なる依存関係と非常に異なるユースケースを提供する2番目のバンドルを追加します。私はそのバンドルにもStrutsを使いたいですが、同じライブラリを2つのバンドルに入れたくありません。

OSGiでは、Strutsライブラリを独自のバンドルに分けて、両方のバンドルから使用することは問題ありません。しかし、私はStrutsがそのようにパッケージ化されているのを見つけられませんでした。

いくつかのすばやいグーグルで、the Struts homepageを見ると何も得られませんでした。私は、Strutsの内部でOSGiコンテナを実行するためのプラグインを見つけることができましたが、それは私が望むものではありません。

答えて

5

http://repo2.maven.org/maven2/org/apache/struts/struts2-core/2.1.6/の現在のストラットバンドルを見てください。

たとえば、struts2-core-2.1.6.jarをダウンロードしてMETA-INF/MANIFEST.MFを見てみると、OSGIヘッダーが含まれていることがわかります(Import-Package、Export-パッケージ、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のアプリ内でそれらを使用して行く方法はありませんアイデア - しかし、理論的には、あなたが少なくともそれらを参照し、「もの」を行うことができます! :)

+0

実際には、これが意味することはイエスです。StrutsはOSGiバンドルとして利用可能です:) –

+1

そして、Springリポジトリ(www.springsource.com/repository)は、常に、すでにラップされた一般的なJavaライブラリを探すのに適しています。正しいOSGiヘッダー。 – SteveD

-3

Strutsの探しているものをこれはサーブレットコンテナ(分散コンポーネントアーキテクチャ)のためのフレームワークです。 oSGIは分散コンポーネントアーキテクチャでもあります。

oscar http serviceを見て、oscarのコードに基づいて、oscarのHttpService、コンテキストなどをjettyサーブレットコンテナにどのようにマッピングしたかを確認することをお勧めします。そして、組み込み桟橋の上を走るようにストラットフレームワークを移植します。

+0

そのアプローチは実際には本当に複雑です。 –

-1

は、私はよく、私はあなたが作るしなければならないと思う、それは java lobby: Modularizing existing web applications with OSGi

役立つかもしれない、あなたは彼らに少し役立つ don brown's web blog

を見つけて、この記事を読んで期待し、これらのリンクを見てみましょうあなた自身をラッピングする。

+1

申し訳ありませんが、これらの記事は両方とも、WebアプリケーションでOSGiコンテナを実行しているかのように、別の方法で実行しています。私はStrutsを使用するWebフロントエンドを持つサーバー側のOSGiアプリケーションを持っていますが、今度は両方のバンドルに同じStruts-JARを置くことなく、Strutsを使用する別のフロントエンドを追加したいと思います。 –

0

Mavenを使用すると、任意のライブラリからOSGiバンドルを簡単に作成できます。 Strutsは中央のMavenリポジトリのOSGi-Bundleとしてすでに利用可能であるため(受け入れられた回答を参照)、その解決策を個別のquestion & answerポストに入れます。

関連する問題