ssh/ssm使用CXF实现基于Rest方式的WebService并返回json数据

使用CXF实现基于Rest方式的WebService

1.需要的jar包:


2.applicationContext-webservice.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	 xmlns:jaxrs="http://cxf.apache.org/jaxrs"  
	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.0.xsd 
	http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
	http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">

	<import resource="classpath:META-INF/cxf/cxf.xml" />
<!--jax-ws -->
	<!-- <jaxws:endpoint id="lakeWebServiceSoap" implementor="webservice.shjImpl.LakeWebServiceImpl"
		address="/lakeSoap">
	</jaxws:endpoint> -->
	<!--jax-rs -->
	<bean id="lakeWebServiceImpl" class="webservice.shj.Impl.LakeWebServiceImpl" /> 	
	<jaxrs:server id="testWebServiceRest" address="/rest">

		<jaxrs:serviceBeans>
			<ref bean="lakeWebServiceImpl" />
		</jaxrs:serviceBeans>
		
  		<jaxrs:providers>  
            <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>  
            <bean class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/> 
        </jaxrs:providers>  

		<jaxrs:extensionMappings>
			<entry key="json" value="application/json" />
			<entry key="xml" value="application/xml" />
		</jaxrs:extensionMappings>
	</jaxrs:server>
		
</beans>


3.web.xml配置:主要分2部分,读取相关xml文件与配置CXFService

<listener>
    <listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
		/WEB-INF/applicationContext-*.xml
		</param-value>
  </context-param>
 <servlet>
    <servlet-name>CXFService</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFService</servlet-name>
    <url-pattern>/webservice/*</url-pattern>
  </servlet-mapping>



4.webservice接口:ILakeTestWebService
package webservice.shj.Interfaces;


import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@WebService(targetNamespace="LakeWebService")
@Path(value = "")  
public interface ILakeTestWebService {
	@GET  
	@Path(value = "/LakeList")
	//查询湖库信息
	public List<?> LakeList(@QueryParam("wc") @WebParam(name = "waterCondition")String waterCondition);
}
4.webservice实现类:LakeWebServiceImpl.

此处只是hibernate的一个查询,dao层不再展示

package webservice.shj.Impl;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.jws.WebService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.shj.daoImpl.WebServiceDao;

import base.BaseWSSupport;
import vo.Lake;
import vo.Log;
import webservice.shj.Interfaces.ILakeTestWebService;

@Component
@Transactional
@WebService(targetNamespace="LakeWebService")
public class LakeWebServiceImpl extends BaseWSSupport implements ILakeTestWebService  {
	
	@Resource(name="WebServiceDao")
	private WebServiceDao webServiceDao;
	private GetHql getSql=new GetHql();
	
	
	@Override
	//查询湖库信息
	public List<?> LakeList(String waterCondition) {
		// TODO Auto-generated method stub
		StringBuffer hql=new StringBuffer(" from Lake p where ");
		String hql1=getSql.gethql2(hql,"Lake","waterCondition",waterCondition);
		String methodname = Thread.currentThread() .getStackTrace()[1].getMethodName();
		List<Lake> list;
		int a=0;
		String errMsg="";
		try {
			list = webServiceDao.LakeList(hql1);
			a=1;
			errMsg="json数据获取成功";
		} catch (Exception e) {
			// TODO Auto-generated catch block
			Timestamp time = new Timestamp(System.currentTimeMillis());
			Log lg=new Log(time,methodname,e.toString());
			webServiceDao.saveLog(lg);
			a=0;
			errMsg="方法:"+methodname+"异常;"+e.toString();
			list=null;
		}
		Map<String, Object> map = new LinkedHashMap<String, Object>();
		map.put("okFlag",a);
		map.put("errMsg",errMsg);
		map.put("data", list);
		List alist = new ArrayList();
		alist.add(map);
		return alist;
	}
}




5.启动项目,访问地址:http://localhost:8080/项目/webservice/rest/LakeList.json



   

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值