WebService开发实例 (Xfire+Spring+Hibernate)
请注意,需要下载Xfire1.2.6 、spring2.0,hibernate 3.0 相关类库及相关数据库的jdbc 驱动。本文相关内容是在myeclipse5.1 下完成。 ? 一、 ?????????? 首先在web.xml 中添加对xfire 及spring 支持的相关内容,如下: ? <? 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – Bootstrap 3:使用角度js取消选择制表符
- 在Scala中将运算符定义为方法别名的最短表示法是什么?
- AngularJS 1.5.x $onChanges不适用于单向绑定更改
- Ueditor angularjs化过程记录(重点在于验证)
- twitter-bootstrap – Twitter Bootstrap 3如何改变2.3.2版
- 如何在Angular 2单例中制作组件?
- Angularjs:一个服务,服务多个$resource urls /数据源?
- WebService体系之——CXF由来
- webservice里面wsdl后缀和asmx是干嘛用的,区别是什么?
- Angular 4中HTTP错误的集中处理