`

struts2 spring集成的一个小问题

阅读更多

今天作struts2和spring的集成,由于以前我们的开发框架webwork+spring所以按照以前的思路进行修改了配置文件的路径,也就是自定义了config的配置,然后出现如下问题:

com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory).
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:157)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMethods(ContainerImpl.java:126)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:103)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:99)
 at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:84)
 at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:82)
 at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:155)
 at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:81)
 at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:121)
 at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:452)
 at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:492)
 at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:491)
 at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
 at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:490)
 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:151)
 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
 at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
 at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
 at com.inspur.communication.platform.startup.PlatformDispatcher.init(PlatformDispatcher.java:48)
 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:221)
 at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302)
 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:78)
 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3635)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4222)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:448)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory).
 at com.opensymphony.xwork2.inject.ContainerImpl.createParameterInjector(ContainerImpl.java:239)
 at com.opensymphony.xwork2.inject.ContainerImpl.getParametersInjectors(ContainerImpl.java:229)
 at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.<init>(ContainerImpl.java:282)
 at com.opensymphony.xwork2.inject.ContainerImpl$3.create(ContainerImpl.java:130)
 at com.opensymphony.xwork2.inject.ContainerImpl$3.create(ContainerImpl.java:128)
 at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:154)

查询了半天,看网上有人碰到过,但是没有解决,于是分析代码进行查询原因,原因就是配置文件struts配置文件没有找到,于是想到了修改的配置,经过查询代码发现了这个问题,就是如果你要是修改了config,以后所有的配置只会读取配置的文件,所以struts-spring.jar等插件都采用的default的配置,所以会出错,故修改config的配置,把default的文件全部添加上,然后再添加上自己的配置文件,本来可以采用Dispatcher的DEFAULT_CONFIGURATION_PATHS然后添加自己的配置文件就可以,但是发现这个变量是private的,所有只能把里面的内容全部拷贝出来,所以这个地方的扩展自定义功能也是没有太大意义的。

  <param-name>config</param-name>
  <param-value>
   /WEB-INF/conf/platform-web.xml,struts-default.xml,struts-plugin.xml,struts.xml
  </param-value>

分享到:
评论
4 楼 freeorfeel 2009-04-03  
呼哈!

struts.xml里面:
加上 <include file="struts-default.xml" /> 吧。
这是因为如果路径改变(不是默认路径), 那么就不会继承默认的配置, 这时候就要手工添加默认配置啦!


3 楼 netliving 2008-08-08  
你需要把,struts-default.xml,struts-plugin.xml,struts.xml全部都加上,帖子后面的说明里有原因,这几个是都需要的。
2 楼 netliving 2008-08-08  
提示什么样的错误,把错误代码发上来看看
1 楼 cc19830923 2008-08-06  
<p>我把web.xml里</p>
<p> &lt;init-param&gt;<br/>   &lt;param-name&gt;config&lt;/param-name&gt;<br/>   &lt;param-value&gt;struts.xml&lt;/param-value&gt;<br/>   &lt;/init-param&gt;注释了 就没报错。</p>
<p>&lt;filter&gt;<br/>  &lt;filter-name&gt;struts2&lt;/filter-name&gt;<br/>  &lt;filter-class&gt;<br/>   org.apache.struts2.dispatcher.FilterDispatcher<br/>  &lt;/filter-class&gt;<br/> &lt;/filter&gt; 能运行了。 很奇怪 </p>

相关推荐

    struts2 spring hibernate集成

    **Struts2与Spring的集成** 主要是通过Spring插件实现,这使得Action类可以作为Spring的bean管理,实现依赖注入。这样,Action类可以直接注入服务层(Service)和DAO(数据访问对象)层的bean,简化了代码结构,增强...

    struts+spring集成

    3. **配置集成**:在Struts2的配置文件中,我们需要声明一个Struts2-Spring插件,它允许Struts2与Spring进行通信。同时,在Spring的配置文件中,需要定义Action类的bean,并配置好相关属性和依赖。 4. **AOP结合**...

    Struts Hibernate Spring集成开发宝典 源码

    内容简介 《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,...《Struts Hibernate Spring集成开发宝典》对每一个组件的讲解都是以入门级实例开始的,然后对组件的架构以及各方面的功能进行了深入的探讨。

    struts hibernate spring集成开发宝典光盘源码(一).rar

    struts hibernate spring集成开发宝典光盘源码(一).rar

    struts2入门教程及struts2集成spring

    6. **拦截器配置**:Struts2提供了一个名为`spring-plugin`的拦截器,用于处理Spring管理的bean。确保在struts.xml中配置这个拦截器,通常放在默认栈的顶部。 通过以上步骤,我们成功地将Struts2和Spring进行了集成...

    struts hibernate spring集成开发宝典光盘源码(二).rar

    这个压缩包“struts hibernate spring集成开发宝典光盘源码(二).rar”显然是一个用于学习这三大框架集成的实践项目,包含了一些示例代码和接口定义。 1. Struts:Struts 是一款开源的MVC(Model-View-Controller...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    在Java开发领域,SSH(Spring、Struts2、Hibernate)是一个经典的开源框架组合,用于构建高效、可维护的企业级Web应用程序。这些框架分别负责不同层面的任务:Spring作为基础架构框架,提供依赖注入和AOP(面向切面...

    Struts,Hibernate,Spring集成开发宝典.pdf

    《Struts Hibernate Spring集成开发宝典》对每一个组件的讲解都是以入门级实例开始的,然后对组件的架构以及各方面的功能进行了深入的探讨。 编辑推荐 《Struts Hibernate Spring集成开发宝典》的配套光盘中包含了...

    struts spring集成【下】

    通过以上步骤,我们可以成功地将Struts2和Spring集成在一起,利用Spring的强大功能管理Action类、事务以及其他的业务逻辑,同时保持Struts2的MVC架构清晰易用。这种集成方式提高了代码的可测试性,降低了耦合度,...

    struts2与spring2的整合

    Struts2和Spring是两个非常重要的Java开源框架,它们分别在MVC...然而,随着Spring Boot的兴起,现在更多地倾向于直接使用Spring MVC,而不是Struts2,因为Spring Boot提供了更加简便的集成方式和开箱即用的功能。

    flex与+struts2+hibernate+spring集成实例项目

    flex与+struts2+hibernate+spring集成实例项目,源码奉献,物有所值

    Struts Hibernate Spring集成开发宝典.part1

    《Struts Hibernate Spring集成开发宝典》中文pdf版 计算机电子书下载,《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列...

    Struts2 Spring2.5集成:系统登陆demo--带lib可直接运行

    在"Struts2 Spring2.5集成:系统登陆demo--带lib可直接运行"的项目中,开发者提供了一个已经配置好的登录系统示例,可以直接运行,帮助学习者理解Struts2和Spring如何协同工作。下面我们将深入探讨这个集成的各个...

    mongo集成spring struts2 json velocity

    在"mongo集成spring struts2 json velocity"这个项目中,我们将看到如何将这些技术整合到一起,创建一个功能丰富的Web应用程序。 首先,MongoDB的集成意味着项目会利用其NoSQL特性和文档存储的优势。Spring Data ...

    Struts2 Spring Jpa 配置测试

    6. **项目结构**:一个典型的Struts2+Spring+JPA项目会包含以下几个主要部分:Web-INF下的`web.xml`和`struts.xml`,`src/main/resources`下的`applicationContext.xml`和`persistence.xml`,以及`src/main/java`下...

    Struts Hibernate Spring 集成开发宝典 interfaces

    《Struts Hibernate Spring 集成开发宝典》是一本深度探讨Java企业级应用开发的著作,重点关注了三个核心框架的整合:Struts、Hibernate和Spring。这些框架都是Java领域中广泛使用的开源工具,它们各自在不同的层面...

    struts1.2 spring2 ibatis 集成项目实战源码

    Struts1.2、Spring2和iBatis是经典的Java Web开发框架...总之,"struts1.2 spring2 ibatis 集成项目实战源码"是一个宝贵的教育资源,通过研究这个项目,开发者能够深入理解三大框架的集成应用,提升Java Web开发能力。

    Struts Hibernate Spring 集成开发宝典springcore

    2. **Hibernate框架**:Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过Hibernate,开发者可以将Java对象直接映射到数据库表,无需编写大量的SQL语句。Hibernate支持延迟...

    第27讲--Struts与Spring集成方案1(Struts集成Spring)

    3. **配置Struts2**:在Struts2的配置文件`struts.xml`中,我们需要指定一个插件来处理Spring集成。Spring插件(`struts2-spring-plugin-x.x.x.jar`)允许Struts2从Spring容器中获取Action实例。添加以下配置片段: ...

    struts+spring的一个简单项目

    在"struts+spring"的集成项目中,通常会有一个Spring配置文件(如:applicationContext.xml),用于定义bean,包括Action类、Service类和DAO类。这些bean可以通过Struts的ActionContext获取到,以便在Action中使用。...

Global site tag (gtag.js) - Google Analytics