发新话题
移动帖子 加入精华 加入置顶 加入收藏 关注此帖

图文详细讲解:Xfire1.2+Hibernate3.0+Spring1.2 整合开放+测试



图文详细讲解:Xfire1.2+Hibernate3.0+Spring1.2 整合开放+测试

网上有很多这样的文章,但感觉比较零乱,现在进行一个整理!
第一次原创如果有什么问题希望指出!

创建一个Webservices项目!






创建数据库!演示我使用Mysql5.0
创建一个user表


在MyEclipse配置数据库





现在切换回来
添加Hibernate




我们使用Spring不需要创建sessionFactory类哈



添加Spring



个人认为使用Hibernate.xml作为sessionFactory比较好管理


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<!-- 服务器启动后读取 applicationContext.xml-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:applicationContext.xml
		</param-value>
	</context-param>
	<!-- Spring framework -->
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<!-- 使用XFireSpringServlet 作为Servlet -->
	<servlet>
		<servlet-name>XFireServlet</servlet-name>
		<servlet-class>
			org.codehaus.xfire.spring.XFireSpringServlet
		</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<!-- 过滤services -->
	<servlet-mapping>
		<servlet-name>XFireServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


现在基本信息已经配置完成!

创建POJO````通过Hibernate反转






User.java
package com.xiaomaha.po;

import java.util.Date;

/**
 * User generated by MyEclipse Persistence Tools
 */

public class User implements java.io.Serializable {

	// Fields

	private Integer id;

	private String name;

	private String password;

	private Date date;

	// Constructors

	/** default constructor */
	public User() {
	}

	/** full constructor */
	public User(String name, String password, Date date) {
		this.name = name;
		this.password = password;
		this.date = date;
	}

	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Date getDate() {
		return this.date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

}


User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.xiaomaha.po.User" table="user" catalog="test">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" />
        </property>
        <property name="date" type="java.util.Date">
            <column name="date" length="0" />
        </property>
    </class>
</hibernate-mapping>


hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

	<session-factory>
		<property name="connection.username">root</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/test
		</property>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="myeclipse.connection.profile">mysql</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<mapping resource="com/xiaomaha/po/User.hbm.xml" />

	</session-factory>

</hibernate-configuration>



创建一个UserDAO.java 继承HibernateDaoSupport
package com.xiaomaha.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.xiaomaha.po.*;

public class UserDAO extends HibernateDaoSupport{
	public void insertUser(User user){
		getHibernateTemplate().save(user);
	}
}


创建bo
package com.xiaomaha.bo;

import com.xiaomaha.dao.UserDAO;
import com.xiaomaha.po.User;

public class TestBO {
	private UserDAO dao;

	public UserDAO getDao() {
		return dao;
	}

	public void setDao(UserDAO dao) {
		this.dao = dao;
	}
	/*这个用于等会配置事物使用的!*/
	public void executeInsert(User user){
		dao.insertUser(user);
	}
}


创建让Webservices调用的接口和实现类
Itest接口

package com.xiaomaha.xfire;

public interface Itest {
	public void add(String str);
}


test实现Itest接口
package com.xiaomaha.xfire;

import com.xiaomaha.bo.TestBO;
import com.xiaomaha.po.User;

public class test implements Itest {

	private TestBO bo;
	
	public TestBO getBo() {
		return bo;
	}
	public void setBo(TestBO bo) {
		this.bo = bo;
	}
	
	
	public void add(String str) {
		User user = new User();
		/*str为了简便易懂我就当name使用*/
		user.setName(str);
		
		bo.executeInsert(user);
	}

}


现在就开始配置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="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation"
			value="classpath:hibernate.cfg.xml">
		</property>
	</bean>
	
	
	<!-- Xfire配置信息 -->
	<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
	
	<bean name="Xfire" class="org.codehaus.xfire.spring.ServiceBean">
		<!-- serviceBean 一看就知道不做解释 -->
		<property name="serviceBean" ref="test" />
		<!-- 外部调用接口!!!!! -->
		<property name="serviceClass" 
			value="com.xiaomaha.xfire.Itest" />	
	</bean>
	
	<!-- Xfire接口实现类 与bo有注入关系使用带事物的bo对象-->
	<bean id="test" class="com.xiaomaha.xfire.test">
		<property name="bo" ref="boProxy"></property>
	</bean>
	
	<!-- UserDAO继承了HibernateDaoSupport -->
	<bean id="dao" class="com.xiaomaha.dao.UserDAO">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- TestBO中有UserDAO的注如关系  -->
	<bean id="bo" class="com.xiaomaha.bo.TestBO">
		<property name="dao" ref="dao"></property>
	</bean>
	
	<!-- 配置事物管理 -->
	<bean id="tm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- 事物代理对象 ,target  指定需要代理 哪个对象  -->
	<!-- <prop key="execute*">PROPAGATION_REQUIRED</prop>
		execute开头的都具备事物能力
	  -->
	<bean id="boProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="tm"></property>
		<property name="target" ref="bo"></property>
		<property name="transactionAttributes">
			<props>
				<prop key="execute*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	
	
</beans>


好了一切结束现在开始测试````

先启动服务器哈 我使用的是tomcat

我使用MyEclipse自带工具测试

进入后 填写URL地址 http://localhost:8080/WebServiceProject/services/Itest?wsdl
点GO

如果进入以下画面那么恭喜配置部署成功!!!!! 点下 add(接口暴露出来的方法```)


输入点东西把`````然后GO 在去看看你的数据库!!!!数据已经存入进去咯```


查看 Mysql连接数量(先要配置环境变量)
运行 cmd 进入DOS mysqladmin -uroot -proot status
一切正常!!!!!!!!!!!!!!























编辑 回复 快速回复 TOP

Re:图文详细讲解:Xfire1.2+Hibernate3.0+Spring1.2 整合开放+测试

老大,我照你的写了为什么不行,是不是tomcat和services.xml里面都要写配置的啊
他给我句WSDLException: faultCode=OTHER_ERROR: http://localhost:8080/Mywebservicedemo/services/Itest?wsdl
这个是为什么



编辑 回复 快速回复 TOP
发新话题