WebService学习(二)——Apache CXF

服务端接口开发

  • 建立maven的JavaSE项目:ws-server
  • 项目JDK须要是1.7以上版本,由于从1.7开始,JDK有WebService的默认实现。
  • 建立服务接口:ServiceDemo
@WebService
public interface ServiceDemo{
 
    public String say(String str);
}
  • 建立服务接口实现类:ServiceDemoImpl
@WebService
public class ServiceDemoImpl implements ServiceDemo{
 
    public String say(String str) {
        return "Hello "+str;
    }
 
}
  • 建立发布服务的主类:Server,可使用JDK默认实现的EndPoint实现,也可使用CXF提供的WebService实现。

JDK实现:html

public class Server {
 
    public static void main(String[] args) {
        System.out.println("web service start");  
        HelloWorld implementor = new ServiceDemoImpl ();  
        String address = "http://192.168.1.103/serviceDemo";  
        Endpoint.publish(address, implementor);  // JDK实现
        System.out.println("web service started");  
    }
}
  • 使用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-jetty</artifactId>
        <version>3.1.5</version>
    </dependency>

CXF实现:java

public class Server {
 
    public static void main(String[] args) {
        System.out.println("web service start");  
        HelloWorld implementor = new ServiceDemoImpl ();  
        String address = "http://192.168.1.103/serviceDemo";  
        
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
        factoryBean.setAddress(address); // 设置暴露地址
        factoryBean.setServiceClass(HelloWorld.class); // 接口类
        factoryBean.setServiceBean(implementor); // 设置实现类
        factoryBean.create();      
        System.out.println("web service started");  
    1}
}
  • 运行主类,发布服务:运行S1erver类
  • 在浏览器中访问服务:在浏览器中输入: address?wsdl

客户端实现

配置CXF

  • 下载CXF
  • 解压到 D:\apache-cxf-3.1.5
  • bin目录下有wsdl2java,wsdl2java.bat,要使用wsdl2java命令,须要配置path。打开环境变量配置,将路径:D:\apache-cxf-3.1.5\bin 加入。

开发webservice客户端

  • 建立一个maven的JavaSE项目:ws-clientweb

  • 找到ws-client项目的本地路径: 输入图片说明apache

  • 在本地路径下按shift加鼠标右键,打开命令窗口,输入:wsdl2java address?wsdl。其中address是指服务端发布的webservice接口浏览器

  • 上一步中须要注意的是:不能把服务器端关闭。服务器

  • 执行完以后,刷新ws-client,客户端的代码就生成了。frontend

  • 关键代码是ServiceDemoService.javamaven

  • 编写客户端主类:Clientcode

public class Client {
 
    public static void main(String[] args) {
        ServiceDemoService service=new ServiceDemoService();
        ServiceDemo serviceDemo=service.getServiceDemoPort();
        System.out.println(serviceDemo.say("penelope"));
    }
}
  • 运行Client,打印出:hello penelope,说明成功调用了webservice服务器端的接口。
相关文章
相关标签/搜索