注意,需要下载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; } } 完结,以上代码是我在实际应用中改编而成,都经过测试,肯定好用。
详细解决方案
Spring调整webService xfire
热度:574 发布时间:2012-10-08 19:54:56.0
相关解决方案
- Spring MVC开发模式,怎么取得新增的id
- spring 表单对象绑定有关问题 String与Long的转换
- spring+quartz定时器有关问题
- spring @Scope("prototype")注解更新有关问题,寻求帮助
- Spring MVC是不是可以完全取代Struts
- spring+quartz的错误,不能正常启动
- spring mvc +ibatis+db2连接数据库的配置如何写啊小弟我链接不下
- spring MVC cvc-complex-type.2.4.c解决方案
- Spring + Mybatis 组合报错
- Spring 中 packagesToScan有关问题
- Spring MVC中点击旋钮没反应
- spring aop这个跳转异常是咋回事
- spring security3的一个小疑点。加急
- spring 事务 aop transactionManager,该怎么解决
- Spring 事务管理,该怎么处理
- 关于 Spring 声明式事务管理!解决办法
- Struts2+Spring+JPA+FREEMARKER 登录程序异常
- 关于 Spring 宣言式事务管理!
- 求SSM分页 struts +spring+mybatis 给小弟我发个学习学习吧 多谢大神们
- spring placeholderConfig的有关问题
- spring 事宜 aop transactionManager
- Spring 事务管理,该怎么解决
- struts2 + spring 整合有关问题
- struts+spring+mybatis出现错误(java.lang.ClassNotFoundException: Entity)为提示位置
- 求解 struts+spring+mybatis sqlsession为空 debug发现没有执行set方法 检查配置好像没有关问题
- 新手求教。spring+axis2集成的有关问题。The endpoint reference (EPR) for the Operation not found
- Spring 和 hibernate如何配置事物
- hibernate与此同时使用多数据源?spring+hibernate
- Spring 动态代理,该怎么解决
- cfx Spring 跟 Spring MVC一起用报错