加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService开发实例 (Xfire+Spring+Hibernate)

发布时间:2020-12-17 02:08:53 所属栏目:安全 来源:网络整理
导读:请注意,需要下载 Xfire1.2.6 、 spring2.0,hibernate 3.0 相关类库及相关数据库的 jdbc 驱动。本文相关内容是在 myeclipse5.1 下完成。 ? 一、 ?????????? 首先在 web.xml 中添加对 xfire 及 spring 支持的相关内容,如下 : ? ? xml version = "1.0" encodi

请注意,需要下载Xfire1.2.6spring2.0,hibernate 3.0 相关类库及相关数据库的jdbc 驱动。本文相关内容是在myeclipse5.1 下完成。

?

一、 ?????????? 首先在web.xml 中添加对xfirespring 支持的相关内容,如下:

?

<? xml version = "1.0" encoding = "ISO-8859-1" ?>

?

<! DOCTYPE web-app

??? PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"

??? "http://java.sun.com/dtd/web-app_2_3.dtd" >

< web-app >

<!-- START SNIPPET: xfire -->

< context-param >

<! xfire spring 相关配置文件位置 -->

?

??????? < param-name > contextConfigLocation </ param-name >

??????? < param-value > /WEB-INF/applicationContext.xml  

??????? classpath:org/codehaus/xfire/spring/xfire.xml </ param-value >

??? </ context-param >

?

??? < context-param >

??????? < param-name > log4jConfigLocation </ param-name >

??????? < param-value > /WEB-INF/log4j.properties </ param-value >

??? </ context-param >

???

??? < context-param >

??????? < param-name > webAppRootKey </ param-name >

??????? < param-value > webservicetest.root </ param-value >

??? </ context-param >

?

?

??? ? < filter >

??????? < filter-name > sessionFilter </ filter-name >

??????? < filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >

??? </ filter > ??

??? < filter-mapping >

??????? < filter-name > sessionFilter </ filter-name >

??????? < url-pattern > /services/* </ url-pattern >

??? </ filter-mapping > ???????

??????

??? < listener >

??????? < listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >

??? </ listener >

?

??? < listener >

??????? < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >

??? </ listener > ???

?????

???? < servlet >

??????? < servlet-name > xfire </ servlet-name >

??????? < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >

??? </ servlet >

??

?

??? < servlet-mapping >

??????? < servlet-name > xfire </ servlet-name >

??????? < url-pattern > /services/* </ url-pattern >

??? </ servlet-mapping > ??????

???

<!-- END SNIPPET: xfire -->

</ web-app >

?

二、 ?????????? applicationContext.xml 文件内容:

<? xml version = "1.0" encoding = "UTF-8" ?>

<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" >

< beans >

?

<!--?数据库连接配置 -->

??? < bean id = "propertyConfigurer" class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >

???

??????? < property name = "location" value = "/WEB-INF/jdbc_connect.properties" />

???????

??? </ bean >

???????

??? <!-- C3P0 连接池配置 -->

???

??? < bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method = "close" > ????

???????

??????? < property name = "driverClass" value = "${jdbc.driverClassName}" />

??????? < property name = "jdbcUrl" value = "${jdbc.url}" />

??????? < property name = "user" value = "${jdbc.username}" />

??????? < property name = "password" value = "${jdbc.password}" />

???????

??????? < property name = "initialPoolSize" >

??????????? < value > 5 </ value >

??????? </ property >

????? ?? < property name = "minPoolSize" >

????? ?????? < value > 5 </ value >

????? ?? </ property >

????? ?? < property name = "maxPoolSize" >

????? ?????? < value > 10 </ value >

????? ?? </ property >

????? ?? < property name = "acquireIncrement" >

????? ?????? < value > 2 </ value >

????? ?? </ property >

????? ?? < property name = "maxIdleTime" >

????? ?????? < value > 60 </ value >

????? ?? </ property >

????? ?? < property name = "maxStatements" >

????? ?????? < value > 0 </ value >

????? ?? </ property > ????

??? </ bean >

??? <!-- C3P0 结束 -->

???

??? < bean id = "sessionFactory" class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >

??????? < property name = "dataSource" ref = "dataSource" />

??????? < property name = "mappingResources" >

??????????? < list >

??????????? <! hibernate hbm 文件位置 ,至于hbm文件可以通过工具生成,这里就不详述了-->

??????????????? < value > com/dao/emp.hbm.xml </ value > ?????????????

??????????? </ list >

??????? </ property >

??????? < property name = "hibernateProperties" >

??????????? < props >

??????????????? < prop key = "hibernate.dialect" > ${hibernate.dialect} </ prop > ??????

??????????????? < prop key = "hibernate.show_sql" > true </ prop > ?????????????????

??????????? ? ?? < prop key = "hibernate.jdbc.fetch_size" > 100 </ prop >

??????????????? < prop key = "hibernate.jdbc.batch_size" > 50 </ prop >

??????????? ??? < prop key = "hibernate.use_outer_join" > true </ prop > ??????????????

??????????????? < prop key = "hibernate.connection.SetBigStringTryClob" > true </ prop >

??????????? </ props > ???????????

??????? </ property >

???????

??????? < property name = "eventListeners" >

??????????? < map >

??????????????? < entry key = "merge" >

??????????????????? < bean class = "org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener" />

??????????????? </ entry >

??????????? </ map >

??????? </ property >

???

??? </ bean >

???

???

???

??? < bean id = "transactionManager" class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >

??????? < property name = "sessionFactory" ref = "sessionFactory" />

??? </ bean >

???

??? < bean id = "QueryHib" class = "Hello.HelloworldImpl " >

??????? < property name = "sessionFactory" ref = "sessionFactory" />

??? </ bean >

??? ?

???

??? <! webservice bean -->

???

??? < bean id = "QueryHibRis" class = "org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >

??????? < property name = "transactionManager" ref = "transactionManager" />

??????? < property name = "target" ref = "QueryHib" />

??????? < property name = "transactionAttributes" >

??????????? < props > ????????

??????????? < prop key = "*" > PROPAGATION_REQUIRED </ prop > ??????????????????

??????????? </ props >

??????? </ property >

??? </ bean >

???

</ beans >

?

<!-- jdbc_connect.properties 文件内容, 主要是数据库配置, 以下是oracle 数据库 -->

?

jdbc.driverClassName= oracle.jdbc.driver.OracleDriver

jdbc.url= jdbc : oracle:thin:@172.17.99.230:1521:bsrun

jdbc.username= user

jdbc.password= user

hibernate.dialect= org.hibernate.dialect.Oracle9Dialect

?

三、 ?????????? xfire-servlet.xml 文件内容, 如下:

<? xml version = "1.0" encoding = "UTF-8" ?>

<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"? >

?

< beans >

??? <!-- START SNIPPET: xfire -->

??? < bean class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >

??????? < property name = "urlMap" >

??????????? < map >

??????????????? < entry key = "/QueryService" >

??????????????????? < ref bean = "query" />

??????????????? </ entry > ? ?

???????????? </ map >

??????? </ property >

???????

??? </ bean >

???

??? <!-- Declare a parent bean with all properties common to both services -->

??? < bean id = "query" class = "org.codehaus.xfire.spring.remoting.XFireExporter" >

??????? < property name = "serviceFactory" >

??????????? < ref bean = "xfire.serviceFactory" />

??????? </ property >

??????? < property name = "xfire" >

??????????? < ref bean = "xfire" />

??????? </ property >

??????? < property name = "serviceBean" >

??????????? < ref bean = "QueryHibRis" /> ? <! 请注意这个需在applicationContext.xml 有定义-->

?

??????? </ property >

??????? < property name = "serviceClass" >

??????????? < value > Hello . IHelloworld </ value >

??????? </ property >

???????

??? </ bean > ??

??? <!-- END SNIPPET: xfire -->

</ beans >

?

四、Hello.HelloworldImpl 类内容,主要是查询数据库并返回结果

?

package Hello;

?

 

import java.util.Collection;

?

//Generated by MyEclipse

?

public class HelloworldImpl implements IHelloworld {

???

??? public Collection User(){??

??? return getHibernateTemplate().find(" select new Helloworld.User(userid,username ) from emp");  

??????? ? ??????

??? }

???

}

?

IHelloworld 接口内容

package Hello;

//Generated by MyEclipse

?

import java.util.Collection;

 

?

public interface IHelloworld {

???

??? public Collection User();

}

//xfire 对于返回collection 的,需要定义接口的IHelloworld.aegis.xml 文件, 需放在当前接口文件目录下。

?

<?xml version="1.0" encoding="UTF-8"?>

? <mappings>

??? <mapping>

??????? <method name= "User" >

??????????? <return-type componentType= "Helloworld.User" />??????????

??????? </method>?????????

???????

??? </mapping>???

???

</mappings>

?

Helloworld.User 类内容:

package Helloworld;

?

public class User {

???

??? String userid;

??? String username;

// 一定要定义此构造函数,在Hello.HelloworldImpl中有用到哟

??? Public User(String userid,String username){

??????? this.userid = userid;

this.username = username;

?

}??

?

??? public String getUserid() {

??????? return userid;

??? }

??? public void setUserid(String userid) {

??????? this.userid = userid;

??? }

??? public String getUsername() {

??????? return username;

??? }

??? public void setUsername(String username) {

??????? this.username = username;

??? }

?

}

?

完结,以上代码是我在实际应用中改编而成,都经过测试,肯定好用。

转自:http://blog.csdn.net/caok/archive/2008/12/29/3637734.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读