当前位置:编程学习 > JAVA >>

SSH整合问题

我的tomcat5.0+struts1.3+spring+hibernate

1,beans.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"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config/>
<!-- 配置dataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
     <property name="url" value="jdbc:mysql://127.0.0.1:3306/xiaonei?useUnicode=true&characterEncoding=utf-8"/>
     <property name="username" value="root"/>
     <property name="password" value="root"/>
 <!-- 连接池启动时的初始值 -->
 <property name="initialSize" value="3"/>
 <!-- 连接池的最大值 -->
 <property name="maxActive" value="500"/>
  <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
 <property name="maxIdle" value="2"/>
 <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
 <property name="minIdle" value="1"/>
</bean>

<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     <property name="dataSource" ref="dataSource"/>
     <property name="mappingResources">
     <list>
       <value>com/xiaonei/damain/City.hbm.xml</value>
       <value>com/xiaonei/damain/Country.hbm.xml</value>
       <value>com/xiaonei/damain/Junior.hbm.xml</value>
       <value>com/xiaonei/damain/Primaryschool.hbm.xml</value>
       <value>com/xiaonei/damain/Province.hbm.xml</value>
       <value>com/xiaonei/damain/Senior.hbm.xml</value>
       <value>com/xiaonei/damain/Techschool.hbm.xml</value>
       <value>com/xiaonei/damain/Town.hbm.xml</value>
       <value>com/xiaonei/damain/University.hbm.xml</value>
       <value>com/xiaonei/damain/Usernet.hbm.xml</value>
       <value>com/xiaonei/damain/Users.hbm.xml</value>
       <value>com/xiaonei/damain/Usersenior.hbm.xml</value>
       <value>com/xiaonei/damain/Useruniversity.hbm.xml</value>       
     </list>
     </property>
     <property name="hibernateProperties">
     <value>
          hibernate.dialect=org.hibernate.dialect.MySQLDialect
          hibernate.hbm2ddl.auto=update
    hibernate.show_sql=false
    hibernate.format_sql=false       
  </value>
    </property>
</bean>

<!-- 配置TestService对象,将来很多 -->
<bean id="testService" class="com.xiaonei.service.TestService">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 配置事物管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>   
</beans>

2,web.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:beans.xml</param-value>
</context-param>
<!-- 对Spring容器进行实例化 -->
<listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

3,TestService.java配置如下

package com.xiaonei.service;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class TestService {
 
  
  private SessionFactory sessionFactory;

  public SessionFactory getSessionFactory() {
   return sessionFactory;
  }

  public void setSessionFactory(SessionFactory sessionFactory) {
   this.sessionFactory = sessionFactory;
  }
  
  public List showCountory()
  {
   return sessionFactory.getCurrentSession().createQuery("from Country").list();
  }

}

 

4,TestAction.java配置如下

package com.xiaonei.service;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class TestService {
 
  
  private SessionFactory sessionFactory;

  public SessionFactory getSessionFactory() {
   return sessionFactory;
  }

  public void setSessionFactory(SessionFactory sessionFactory) {
   this.sessionFactory = sessionFactory;
  }
  
  public List showCountory()
  {
   return sessionFactory.getCurrentSession().createQuery("from Country").list();
  }

}

5,这是我的lib包


6,在启动tomcate时候报错

12-11-10 17:40:04  INFO HbmBinder:322 - Mapping class: com.xiaonei.damain.City -> city
 12-11-10 17:40:06  INFO DefaultListableBeanFactory:421 - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@476914: defining beans [org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,dataSource,sessionFactory,testService,txManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor]; root of factory hierarchy
 12-11-10 17:40:06 ERROR ContextLoader:215 - Context initialization failed
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [beans.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
7,网上操作:

1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar


启动还是报错。哪个大神遇到这种情况,可以帮我解决一下,感激不尽。 --------------------编程问答-------------------- 这个不太懂,
你的TestAction代码贴错了
struts配置文件呢?
我所知道的是在struts配置文件里贴这样一段代码以配置spring监听器:
<struts-config>
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings />
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
<message-resources parameter="todo" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property value="/WEB-INF/classes/applicationContext-*.xml"
property="contextConfigLocation" />
</plug-in>
</struts-config>
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,