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

Xfire与Spring整合实践
本文详细介绍如何在MyEclipse5.1环境下整合Xfire 1.2.6与Spring 2.0,并通过Hibernate 3.0进行数据库操作。主要内容包括在web.xml中配置Xfire与Spring的支持、定义applicationContext.xml文件来配置数据库连接和事务管理、实现查询数据库的Hello.HelloworldImpl类等。

 

本文摘自:http://blog.youkuaiyun.com/caok/archive/2008/12/29/3637734.aspx

 

 

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

 

四、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;

    }

 

}

 

 

 

 

 

 

 

基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值