精华帖 (0) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-09
最后修改:2010-01-09
请注意,需要下载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; }
}
完结,以上代码是我在实际应用中改编而成,都经过测试,肯定好用。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-11
在spring1.0以及2.0上都测试过了吗?据我的经验,1.0与2.0是不同的。
|
|
返回顶楼 | |
浏览 3677 次