Web service之 CXF详解

CXF是建立在SOAP协议上的一个Web service框架。什么是SOAP协议,简单来说就是两个不同项目(开发语言不同等)通过xml文件来描述要传输的东西,然后通过HTTP协议传输,接收方把收到的xml解析成需要的对象使用,返回的时候又用xml封装又通过http协议传输,如此就是SOAP协议。而CXF就是两个项目之间为了提供服务,而开发的一个开源框架,使用CXF框架可以快速搭建web service。CXF就是将项目中暴露出来的接口(服务)包装起来,成为wsdl,使用方通过wsdl来调用这些服务。

cxf依赖包

<!-- 需要添加Spring相关最少jar包 -->
 <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.21.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>4.3.21.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.21.RELEASE</version>
</dependency>
<!-- 添加CXF相关jar包 -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-core</artifactId>
    <version>3.1.5</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.1.5</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.1.5</version>
</dependency> 

修改web.xml文件

<servlet> 
    <servlet-name>CXFServlet</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
</servlet> 
<!-- 这个设置很重要,那么我们的webservice的地址就是http://localhost:8080/yourProgramName/webservice/impl -->
<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/webservice/*</url-pattern> 
</servlet-mapping>

在spring配置文件中引入cxf自带的xml文件

<import resource="classpath:META-INF/cxf/cxf.xml"/><!-- 在 cxf-rt-core.jar中  -->
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/><!-- 在 cxf-rt-transports-http.jar中  -->

定义接口及实现类

定义一个接口与实现类,并且该接口与类需要放在一个包中,且需要在类上标明@WebService注解


@WebService
public interface Hello {
    String save(@WebParam(name = "name") String name,@WebParam(name = "age") Integer age,@WebParam(name = "sex") Integer sex);
}


@WebService
@Component("add")
public class HelloImpl implements Hello{

    public String save(String name,Integer age,Integer sex){
        System.out.println(name+"  "+age+"  "+sex);
        return name+age+sex;
    }
}

将实现类交给Spring生成和管理

在实现类中添加 “@Component” 注解,并且修改Spring配置文件,让Spring扫描后管理我们写好的实现类

<!-- 扫描包中的component -->
<context:component-scan base-package="com.mr" />

修改Spring配置文件,暴露webservice的endpoint

在实现类上添加@Component(" ") 相当于是bean标签创建对象
<jaxws:endpoint  implementor="#add"  address="/user"/>

访问

通过IP:端口号/项目名/webservice(web.xml中定义的)路径访问即可

测试服务端是否可以被调用到使用SoapUI
WebService-服务端简单测试-02
WebService-服务端简单测试-02
WebService-服务端简单测试-02
WebService-服务端简单测试-02
输出结果表示测试成功,可以被客户端使用。

相关文章:

  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2021-04-26
  • 2022-12-23
  • 2021-09-07
  • 2021-06-12
  • 2022-02-10
猜你喜欢
  • 2021-09-20
  • 2021-12-31
  • 2021-06-20
  • 2021-03-31
  • 2021-03-27
  • 2021-09-14
  • 2021-09-02
相关资源
相似解决方案