使用cxf构建简单的WebService

服务器端

首先要在pom文件中增加一些内容,吧cxf的jar包利用maven下载下来

<properties>
    <!-- 文件拷贝编码 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 输出编码 -->
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- 编译编码 -->
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    <!-- CXF版本 -->
    <cxf.version>3.1.1</cxf.version>
  </properties>

  <dependencies>
    <!-- CXF -->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxws</artifactId>
      <version>${cxf.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http</artifactId>
      <version>${cxf.version}</version>
    </dependency>
    <dependency>
      <!-- 如果CXF不集成到Web服务器中,必须添加该引用 -->
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http-jetty</artifactId>
      <version>${cxf.version}</version>
    </dependency>
    <!-- End CXF -->

然后我们创建一个接口

@WebService(name = "HelloWS",
        targetNamespace = "http://benzhu/services/hello")
public interface HelloWS {
    @WebMethod
    String welcome(@WebParam(name = "name") String name);
}

@WebService 是用来标识 web服务的
@WebMethod 标识的是web的方法
@WebParam 是web服务的参数
targetNamespace 其实可以理解成java里的包的概念

详细的可以看
http://blog.csdn.net/xxssyyyyssxx/article/details/50292787

然后定义实现类

@WebService(
        endpointInterface = "com.demo.HelloWS",
        portName = "HelloWSPort",
        serviceName = "HelloWSService",
        targetNamespace = "http://benzhu/services/hello"
)
public class HelloWSImpl implements HelloWS {
    @Override
    public String welcome(String name) {
        return "Welcome " + name;
    }

}

这个webservice的作用就是 你提供一个字符串 他在前面加上Welcome 再返回

最后一步启动 webservice

public class CxfServer {
    public static void main(String[] args) {
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(HelloWS.class);
        //服务发布的地址
        factory.setAddress("http://localhost:8999/services/hello");
        factory.setServiceBean(new HelloWSImpl());
        factory.create();
    }

}

在浏览器输入http://localhost:8999/services/hello?wsdl

可以看到xml文件
这里写图片描述

下面编写客户端

public class Client {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(HelloWS.class);
        factory.setAddress("http://localhost:8999/services/hello");
        HelloWS helloWS = factory.create(HelloWS.class);
        String welcome = helloWS.welcome("pig");
        System.out.println(welcome);
    }
}

不出意外你可以在控制台输出Welcome pig

猜你喜欢

转载自blog.csdn.net/zjsxxzh/article/details/79358862