首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • struts2+spring2+hibernate3 整合问题!
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-18 23:51:19 楼主
    我在整合struts2+spring2+hibernate3时,applicationContext.xml文件中下面这行老是报错:
    ----------------------------------------
    <bean id="spring-object-factory" class="org.apache.struts2.spring.StrutsSpringObjectFactory" init-method="initObjectFactory" />
    ----------------------------------------

    错误信息: No constructor with 0 argument(s) defined in class org.apache.struts2.spring.StrutsSpringObjectFactory

    且在Tomcat启动时出现如下错误信息:
    ----------------------------------------
    2008-04-18 23:16:33,800 [main] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring-object-factory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.struts2.spring.StrutsSpringObjectFactory]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.apache.struts2.spring.StrutsSpringObjectFactory. <init>()
    Caused by:
    org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.struts2.spring.StrutsSpringObjectFactory]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.apache.struts2.spring.StrutsSpringObjectFactory. <init>()
    Caused by:
    java.lang.NoSuchMethodException: org.apache.struts2.spring.StrutsSpringObjectFactory. <init>()
    at java.lang.Class.getConstructor0(Class.java:2647)
    at java.lang.Class.getDeclaredConstructor(Class.java:1953)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:54)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:759)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:724)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:387)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3763)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4211)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
    at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
    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:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-19 09:16:061楼 得分:0
    正在愁这个整合问题
    我们一起顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-19 09:20:182楼 得分:0
    错误信息:   No   constructor   with   0   argument(s)   defined   in   class   org.apache.struts2.spring.StrutsSpringObjectFactory
    错误信息出现在spring配置文件,你有一个类使用的是构造注入StrutsSpringObjectFactory,但是你应该没有在类代码中写构造方法      
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-19 11:57:173楼 得分:0
    下面是我的applicationContext.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-2.0.xsd">

    <bean id="spring-object-factory" class="org.apache.struts2.spring.StrutsSpringObjectFactory" init-method="initObjectFactory" />

    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
    </property>
    <property name="url"
    value="jdbc:microsoft:sqlserver://localhost:1433">
    </property>
    <property name="username" value="sa"> </property>
    <property name="password" value="sa"> </property>
    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.Oracle9Dialect
    </prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/example/hibernate/Users.hbm.xml </value> </list>
    </property>
    </bean>

    <!-- Transaction Manage Bean -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory"> <ref local="sessionFactory"/> </property>
    </bean>

        <bean id="baseProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
            <property name="transactionManager"> <ref bean="transactionManager"/> </property>
            <property name="transactionAttributes">
                <props>
    <prop key="*">PROPAGATION_REQUIRED </prop>
    <!-- prop key="get*">PROPAGATION_REQUIRED,readOnly </prop-->
                </props>
            </property>
        </bean>

    <!--  Business Logic Bean -->
    <bean id="userService" parent="baseProxy">
        <property name="target"> <ref local="userServiceImpl" /> </property>
    </bean>
    <bean id="userServiceImpl" class="com.example.service.impl.UserServiceImpl" autowire="byName" />

    <!--  Struts2 Action Bean -->
    <bean id="UserManage" class="com.example.action.UserManage" scope="prototype" autowire="byName" >
     
    </bean>
    <!-- <bean id="UsersDAO" class="com.example.hibernate.UsersDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean> --> </beans>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-19 15:52:194楼 得分:0
    <bean id="spring-object-factory" class="org.apache.struts2.spring.StrutsSpringObjectFactory" init-method="initObjectFactory" /> 你这句是做什么用的,没用就去了吧,我整合的时候是没有用到这个
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-21 13:01:495楼 得分:0
    可以看看spring的文档如何整合struts,看你用的是struts整合spring的。spring作为主线
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 13:13:316楼 得分:0
    StrutsSpringObjectFactory  构造器的问题?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 13:34:387楼 得分:0
    你是不是用constructor注入但是没写参数啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 21:47:428楼 得分:0
    开发者突击 这本书有 SSH2 的例子,可以参考一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 22:26:109楼 得分:0
    我是这样写的
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>

    <bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName">
    <value>com.microsoft.jdbc.sqlserver.SQLServerDriver </value>
    </property>
    <property name="url">
    <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=bookshop;SelectMethod=cursor </value>
    </property>
    <property name="username">
    <value>sa </value>
    </property>
    <property name="password">
    <value>123456 </value>
    </property>

    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.SQLServerDialect
    </prop>
    <prop key="hibernate.show_sql">true </prop>
    </props>
    </property>
    <property name="mappingResources">



    <value>bookshop/hbm/Category.hbm.xml </value>

    </property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
          <ref local="sessionFactory" />
        </property>
    </bean>

    <bean id="baseTxProxy" lazy-init="true" abstract="true"
      class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
      <property name="proxyInterfaces">
      <list>
      <value>bookshop.dao.IBasicDAO </value>
      </list>
      </property>
        <property name="transactionManager">
          <ref bean="transactionManager" />
        </property> 
        <property name="transactionAttributes">
          <props>
            <prop key="save*">PROPAGATION_REQUIRED </prop>
            <prop key="delete*">PROPAGATION_REQUIRED </prop>       
            <prop key="*">readOnly </prop>
          </props>
        </property>
        </bean>


    </beans>

    有一个问题哦~
    这里你是这样写的:
    <property name="driverClassName"
    value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
    </property>
    可是这里
    <prop key="hibernate.dialect">
    org.hibernate.dialect.Oracle9Dialect
    </prop>
    方言指向的是Oracle,可以这样子写的吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 23:24:0710楼 得分:0
    先不要写那么长。。把东西都注释掉,让最基本的框架跑起来,再加入bean,action配置。。一下下就能排除错误。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-27 17:48:2711楼 得分:0
    就算不写那么长,jar包也经常冲突,我配一回错一回,每次都迷迷糊糊的改。
    关注ing...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-27 18:10:5412楼 得分:0
    配置这东西最好是一次配置好 不要老动 呵呵

    容易打消积极性
    给你个傻瓜教程,细心搞定下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-27 19:01:3913楼 得分:0
    你检查一下你的dataSource配置,你试一试将它的来类改为class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    eclipse版本问题,dataSource之间不能有空格。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-27 21:02:3814楼 得分:0
    jar包也经常冲突
    我配置的时候也是。迷迷糊糊的就OK了
    现在又一样的问题。。继续迷迷糊糊的寻找
    、得做一个笔记。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-28 15:56:1015楼 得分:0
    同样 ,至今还为这个问题而苦恼。希望那个有一个很明确的方法,减少这种错误。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 20:07:1716楼 得分:0
    看了你的顺序
    是不是你的整合的顺序不对啊
    有可能!!!
    (小建议)

    顺序
    Spring2---->Hibernate3.1---->Struts2

    开发环境最好用Myeclipse 6.0.1
    因为Struts2还没有大面积的使用所以Myeclipse5.5/5.0都不是很好使用 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ww6365544
    • 等级:
    发表于:2008-08-21 15:13:4417楼 得分:0
    跟楼主一样的问题,
    关键是现在是整合struts2.0的
    又不是struts1.2
    看了文档后才这么配了
    也不知道什么原因呢
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved