注意,需要下载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; } }
完结,以上代码是我在实际应用中改编而成,都经过测试,肯定好用。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/caok/archive/2008/12/29/3637734.aspx