2009-05-21 4 views
4

У меня есть серверное приложение, которое состоит из нескольких пакетов OSGi, некоторые мои, некоторые сторонние. Один из пакетов предоставляет веб-интерфейс с использованием Struts. Необходимые библиотеки Struts находятся в интерфейсе веб-интерфейса.Является ли Struts 2 доступным как комплект OSGi?

Теперь я хочу добавить второй пакет, который предоставляет другой веб-интерфейс с различными зависимостями и очень другим вариантом использования. Я также хочу использовать Struts для этого пакета, но я не хочу размещать те же библиотеки в двух пакетах.

С OSGi не должно быть проблем, чтобы разделить библиотеки Struts в собственном комплекте и использовать это из обоих моих пакетов. Тем не менее, я не смог найти Struts, упакованных таким образом.

Некоторые быстрые поисковые запросы и взгляды на the Struts homepage ничего не дали. Я мог бы найти плагин для Struts для запуска контейнера OSGi внутри Struts, но это не то, что я хочу.

ответ

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 посмотреть, как они сопоставили Оскар HttpService, контекст и т. Д. С контейнером сервлетов причал. А затем запустите платформу расположений, чтобы работать поверх встроенной пристани.

+0

Этот подход на самом деле действительно сложный. –

-1

посмотрите на эти ссылки, я надеюсь, что вы найдете их немного полезной don brown's web blog

и читать эту статью, может быть полезным java lobby: Modularizing existing web applications with OSGi

хорошо я думаю, что вы должны сделать обертывание задачи самостоятельно.

+1

Извините, обе эти статьи касаются того, чтобы делать это наоборот, запуская контейнер OSGi в веб-приложении.У меня есть приложение OSGi на стороне сервера с веб-интерфейсом, в котором используется Struts, и теперь я хочу добавить второй, другой front-end, который также использует Struts, не помещая те же самые Struts-JAR в оба пакета. –

0

Используя Maven, очень легко создать пакет OSGi из любой библиотеки. Поскольку Struts уже доступен как OSGi-Bundle в центральном хранилище Maven (см. Принятый ответ), я помещал это решение в отдельное сообщение question & answer.