- 浏览: 176830 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Net19_Giry:
我是android项目。
利用eclipse wtp 生成web service client 端 -
Net19_Giry:
我按照file->new->other->w ...
利用eclipse wtp 生成web service client 端 -
草原阿Q:
((MyChartMouseListener) listene ...
jfreechart 对于鼠标事件响应的扩展 -
zzffzf:
zzffzf@yeah.net楼主麻烦发个例子谢谢,我也是找不 ...
利用struts2 springdm felix实现一个web应用 -
z_xiaodong7134:
非常感谢!博主
利用felix和struts2实现osgi web(三)
springdm是spring和osgi之间的桥梁,利用这个桥梁在osgi的bundle中,可以方便的利用spring的IOC、AOP、配置等特征来管理bundle中的对象,在Struts2的发布包中,自带了一个struts2-osgi-demo-plugin的例子工程,其中就是一个利用springdm管理osgi struts2 bundle的实现。
这个例子配置运行的步骤如下:
1、建立一个普通的web工程,在web的配置文件web.xml中加入对于struts2、springdm、osgi的支持,通过context-param的配置,制定在工程中,spring的加载类是OSGi的实现:org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext,也指定了bundle中的spring配置文件所在的位置/META-INF/spring目录。
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>webapp</display-name> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.xml</param-value> </context-param> <filter> <filter-name>struts2-prepare</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> </filter> <filter> <filter-name>struts2-execute</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2-prepare</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2-execute</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.apache.struts2.osgi.StrutsOsgiListener</listener-class> </listener> <listener> <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextClass</param-name> <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value> </context-param> <context-param> <param-name>contextConfigLocation</param-name> <param-value>osgibundle:/META-INF/spring/*.xml</param-value> </context-param> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
2、把Struts的core、osgi、felix实现jar,放到web的lib目录下,实现web工程自动加载felix引擎到系统的运行环境中,并在struts.xml配置文件中设置两个常量:
<constant name="struts.objectFactory" value="osgi" /> <constant name="struts.objectFactory.delegate" value="springOsgi" />
3、在src目录下建立bundles目录,并建立以数字命名的子目录,子目录的名字代表在其中的bundles启动的基本,在这个例子中,需要放入有关springdm(2.0)的bundles、spring(3.0.0)和log实现及其他一些必须的bundles,如下图所示:
然后再建立一个3的子目录,把struts2-osgi-demo-bundle-2.1.8.1.jar放入其中,在application Server上启动web工程,进行访问,可以获得这样的界面:
就表示这个demo运行成功了,在demo中有spring和struts2的配置,其中体现了springdm的作用。
评论
我的邮箱是:guozhanxian@gmail.com
的bundle控制台老报错,不能查看原先的bundle,我怀疑是不是某些bundle影响的?
freemarker.core.InvalidReferenceException: Expression bundles is undefined on line 37, column 16 in osgi/admin/viewBundles.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:100)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.Environment.process(Environment.java:189)
at freemarker.template.Template.process(Template.java:237)
后台包如下的错误:
SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:771)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:506)
1、我定义了一个接口和实现类的业务bundle,主要类内容如下:
1、
package com.zxn.example.service.compute.bussiness;
public interface TimeService {
public String getTime();
}
2、
package com.zxn.example.service.compute.bussiness.impl;
import org.apache.struts2.osgi.interceptor.BundleContextAware;
import org.osgi.framework.BundleContext;
import com.zxn.example.service.compute.bussiness.TimeService;
public class TimeServiceImpl implements TimeService, BundleContextAware {
BundleContext bundleContext;
@Override
public void setBundleContext(BundleContext bundleContext) {
this.bundleContext = bundleContext;
}
@Override
public String getTime() {
// TODO Auto-generated method stub
return "this is the business time!";
}
}
3、spring的配置信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
<!--
regular spring configuration file defining simple service bean. We've
kept the osgi definitions in a separate configuration file so that
this file can easily be used for testing outside of an OSGi
environment
-->
<!--
bundle:为每一个服务的导入者生成一个新的服务实例。当服务导入者停止时,服务实例会被回收。
-->
<bean id="businessTime" scope="bundle"
class=" com.zxn.example.service.compute.bussiness.impl.TimeServiceImpl" />
<!--
自动将受管Bean暴露成OSGi服务,并注册到OSGi容器中。不需要借助BundleActivator对象。
-->
<osgi:service id="personManagerService" ref="businessTime"
interface="com.zxn.example.service.compute.bussiness.TimeService" />
</beans>
4、meniinfor的信息
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Bussiness
Bundle-SymbolicName: com.zxn.example.service.compute.bussiness
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.zxn.example.service.compute.bussiness.Activator
Bundle-Vendor: ZXN
Spring-Context: *;create-asynchronously:=false
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.apache.struts2.osgi.interceptor,
org.osgi.framework,
com.opensymphony.xwork2,
com.zxn.example.service.compute.bussiness
Export-Package: com.zxn.example.service.compute.bussiness
另一是2、struts web的bundle,定义如下:
package com.zxn.example.struts.web;
import org.apache.struts2.osgi.interceptor.BundleContextAware;
import org.osgi.framework.BundleContext;
import com.opensymphony.xwork2.ActionSupport;
import com.zxn.example.service.compute.bussiness.TimeService;
public class BusinessAction extends ActionSupport implements BundleContextAware {
private static final long serialVersionUID = 1L;
BundleContext bundleContext;
private String computerResult;
private TimeService timeService;
public String getComputerResult() {
return computerResult;
}
public void setComputerResult(String computerResult) {
this.computerResult = computerResult;
}
@Override
public String execute() {
computerResult=timeService.getTime();
// computerResult="sdfsdfsdfsdf";
return SUCCESS;
}
@Override
public void setBundleContext(BundleContext bundleContext) {
// TODO Auto-generated method stub
this.bundleContext = bundleContext;
}
}
spring配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
<osgi:reference id="timeServiceOSGI" interface="com.zxn.example.service.compute.bussiness.TimeService" />
<bean id="resultBusinessAction" scope="prototype"
class="com.zxn.example.struts.web.BusinessAction">
<property name="timeService" ref="timeServiceOSGI" />
</bean>
</beans>
Manifest file 如下:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Web
Bundle-SymbolicName: com.zxn.example.struts.web
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: ZXN
Spring-Context: *;create-asynchronously:=false
Private-Package: result,.
Struts2-Enabled: true
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: com.opensymphony.xwork2,
com.zxn.example.service.compute.bussiness,
com.zxn.example.struts.web,
org.apache.struts2.osgi.interceptor,
org.osgi.framework
Export-Package: com.zxn.example.struts.web;uses:="org.osgi.framework,com.opensymphony.xwork2,org.apache.struts2.osgi.interceptor,com.zxn.example.service.compute.bussiness;"
struts的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="computer-example" namespace="/result" extends="osgi-default">
<action name="resultBusiness" class="com.zxn.example.struts.web.BusinessAction">
<result type="freemarker">/result/result.ftl</result>
</action>
</package>
</struts>
配置都没有问题,启动web也没问题,spirngDM 的所有bundle和struts的所有buddle都正常启用,就是访问struts的action时候,找不到spring的bean,单纯struts是起作用的,在excute方法中给computerResult="sdfsdfsdfsdf 做测试是没问题的,请楼主帮忙,分析下,集成问题出在哪里?
详细的2个工程我已经上传到我的空间中,地址如下:
http://liaofan2009.iteye.com/admin/blogs/977656
liaofan2009@163.com
msn :liaofan2009@163.com
不知道163最大接受的附件是多少呀,楼主好事做的底,如果war包很大,楼主可以将war包压缩分包发给我,谢谢
还不知道如何去处理?
另外,我用springDM1.1.2能启动spring的buddle,但开发出来的spring+struts集成后
启动不报错,但找不到spring的实现,bean不起作用,感觉很郁闷,希望楼主好心给推广下,或上传个war包将不胜感激!
我加入springDM2.0,进行实现struts和spring集成的时候老报如下的错误:
反复调整日志都不可以,涉及到的日志都包含了。
com.springsource.slf4j.api-1.5.6.jar
com.springsource.slf4j.log4j-1.5.6.jar
com.springsource.slf4j.nop-1.5.6.jar
com.springsource.slf4j.org.apache.commons.logging-1.5.6.jar
com.springsource.org.apache.log4j-1.2.15.jar
楼主能否给分析下,上传个集成spring的war包呀,
Mar 22, 2011 3:50:16 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\osgi_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\webapps\WEB-INF\lib\com.springsource.javax.servlet-2.4.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (org.apache.struts2.osgi.FelixOsgiHost).
log4j:WARN Please initialize the log4j system properly.
org.osgi.framework.BundleException: Fragments with exports, imports, or native code are not currently supported.
at org.apache.felix.framework.util.manifestparser.ManifestParser.validateFragment(ManifestParser.java:270)
at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:100)
at org.apache.felix.framework.Felix.createModule(Felix.java:3438)
at org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3381)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2366)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2278)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:130)
at org.apache.felix.main.AutoActivator.processAutoProperties(AutoActivator.java:121)
at org.apache.felix.main.AutoActivator.start(AutoActivator.java:55)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:3835)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix.init(Felix.java:857)
at org.apache.felix.framework.Felix.start(Felix.java:889)
at org.apache.struts2.osgi.FelixOsgiHost.startFelix(FelixOsgiHost.java:122)
at org.apache.struts2.osgi.FelixOsgiHost.init(FelixOsgiHost.java:426)
at org.apache.struts2.osgi.StrutsOsgiListener.contextInitialized(StrutsOsgiListener.java:21)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Auto-properties install: org.osgi.framework.BundleException: Could not create bundle object.
org.osgi.framework.BundleException: Fragments with exports, imports, or native code are not currently supported.
at org.apache.felix.framework.util.manifestparser.ManifestParser.validateFragment(ManifestParser.java:270)
at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:100)
at org.apache.felix.framework.Felix.createModule(Felix.java:3438)
at org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3381)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2366)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2278)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:130)
at org.apache.felix.main.AutoActivator.processAutoProperties(AutoActivator.java:121)
at org.apache.felix.main.AutoActivator.start(AutoActivator.java:55)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:3835)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix.init(Felix.java:857)
at org.apache.felix.framework.Felix.start(Felix.java:889)
at org.apache.struts2.osgi.FelixOsgiHost.startFelix(FelixOsgiHost.java:122)
at org.apache.struts2.osgi.FelixOsgiHost.init(FelixOsgiHost.java:426)
at org.apache.struts2.osgi.StrutsOsgiListener.contextInitialized(StrutsOsgiListener.java:21)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Auto-properties install: org.osgi.framework.BundleException: Could not create bundle object.
org.osgi.framework.BundleException: Fragments with exports, imports, or native code are not currently supported.
at org.apache.felix.framework.util.manifestparser.ManifestParser.validateFragment(ManifestParser.java:270)
at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:100)
at org.apache.felix.framework.Felix.createModule(Felix.java:3438)
at org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3381)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2366)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2278)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:130)
at org.apache.felix.main.AutoActivator.processAutoProperties(AutoActivator.java:143)
at org.apache.felix.main.AutoActivator.start(AutoActivator.java:55)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:3835)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix.init(Felix.java:857)
at org.apache.felix.framework.Felix.start(Felix.java:889)
at org.apache.struts2.osgi.FelixOsgiHost.startFelix(FelixOsgiHost.java:122)
at org.apache.struts2.osgi.FelixOsgiHost.init(FelixOsgiHost.java:426)
at org.apache.struts2.osgi.StrutsOsgiListener.contextInitialized(StrutsOsgiListener.java:21)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Auto-properties start: org.osgi.framework.BundleException: Could not create bundle object.
org.osgi.framework.BundleException: Fragments with exports, imports, or native code are not currently supported.
at org.apache.felix.framework.util.manifestparser.ManifestParser.validateFragment(ManifestParser.java:270)
at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:100)
at org.apache.felix.framework.Felix.createModule(Felix.java:3438)
at org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3381)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2366)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2278)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:130)
at org.apache.felix.main.AutoActivator.processAutoProperties(AutoActivator.java:143)
at org.apache.felix.main.AutoActivator.start(AutoActivator.java:55)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:3835)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
at org.apache.felix.framework.Felix.init(Felix.java:857)
at org.apache.felix.framework.Felix.start(Felix.java:889)
at org.apache.struts2.osgi.FelixOsgiHost.startFelix(FelixOsgiHost.java:122)
at org.apache.struts2.osgi.FelixOsgiHost.init(FelixOsgiHost.java:426)
at org.apache.struts2.osgi.StrutsOsgiListener.contextInitialized(StrutsOsgiListener.java:21)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Auto-properties start: org.osgi.framework.BundleException: Could not create bundle object.
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/2/com.springsource.slf4j.api-1.5.6.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0))))
org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0)))
at org.apache.felix.framework.Felix._resolveBundle(Felix.java:1792)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1652)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/2/com.springsource.slf4j.org.apache.commons.logging-1.5.6.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0))))
org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0)))
at org.apache.felix.framework.Felix._resolveBundle(Felix.java:1792)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1652)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/2/org.springframework.aop-3.0.0.RC1.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0))))
org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0)))
at org.apache.felix.framework.Felix._resolveBundle(Felix.java:1792)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1652)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/2/org.springframework.beans-3.0.0.RC1.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0))))
org.osgi.framework.BundleException: Unresolved constraint in bundle 14: package; (&(package=org.slf4j.impl)(version>=1.5.6)(!(version>=2.0.0)))
at org.apache.felix.framework.Felix._resolveBundle(Felix.java:1792)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1652)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/2/spring-osgi-extender-2.0.0.M1.jar (org.osgi.framework.BundleException: Activator start error in bundle org.springframework.osgi.extender [29].)
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)
at org.springframework.osgi.extender.internal.boot.ChainActivator.<init>(ChainActivator.java:36)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3548)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1666)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:198)
at org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
at org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:118)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 16 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:486)
at org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185)
... 20 more
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/2/spring-osgi-web-extender-2.0.0.M1.jar (org.osgi.framework.BundleException: Activator start error in bundle org.springframework.osgi.web.extender [33].)
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)
at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener.<clinit>(WarLoaderListener.java:292)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3548)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1666)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
ERROR: Error starting file:/D:/osgi_workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/webapps/WEB-INF/classes/bundles/3/struts2-osgi-demo-bundle-2.2.1.1.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle 1: package; (&(package=com.opensymphony.xwork2)(version>=2.2.0)))
org.osgi.framework.BundleException: Unresolved constraint in bundle 1: package; (&(package=com.opensymphony.xwork2)(version>=2.2.0))
at org.apache.felix.framework.Felix._resolveBundle(Felix.java:1792)
at org.apache.felix.framework.Felix._startBundle(Felix.java:1652)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1180)
at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:265)
at java.lang.Thread.run(Thread.java:619)
Mar 22, 2011 3:50:22 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.apache.struts2.dispatcher.ng.listener.StrutsListener
Unable to load configuration. - action - bundle://1.0:1/struts.xml:9:64
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:431)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.listener.StrutsListener.contextInitialized(StrutsListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Unable to load configuration. - action - bundle://1.0:1/struts.xml:9:64
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
... 17 more
Caused by: Action class [helloWorldAction] not found - action - bundle://1.0:1/struts.xml:9:64
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:409)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:354)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:468)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:264)
at org.apache.struts2.osgi.BundlePackageLoader.loadPackages(BundlePackageLoader.java:58)
at org.apache.struts2.osgi.OsgiConfigurationProvider.loadConfigFromBundle(OsgiConfigurationProvider.java:135)
at org.apache.struts2.osgi.OsgiConfigurationProvider.loadPackages(OsgiConfigurationProvider.java:100)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
... 19 more
Mar 22, 2011 3:50:22 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Mar 22, 2011 3:50:22 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Mar 22, 2011 3:50:22 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/webapps] startup failed due to previous errors
Mar 22, 2011 3:50:22 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Mar 22, 2011 3:50:22 PM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class org.apache.struts2.dispatcher.ng.listener.StrutsListener
java.lang.NullPointerException
at org.apache.struts2.dispatcher.ng.listener.StrutsListener.contextDestroyed(StrutsListener.java:55)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4244)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4879)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4749)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Mar 22, 2011 3:50:22 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/webapps] appears to have started a thread named [FelixStartLevel] but has failed to stop it. This is very likely to create a memory leak.
发表评论
-
equinox在standalone application中启动
2011-09-15 16:10 1573前一段时间,利用Felix作为osgi contai ... -
osgi中不同classloader之间对象的复制问题解决
2011-05-31 11:20 2716在osgi环境中(我用的是felix),不同的bu ... -
osgi服务模型
2011-02-11 10:29 1548基于 OSGi 服务模型实现组件之间松耦合通信 ... -
对于osgi bundle的集成测试研究
2011-02-10 17:06 2228由于OSGI技术优秀的模块化技术分离,在不同的bund ... -
在osgi bundle中访问osgi container之外的传统服务
2010-11-22 06:46 2228osgi container是java实践中的一个 ... -
利用 distribution-cxf实现dosgi
2010-11-14 21:22 3059在osgi规范R4.2版本中,定义了分布式的osgi。d ... -
在osgi中应用log4j(二)
2010-11-08 12:51 1726在上一篇中,利用了Proxy和在Bundle中加载jar包的 ... -
在osgi容器外应用osgi bundle提供的服务
2010-11-05 10:25 2385任何系统都不是孤立存在的,都有一个持续发展的过程,在java ... -
在osgi中应用log4j(一)
2010-11-04 14:48 2211Osgi中对于Log的提供,在规范中规定了几种方式 ... -
利用felix和struts2实现osgi web(三)
2010-10-25 17:06 5772在前一篇文章中,详细的描述了几个应用bundle的实现 ... -
利用felix和struts2实现osgi web(一)
2010-10-25 16:49 8539这是一篇引用的文章, ... -
利用felix和struts2实现osgi web(二)
2010-10-25 15:36 4717OSGI(Open Service Gateway I ...
相关推荐
利用felix和struts2实现osgi web
springDM+felix
使用 Felix 和 Struts2 开发 Web 应用 采用了struts 构建web ,feilx 构建bundle
Struts2 Felix1.4搭建OSGI web work infrastructure Srouces
1、解压后,里面有5个工程,名字为abc的工程是个web工程,用来部署struts插件工程,其他四个是从网上找的获取时间的例子; 2、把abc这个工程导入eclipse,发布到tomcat6.0运行; 3、访问...
Equinox、Apache Felix与Spring DM 工程创建工程发布
felix1.4.0 集成struts2。1.8 Hibernate3.1.3
spring与struts整合所需的jar包。 自己老项目中的jar,可以运行。 jar名称概要如下: struts2-spring-plugin-2.1.8.1.jar commons-****.jar org.apache.felix.****.jar spring-***.jar struts2-***.jar
参照网上的示例自己做的,主要是webapp这个bundle,可以运行
struts2-spring-plugin-2.3.30.jar, struts2-struts1-plugin-2.3.30.jar, struts2-testng-plugin-2.3.30.jar, struts2-tiles-plugin-2.3.30.jar, struts2-tiles3-plugin-2.3.30.jar, tiles-api-2.2.2.jar, tiles-...
运行嵌入式Apache Felix OSGI容器的示例Spring Boot Web应用程序 这个想法是能够: 加载运行嵌入式Felix Framework的基本Spring Boot App。 使用标准的注解(例如Spring Web控制器和ServletFilter等),使用普通...
Struts2.1.8+Felix1.4+hibernate集成源码,内部是自己通过查资料以及编写部分中间件host-register完成Hibernate3.1.3,Struts2.1.8,felix-1.4的集成。该部分的说明会在博文中说明,敬请关注,大家共同进步。
struts2-spring-plugin-2.5.2.jar, struts2-testng-plugin-2.5.2.jar, struts2-tiles-plugin-2.5.2.jar, tiles-api-3.0.5.jar, tiles-autotag-core-runtime-1.1.0.jar, tiles-core-3.0.5.jar, tiles-el-3.0.5.jar, ...
4.1.6.RELEASE.jar,spring-context-4.1.6.RELEASE.jar,spring-core-4.1.6.RELEASE.jar,spring-expression-4.1.6.RELEASE.jar,spring-test-4.1.6.RELEASE.jar,spring-web-4.1.6.RELEASE.jar,struts2-bean-validation-...
NULL 博文链接:https://kai2008.iteye.com/blog/493726
FELIX
felix文档 一个简单的helloworld
1、自己开发的OSGi Web Console,适用于实现了OSGi规范的Equinox、Felix等...2、展示了如何把OSGi框架作为一个组件嵌入到现有的未基于OSGi开发的Web应用当中,在Web应用中可获取OSGi中的Service以增加应用的灵活性。
该例子属于OSGi的应用,服务器使用的是felix1.4.0,在我机器上运行成功
最后对0SGi知识进行深入讲解,通过对0SGi规范和实现框架(Equinox、Felix、Spring—DM和Apache CXF)的分析,以及最佳实践的介绍,帮助读者更好地使用OSGi。 OSGi原理与最佳实践 目录: 第1章 OSGi简介 第2章 OSGl...