文档章节

cxf集成到spring中发布restful webservice

逸风如梦
 逸风如梦
发布于 2015/11/06 14:56
字数 561
阅读 372
收藏 11

一、maven依赖

<!--cxf-->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-core</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.1.4</version>
        </dependency>
        
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
             <artifactId>jackson-jaxrs</artifactId>
            <version>1.9.13</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.4</version>
        </dependency>       
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.1</version>
        </dependency>

二、web.xml配置

<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/cxf/*</url-pattern>
    </servlet-mapping>

 

三、spring配置

<?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:jaxws="http://cxf.apache.org/jaxws"
 xmlns:jaxrs="http://cxf.apache.org/jaxrs"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans.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"
 default-lazy-init="true">
 <description>Apache CXF resutful Web Service配置</description>
 <import resource="classpath:META-INF/cxf/cxf.xml" />
 
 <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
 <bean id="webservice"  class="WebserviceImpl"/>
   
   <jaxrs:server id="cxfService" address="/ws">
  <jaxrs:serviceBeans>
   <ref bean="webservice" />
  </jaxrs:serviceBeans>
  <jaxrs:extensionMappings>
         <entry key="json" value="application/json" />
         <entry key="xml" value="application/xml" />
     </jaxrs:extensionMappings>
     <jaxrs:languageMappings>
      <entry key="en" value="en-gb"/>  
   </jaxrs:languageMappings>
   <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>  
   </jaxrs:providers>
 </jaxrs:server>
 
</beans>

四、接口类(实现类省略了):

package webservice;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("/test")
public interface Webservice {
 @GET 
 @Path("/getText")
 @Produces({ MediaType.TEXT_PLAIN })
 String getText(@QueryParam("param1")String param1, @QueryParam("param2")String param2);
 
 @POST
    @Path("/postText")
    @Produces({ MediaType.TEXT_PLAIN })
    String postText(@FormParam("param1")String param1, @FormParam("param2")String param2);
 
 @GET
    @Path("/getJson")
    @Produces({ MediaType.APPLICATION_JSON })
 Map<String, Object> getJson(@QueryParam("param1")String param1, @QueryParam("param2")String param2);
 
 @POST
    @Path("/postJson")
    @Produces({ MediaType.APPLICATION_JSON })
    Map<String, Object> postJson(@FormParam("param1")String param1, @FormParam("param2")String param2);
}
五、测试代码:
/** 
     * 获取JAXRS WebService的结果信息 
     */  
    public static String postJAXRSWebService(String processURL){
        System.out.println( processURL);
        String result = "";
         try {  
          //创建一个HttpClient对象  
          CloseableHttpClient  httpclient = HttpClients.createDefault();
          //创建HttpPost对象  
          HttpPost  postRequest  =new HttpPost(processURL);  
           List <NameValuePair> params=new ArrayList<NameValuePair>();
          params.add(new BasicNameValuePair("param1","144203923"));
          params.add(new BasicNameValuePair("param2","中国"));
          //发出HTTP request
          UrlEncodedFormEntity paramEntity = new UrlEncodedFormEntity(params, "UTF-8");
          postRequest.setEntity(paramEntity);
          System.out.println("------------------------------------------------------");
          System.out.println(paramEntity.getContentType());     
          System.out.println(paramEntity.getContentLength());     
          System.out.println(EntityUtils.getContentCharSet(paramEntity));     
          System.out.println(EntityUtils.toString(paramEntity));   
          System.out.println("--------------------------------------------------");          
          CloseableHttpResponse  response =httpclient.execute(postRequest);  
          //获取HttpEntity  
          HttpEntity entity=response.getEntity();  
          //获取响应的结果信息  
         result =EntityUtils.toString(entity);  
         
         } catch (ClientProtocolException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
         
        return result;
    }  
    
    
    /** 
     * 获取JAXRS WebService的结果信息 
     */  
    public static String getJAXRSWebService(String processURL){
        System.out.println( processURL);
        String result = "";
         try {  
          //创建一个HttpClient对象  
             CloseableHttpClient  httpclient = HttpClients.createDefault();
          //创建HttpGet对象  
          HttpGet request=new HttpGet(processURL);  
         
          CloseableHttpResponse  response =httpclient.execute(request);  
        //获取HttpEntity  
        HttpEntity entity=response.getEntity();  
        //获取响应的结果信息  
         result =EntityUtils.toString(entity);  
         
         } catch (ClientProtocolException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
         
        return result;
    }

© 著作权归作者所有

逸风如梦
粉丝 3
博文 16
码字总数 8761
作品 0
郑州
程序员
私信 提问
spring+restful service

Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的。关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述...

游宵
2014/04/25
1K
1
Apache CXF 和 Spring 开发 Web Service 1

正文 为什么使用CXF 本文段摘录自 http://www.ibm.com/developerworks/cn/webservices/ws-pojo-springcxf/index.html Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务...

洋葱94
2015/12/04
268
0
CXF开发webservice

什么是CXF: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 XML/HTTP CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。 C,c++,C#...

包包大人
2014/04/04
11.8K
0
使用cxf发布webservice总结

一、概念 1、什么是webservice Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分...

漂泊者及其影子
2014/08/21
12.4K
0
cxf webservice整合spring

前端建模:CXF 提供了前端建模的概念,允许您使用不同的前端 API 来创建 Web 服务。API 允许您使用简单的工厂 Bean 并通过 JAX-WAS 实现来创建 Web 服务。它还允许您创建动态 Web 服务客户端...

尚浩宇
2015/06/24
202
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部