我也在进行融合,可在TOMCAT启动后就报错:java.lang.ClassCastException: org.apache.naming.resources.FileDirContext,同样希望各位兄弟姐妹出手相救。
我现在活在20层地狱!!!!

解决方案 »

  1.   

    我觉得MyEclipse只不过是个工具而已,有没有它都可以整合的啊!
    我给你个思路,因为Spring对Hibernate提供了非常好的支持,所以Hibernate直接整合到Spring的应用上下文中,下面是我写的applicationContext.xml,这个要放到/WEB-INF/下,这个是我写的项目的配置文件,只供参考哦!
    applicationContext.xml-------------------------------
    <?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="propertyPlace" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>/WEB-INF/jdbc.properties</value>
    </list>
    </property>
    </bean>
    <!--配置Hibernate数据源-->
    <!--基本的数据源,无连接池使用org.springframework.jdbc.datasource.DriverManagerDataSource-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass">
    <value>${jdbc.driverClass}</value>
    </property>
    <property name="jdbcUrl">
    <value>${jdbc.url}</value>
    </property>
    <property name="user">
    <value>${jdbc.username}</value>
    </property>
    <property name="password">
    <value>${jdbc.password}</value>
    </property>
    <!--C3P0连接池配置-->
    <property name="minPoolSize">
    <value>${jdbc.c3p0.minPoolSize}</value>
    </property>
    <property name="maxPoolSize">
    <value>${jdbc.c3p0.maxPoolSize}</value>
    </property>
    <!--连接的过期时间-->
    <property name="maxIdleTime">
    <value>${jdbc.c3p0.maxIdleTime}</value>
    </property>
    </bean>
    <!--本地会话工厂BEAN-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="lobHandler">
    <ref bean="lobHandler" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop>
    <prop key="hibernate.hbm2ddl.auto">${jdbc.hibernate.hbm2ddl.auto}</prop>
    <prop key="hibernate.show_sql">${jdbc.hibernate.show_sql}</prop>
    <prop key="hibernate.jdbc.fetch_size">${jdbc.hibernate.fetch_size}</prop>
    <prop key="hibernate.jdbc.batch_size">${jdbc.hibernate.batch_size}</prop>
    <!--Hibernate2.1查询翻译器-->
    <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
    <!--Hibernate3.0查询翻译器-->
    <!--<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>-->
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>net/ilkj/user/form/PoUserForm.hbm.xml</value>
    </list>
    </property>
    </bean>
    <!-- 配置中文乱码问题解决方法-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass">
    <value>org.springframework.web.servlet.view.JstlView</value>
    </property>
    <property name="prefix">
    <value>/WEB-INF/JSP</value>
    </property>
    <property name="suffix">
    <value>.jsp</value>
    </property>
    <property name="contentType">
    <value>text/html;charset=gb2312</value>
    </property>
    </bean> <!--Oracle 9i大对象处理器-->
    <!--默认的大对象处理器 org.springframework.jdbc.support.lob.DefaultLobHandler-->
    <!--持久化类映射文件的中的type org.springframework.orm.hibernate.support.ClobStringType,length为字节,最大为2G-->
    <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
    <property name="nativeJdbcExtractor">
    <ref bean="nativeJdbcExtractor" />
    </property>
    </bean>
    <!--本地JDBC抽出器,无连接池使用org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor-->
    <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"></bean>
    <!--Hibernate事务管理器-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <!--Hibernate事务管理模板-->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    <property name="jdbcExceptionTranslator">
    <ref bean="jdbcExceptionTranslator" />
    </property>
    </bean>
    <!-- Spring的异常数据转换 -->
    <bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    </bean> <!--注册服务BEAN-->
    <!--注册事务代理工厂BEAN-->
    <bean id="abstractTransactionBean" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
    <property name="transactionManager">
    <ref bean="transactionManager" />
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="save*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop>
    <prop key="delete*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop>
    <prop key="update*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT</prop>
    <prop key="load*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop>
    <prop key="get*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop>
    <prop key="find*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly</prop>
    </props>
    </property>
    </bean>
    <!--用户中心-->
    <bean id="userDao" class="net.ilkj.user.dao.UserDaoImpl">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="userServiceImpl" class="net.ilkj.user.service.UserServiceImpl">
    <!--name属性为UserServiceImpl类中的private属性-->
    <property name="inUserDao">
    <ref bean="userDao" />
    </property>
    </bean>
    <bean id="inUserService" parent="abstractTransactionBean">
    <property name="target">
    <ref bean="userServiceImpl" />
    </property>
    </bean>
    </beans>
      

  2.   

    ------------------------------------------------------------------------
    其中的${}引用的是外部资源文件jdbc.properties,主要是配置数据库的参数,#是被注释了的,我写了三种数据库的操作。#DataSource-Oracle9i
    #jdbc.driverClass=oracle.jdbc.driver.OracleDriver
    #jdbc.url=jdbc:oracle:thin:@localhost:1521:lhf
    #jdbc.username=system
    #jdbc.password=lihaifeng
    #jdbc.c3p0.minPoolSize=5
    #jdbc.c3p0.maxPoolSize=100
    #jdbc.c3p0.maxIdleTime=3000
    #HibernateProperties
    #jdbc.hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
    #jdbc.hibernate.hbm2ddl.auto=create
    #jdbc.hibernate.show_sql=true
    #jdbc.hibernate.fetch_size=25
    #jdbc.hibernate.batch_size=50#---------------------------#DataSource-MS SQL SERVER
    #jdbc.driverClass=net.sourceforge.jtds.jdbc.Driver
    #jdbc.url=jdbc:jtds:sqlserver://localhost:1433/music
    #jdbc.username=sa
    #jdbc.password=
    #jdbc.c3p0.minPoolSize=5
    #jdbc.c3p0.maxPoolSize=100
    #jdbc.c3p0.maxIdleTime=3000
    #HibernateProperties
    #jdbc.hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect
    #jdbc.hibernate.hbm2ddl.auto=create
    #jdbc.hibernate.show_sql=true
    #jdbc.hibernate.fetch_size=25
    #jdbc.hibernate.batch_size=50#---------------------------#DataSource-MySQL
    jdbc.driverClass=org.gjt.mm.mysql.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=lihaifeng
    jdbc.c3p0.minPoolSize=5
    jdbc.c3p0.maxPoolSize=100
    jdbc.c3p0.maxIdleTime=3000
    HibernateProperties
    jdbc.hibernate.dialect=org.hibernate.dialect.MySQLDialect
    jdbc.hibernate.hbm2ddl.auto=none
    jdbc.hibernate.show_sql=true
    jdbc.hibernate.fetch_size=25
    jdbc.hibernate.batch_size=50--------------------------------------------------
    下面就是如何把Spring整合到Struts中,这里我们理由Struts插件的特性,下面是我的struts-config.xml文件,注意“<!--注册Spring容器插件-->”和“controller”元素的配置。<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>
    <data-sources />
    <form-beans>
    <form-bean name="userForm" type="net.ilkj.user.form.UserForm" /> </form-beans> <global-exceptions />
    <global-forwards />
    <action-mappings>
    <action attribute="userForm" name="userForm" parameter="action" path="/userLoginAction" scope="request" validate="false">
    <forward name="userList" path="/userList.jsp"></forward>
    </action> </action-mappings>
    <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
    <message-resources parameter="net_ilkj" />
    <!--注册验证框架插件-->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
    </plug-in>
    <!--注册Spring容器插件-->
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/strutsActionContext.xml" />
    </plug-in>
    </struts-config>您可能注意到Action元素没有class指定完整类名,这是因为我采用的是把Action委托交给Spring容器管理的方式,Action会在下面的Spring配置文件中给出完整类名。
    --------------------------------------------------------------------------
    因为Action中要使用service,Spring要依赖注入,把service DI给Action,这里建议把Action委托给Spring管理,这一点做到也很容易,Struts提供了很强大的扩展功能,我们可以通过扩展RequestProcessor类实现委托功能,Spring提供了一个写好的类DelegatingRequestProcessor,这个文件已经在struts-config.xml中的<controller>元素中配置好了!为了代码规范,建议把交给Spring的Action配置写在另一个文件strutsActionContext.xml中,你已经看到了Spring容器插件中的pathNames有两个XML文件,applicationContext.xml是Spring的主配置文件,strutsActionContext.xml是Action的配置文件。strutsActionContext.xml<?xml version="1.0"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
             <!--name属性要与struts-config.xml中的一致,因为service在Action中是全局变量,Struts1的Action只有一个实例给所有的请求使用,为了防止多线程访问的安全问题,需要指定singleton的属性为false,对每个请求都产生新的实例Action-->
    <bean name="/userLoginAction" class="net.ilkj.user.action.UserLoginAction" singleton="false">
    <!--name属性Action中的private服务类,通过set方法DI-->
    <property name="inUserService">
    <ref bean="inUserService" />
    </property>
    </bean>
    </beans>--------------------------------------------------------------------------
    在Action中只要增加如下的代码就可以使用service了哦!private InUserService inUserService;public InUserService getInUserService() {
    return inUserService;
    }public void setInUserService(InUserService inUserService) {
    this.inUserService = inUserService;
    }-------------------------------------------------------------------最后再给你点建议,我写的整合方式是基于Struts1+Hibernate3+Spring1的做法,现在Struts2已经发布正式版了,这个版本集成了WebWork2和Struts1原有的特性,相信以后会成为主流WEB框架,希望学习一下Struts2哦!当然Struts2会有新的整合方式,但是不管版本如何,思路有就好啊!我刚学习Struts2有几天,觉得它实在是太棒了!希望有空大家交流哦!嘿嘿!
      

  3.   

    MyEclipse整合这3个东西很方便啊,不过顺序很重要,最先整合Spring,然后整合Struts,然后再整合Hibernate,按照提示一步步的加就可以了
      

  4.   

    虽然MyEclipse可以按提示整合,但我还是建议大家不要过分依赖工具,要自己清楚原理,这才是最重要的啊!嘿嘿!
      

  5.   

    广州恒浪的整合系统都很好,又出了V5.1新版本~技术论坛www.jsp163.com