使用spring远程调用服务端接口实现WebService功能,springwebservice,适合有spring框架的
分享于 点击 2006 次 点评:41
使用spring远程调用服务端接口实现WebService功能,springwebservice,适合有spring框架的
适合有spring框架的javaEE平台,出自spring的HttpInvokerServiceExporter导出器,依赖Spring.jar
service-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" default-lazy-init="true"> <!-- 实现接口 --> <bean id="webServiceCommon" class="cn.net.ssd.serviceuser.common.WebServiceImpl"> <property name="daoJdbc"> <ref bean="daoJdbcImpl"/><!--jdbcDao实现 自己项目bean--> </property> <property name="daoManage"> <ref bean="daoManageImpl"/><!--hibernateDao实现 自己项目bean--> </property> </bean> <!-- 通过服务导出器,就把pojo编程了controller,让它在服务器上公开,处理请求 --> <bean name="/httpGetServiceUserInfo.service" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="service" ref="webServiceCommon"/> <property name="serviceInterface"> <value>cn.net.ssd.serviceuser.common.WebServiceUser</value><!--接口--> </property> </bean></beans>
WebServiceUser.java
package cn.net.ssd.serviceuser.common;import java.util.List;import java.util.Map;public interface WebServiceUser { /** * 获取服务用户信息 * @param type * @return * @throws Exception */ public String getUserInfo(String type) throws Exception; public List<Map<String,Object>> getUserInfoList(String type);}
WebServiceImpl.java
package cn.net.ssd.serviceuser.common;import java.util.List;import java.util.Map;import cn.net.ssd.common.databasemanage.DaoJdbc;import cn.net.ssd.common.databasemanage.DaoManage;public class WebServiceImpl implements WebServiceUser { private DaoManage daoManage; private DaoJdbc daoJdbc; public void setDaoManage(DaoManage daoManage) { this.daoManage = daoManage; } public void setDaoJdbc(DaoJdbc daoJdbc) { this.daoJdbc = daoJdbc; } public String getUserInfo(String type) throws Exception { String msg="实现业务"; return msg; } public List<Map<String, Object>> getUserInfoList(String type) { List<Map<String,Object>> list=null; if("".equals(type)||"null".equals(type)){ return list; } String sql=""; try { list=daoJdbc.findListBySql(sql); }catch (Exception e) { e.printStackTrace(); } return list; }}
[服务端 web.xml
<!--服务端 web.xml--><servlet> <servlet-name>service</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>service</servlet-name> <url-pattern>*.service</url-pattern> </servlet-mapping> <客户端需拷贝服务端的接口><!-- 客户端代理对象 --> <bean id="webServiceUser" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>http://localhost/project/httpGetServiceUserInfo.service</value> </property> <!-- 为客户端指定接口(代理对象动态实现该接口) --> <property name="serviceInterface"> <value>cn.net.WebServiceUser</value> </property> </bean><bean id="myAction" class="cn.net.MyAction" scope="prototype" lazy-init="default"> <property name="webServiceUser"> <ref bean="webServiceUser"/> </property> </bean>
Action中注入private WebServiceUser webServiceUser;这样客户端就可以远程调用服务端的接口并得到返回值。
用户点评