Мы уже некоторое время используем Apache ServiceMix версии 4.2.0-fuse-02-00 от Fuse для стандартных приложений OSGi и довольно успешно. Мы также использовали CXF для обеспечения доступности веб-сервисов.
Теперь мы хотели бы развернуть наши веб-приложения в servicemix4 и использовать слой OSGi для зависимостей и служб. Однако кажется, что упакованный в PAX Web не поддерживает taglibs, которые мы активно использовали: Richfaces, facelets и т. д. Похоже, что решение SpringDM, которое позволяет работать с taglibs, описано здесь: http://static.springsource.org/osgi/docs/current/reference/html/web.html должен работать, однако мне было трудно запустить веб-сервер, и сейчас я получаю эту ошибку.
Exception in thread "WebExtender-Init" java.lang.NoClassDefFoundError: org/apache/catalina/Loader
at org.springframework.osgi.web.extender.internal.activator.WarListenerConfiguration.createDefaultWarDeployer(WarListenerConfiguration.java:194)
at org.springframework.osgi.web.extender.internal.activator.WarListenerConfiguration.<init>(WarListenerConfiguration.java:105)
at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$1.run(WarLoaderListener.java:366)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.Loader
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 4 more
Я создал 2 фрагмента, как предлагает документация Spring. но они не решатся, они останутся как Installed
1) фрагмент конфигурации веб-сервера имеет следующий хост фрагмента:
<Fragment-Host>org.springframework.osgi.web.extender</Fragment-Host>
и имеет файл META-INF/spring/extender/tomcat-deployer.xml, содержащий
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="warDeployer"
class="org.springframework.osgi.web.deployer.tomcat.TomcatWarDeployer" />
</beans>
2) и фрагмент конфигурации Catalina со следующим хостом:
<Fragment-Host>org.springframework.osgi.catalina.start.osgi</Fragment-Host>
и определенный файл conf/server.xml, который в основном является копией общей установки Windows файла tomcat 6 server.xml.
Я также несколько дней возился с зависимостями, это было сложно. но вот функции, с которыми я возился, чтобы зайти так далеко. Я также устанавливал функцию «jpa-hibernate» по умолчанию для fuse-servicemix.
<feature name="spring-dependencies" version="1.0.0">
<bundle>mvn:org.osgi/org.osgi.compendium/4.1.0</bundle>
<bundle>mvn:javax.el/com.springsource.javax.el/1.0.0</bundle>
<bundle>mvn:javax.xml.ws/com.springsource.javax.xml.ws/2.1.1</bundle>
<bundle>mvn:javax.xml.stream/com.springsource.javax.xml.stream/1.0.1</bundle>
<bundle>mvn:javax.xml.rpc/com.springsource.javax.xml.rpc/1.1.0</bundle>
<bundle>mvn:javax.xml.soap/com.springsource.javax.xml.soap/1.3.0</bundle>
<bundle>mvn:javax.persistence/com.springsource.javax.persistence/1.99.0</bundle>
<bundle>mvn:org.aspectj/com.springsource.org.aspectj.tools/1.6.8.RELEASE</bundle>
<bundle>mvn:org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1</bundle>
<bundle>mvn:org.apache.commons/com.springsource.org.apache.commons.lang/2.4.0</bundle>
<bundle>mvn:org.apache.xmlcommons/com.springsource.org.apache.xmlcommons/1.3.4</bundle>
<bundle>mvn:org.jboss.el/com.springsource.org.jboss.el/2.0.0.GA</bundle>
<bundle>mvn:org.jboss.javassist/com.springsource.javassist/3.9.0.GA</bundle>
<bundle>mvn:org.aopalliance/com.springsource.org.aopalliance/1.0.0</bundle>
</feature>
<feature name="spring" version="1.0.0">
<!--feature version="1.0.0">spring-dependencies</feature-->
<!--bundle>mvn:org.springframework.osgi/org.springframework.osgi.core/1.2.1</bundle--> <!-- there is 1.2.1, but servicemix plays the 1.2.0 game -->
<!--bundle>mvn:org.springframework.osgi/org.springframework.osgi.io/1.2.1</bundle--> <!-- there is 1.2.1, but servicemix plays the 1.2.0 game -->
<!--bundle>mvn:org.springframework.osgi/org.springframework.osgi.extender/1.2.1</bundle--> <!-- there is 1.2.1, but servicemix plays the 1.2.0 game -->
<!--bundle>mvn:org.springframework.osgi/org.springframework.osgi.extensions.annotation/1.2.1</bundle--> <!-- there is 1.2.1, but servicemix plays the 1.2.0 game -->
<!-- commenting the 3.0.4 release to see if i can get by with the prepacked version in servicmeix bundle>mvn:org.springframework/org.springframework.aop/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.asm/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.aspects/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.beans/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.context/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.context.support/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.core/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.expression/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.jms/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.jdbc/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.transaction/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.orm/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework.security/org.springframework.security.core/3.0.3.RELEASE</bundle-->
<bundle>mvn:org.springframework.osgi/org.springframework.osgi.web/1.2.0</bundle> <!-- there is 1.2.1, but servicemix plays the 1.2.0 game -->
<bundle>mvn:org.springframework.osgi/org.springframework.osgi.web.extender/1.2.0</bundle> <!-- there is 1.2.1, but servicemix plays the 1.2.0 game -->
</feature>
<feature name="tomcat" version="1.0.0">
<!--feature version="1.0.0">spring</feature-->
<bundle>mvn:javax.ejb/com.springsource.javax.ejb/3.0.0</bundle>
<bundle>mvn:javax.activation/com.springsource.javax.activation/1.1.1</bundle>
<bundle>mvn:javax.mail/com.springsource.javax.mail/1.4.1</bundle>
<bundle>mvn:org.apache.coyote/com.springsource.org.apache.coyote/6.0.18</bundle>
<bundle>mvn:org.apache.juli/com.springsource.org.apache.juli.extras/6.0.18</bundle>
<bundle>mvn:org.apache.catalina/com.springsource.org.apache.catalina/6.0.18</bundle>
<bundle>mvn:org.springframework/org.springframework.instrument.tomcat/3.0.4.RELEASE</bundle>
</feature>
<feature name="web-dependencies" version="1.0.0">
<!--feature version="1.0.0">spring-dependencies</feature-->
<!--feature version="1.0.0">tomcat-dependencies</feature-->
<bundle>mvn:javax.servlet/com.springsource.javax.servlet/2.5.0</bundle>
<!--bundle>mvn:javax.servlet/com.springsource.javax.servlet.jsp/2.1.0</bundle--> <!--we want this but PAX Web -JSP Support claims tooffer the same thing -->
<!--bundle>mvn:javax.servlet/com.springsource.javax.servlet.jsp.jstl/1.2.0</bundle--> <!--bundle is causing conflict issues on javax.servlet.jsp 2.1.0 in fuse, omitting for now -->
<!-- I have been having problems getting the following to work because of conflicts with the javax.servlet.jsp package 1.2.0 presented by Pax Web seems to not be able to be found -->
<bundle>mvn:javax.faces/com.springsource.javax.faces/1.2.0.09</bundle>
<bundle>mvn:javax.portlet/com.springsource.javax.portlet/2.0.0</bundle>>
<bundle>mvn:org.springframework/org.springframework.web/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.web.servlet/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework/org.springframework.web.portlet/3.0.4.RELEASE</bundle>
<bundle>mvn:org.springframework.webflow/org.springframework.binding/2.0.9.RELEASE</bundle>
<bundle>mvn:org.springframework.webflow/org.springframework.js/2.0.9.RELEASE</bundle>
<bundle>mvn:org.springframework.webflow/org.springframework.webflow/2.0.9.RELEASE</bundle>
<bundle>mvn:org.springframework.webflow/org.springframework.faces/2.0.9.RELEASE</bundle> <!--2.1.0 and up rely on Java Server Faces API 2.0 Pre-Release right now, so we must stop at 2.0.9 -->
<bundle>mvn:com.sun.facelets/com.springsource.com.sun.facelets/1.1.14</bundle>
</feature>
Я думал о переходе на SpringDM, но похоже, что проект был перенесен на Virgo, который сейчас находится только в инкубаторе. Кроме того, мы были в основном довольны Sericemix, включая функцию установки maven.
Любое понимание или ресурсы будут оценены, спасибо, Джереми