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

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

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

?

请注意,需要下载Xfire 1.2.6 spring2.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>

<!xfirespring相关配置文件位置 -->

?

??????? <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>

??????????? <!hibernatehbm文件位置 ,至于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;

??? }

?

}

?

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

(编辑:李大同)

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

    推荐文章
      热点阅读