• Spring+CXF restful开发WebService


    一、Apache CXF介绍

    Apache CXF官网地址:Apache CXF -- Index

    Apache CXF下载地址:Apache CXF -- Download

    二、Apache CXF服务器端使用

    1、在web.xml中加上cxf的servlet

    1.    <servlet>
    2.         <servlet-name>CXFServletservlet-name>
    3.         <servlet-class>
    4.             org.apache.cxf.transport.servlet.CXFServlet  
    5.         servlet-class>
    6.         <load-on-startup>1load-on-startup>
    7.     servlet>
    8.     <servlet-mapping>
    9.         <servlet-name>CXFServletservlet-name>
    10.         <url-pattern>/services/*url-pattern>
    11.     servlet-mapping>
    12.  

    2、在spring的applicationContext.xml中的配置如下:

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:jaxws="http://cxf.apache.org/jaxws"
    6. xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    7. xsi:schemaLocation="http://www.springframework.org/schema/beans
    8. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    9. http://www.springframework.org/schema/context
    10. http://www.springframework.org/schema/context/spring-context-2.5.xsd
    11. http://cxf.apache.org/jaxws
    12. http://cxf.apache.org/schemas/jaxws.xsd
    13. http://cxf.apache.org/jaxrs
    14. http://cxf.apache.org/schemas/jaxrs.xsd">
    15. <import resource="classpath:META-INF/cxf/cxf.xml"/>
    16. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    17. <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    18. <bean id="接口实现类名称" class="接口实现类" />
    19. <jaxrs:server id="cxfServiceContainer" address="/demo">
    20. <jaxrs:serviceBeans>
    21. <ref bean="cxfService" />
    22. jaxrs:serviceBeans>
    23. <jaxrs:extensionMappings>
    24. <entry key="json" value="application/json" />
    25. <entry key="xml" value="application/xml" />
    26. jaxrs:extensionMappings>
    27. <jaxrs:languageMappings>
    28. <entry key="en" value="en-gb"/>
    29. jaxrs:languageMappings>
    30. jaxrs:server>
    31. beans>

    3、写一个接口,客户端需要复制这个接口使用

    1. @Produces({ MediaType.APPLICATION_JSON })
    2. public interface DemoService {
    3.     @POST
    4.     @Path("/test")
    5.     public String test();
    6. }

    4、写一个接口实现类

    public class CxfServiceImpl implements DemoService {}

    三、Apache CXF客户端使用

    一、复制 DemoService接口。

    二、测试接口

    1. String url = "http://localhost:8080/CXFService/services/demo";
    2. DemoService service1 = JAXRSClientFactory.create(url, DemoService .class);
    3. WebClient.client(service1 ).accept(MediaType.APPLICATION_JSON); //必须写上
    4. System.out.println(service1 .test());//测试

    四、注意点

    如果在服务器端,实现类里想获取来访客户端的ip可以在实现类里写

    1. @Context
    2.  private MessageContext messgeContext;

    再获取ip的方法里写上

    1. HttpServletRequest request = messgeContext.getHttpServletRequest();
    2. String ip = request.getRemoteAddr();
    3. System.out.println("client_ip:"+ip);

  • 相关阅读:
    SVN操作提示被锁定-清理命令Clean up
    2.2.2 部署Master节点、添加Node节点
    Linux x86_64 backtrace 栈回溯
    专业数采软件DXP OPC Server售后问题解决方案
    职场人的拖延症晚癌克星来啦 当当狸时间管理器
    【附源码】计算机毕业设计SSM玩家社区系统
    分布式配置中心Apollo
    英伟达 nvidia 官方code llama在线使用
    七、Kafka-Kraft 模式
    产业“上链”至深处,京东云如何作为?
  • 原文地址:https://blog.csdn.net/ihchenchen/article/details/127563797