`

利用struts2 springdm felix实现一个web应用

    博客分类:
  • osgi
阅读更多

  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的作用。

  • 大小: 15.7 KB
  • 大小: 49.4 KB
分享到:
评论
12 楼 zzffzf 2014-05-02  
zzffzf@yeah.net楼主麻烦发个例子谢谢,我也是找不到spring的bean
11 楼 anacristing 2012-09-04  
为什么spring-dm包里找不到org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext啊?
10 楼 qq330749800 2012-05-10  
楼主有研究过只使用Struts2和Fliex实现web工程么?有没有相关DEMO呢?
9 楼 guozhanxian 2012-04-11  
楼主能不能把你的例子发给我一份呢?谢谢搂住了。
我的邮箱是:guozhanxian@gmail.com
8 楼 liaofan2009 2011-03-30  
包收到,而且运行bundle也没问题,但访问admin/bundles.action
的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)
7 楼 xingtongkun 2011-03-29  
我给你的邮箱中发了一个可以运行的war包。在你上传的配置中,在struts web bundle的menifest文件中,把struts-enable:true放到最上边。可以参考我给你的war中的web bundle中的配置
6 楼 liaofan2009 2011-03-28  
问几个关于springDM和 struts集成的问题
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


5 楼 liaofan2009 2011-03-28  
我的邮箱是
liaofan2009@163.com
msn :liaofan2009@163.com

不知道163最大接受的附件是多少呀,楼主好事做的底,如果war包很大,楼主可以将war包压缩分包发给我,谢谢
4 楼 xingtongkun 2011-03-24  
war包超出了javaeye上传的限制,给个其它联系方式,我给你发过去
3 楼 liaofan2009 2011-03-23  
能给个详细的说明吗?传个实例给我吧,谢谢了,本人对osgi理解比较少,
还不知道如何去处理?
另外,我用springDM1.1.2能启动spring的buddle,但开发出来的spring+struts集成后
启动不报错,但找不到spring的实现,bean不起作用,感觉很郁闷,希望楼主好心给推广下,或上传个war包将不胜感激!
2 楼 xingtongkun 2011-03-23  
在struts2中自带的osgi平台felix的版本是1.4,这个版本是不支持plugin的fragment的,在spingdm中介绍的加载log应用fragment肯定是不行的。需要你把它生成一个bundle,启动的时候就没有这个问题了。
1 楼 liaofan2009 2011-03-22  
请教几个问题,felix和struts集成我已经实现了按着楼主的方式实现了,但
我加入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.

相关推荐

Global site tag (gtag.js) - Google Analytics