WebService学习总结(2)简单WebService入门案例

开发WebService的两种方式(java语言)

这里是主要是以java语言为例子来演示的。

第一种是使用jdk来开发。第二种是使用CXF框架来编写的。

1 、使用jdk来开发

注意:使用JDK开发(1.6及以上版本)

整个工程目录如下

1.1 、首先创建WebService服务器

第一步:定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法

package com.ws;
 
import javax.jws.WebService;
 
@WebService
public interface HelloWS {
    @WebMethod
	public String add(String name);
	
}

第二步:编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法

package com.ws;

import javax.jws.WebService;

@WebService
public class HelloWSImpl implements HelloWS {

	
	public String add(String name) {
		System.out.print("有用户访问"+name);
		return name;
	}
	
}

第三步:使用Endpoint(终端)类发布webservice

package com.ws.service;

import javax.xml.ws.Endpoint;
import com.ws.HelloWSImpl;

public class ServerTest {

	public static void main(String[] args) {
		String address="http://localhost:8080/WS_day_01/HelloWS/sayHello";
		Endpoint.publish(address, new HelloWSImpl());
		System.out.println("发布成功");
	}

}

 发布完成之后在自己的控制台输出如下:

好了。到目前为止WebService的服务器端就写完代码了。

说明:1、在HelloWS接口类里面的add方法。就是方便客户端去调用。

第四步:验证是否成功。

     在自己的浏览器地址栏输入自己刚刚发布的地址,最后加上?wsdl。

1.2 客户端的实现

第一步:使用jdk的wsimport -keep 工具生成客户端代码

说明:1、wsimport 位于C:\Program Files\Java\jdk1.8.0_171\bin下。就是自己电脑上java的安装目录

         如果打开cmd窗口。输入命令wsimport出现wsimport 不是内部或外部命令,也不是可运行的程序或批处理文件

      解决办法   https://blog.csdn.net/sdddlll/article/details/81189111   就可以解决。

2、http://localhost:8080/WS_day_01/HelloWS/sayHello这个地址是自己服务器端发布的地址。

3、在wsimport命令输入之前首先发布自己的webService。才可以运行。

第一步生成的客户端的代码如下:

第二步:写客户端的类:

package com.ws.test;

import com.ws.HelloWSImpl;
import com.ws.HelloWSImplService;

/** 
 * 类描述: 
 *@author: 冯冬冬 
 *@date: 日期:2018-7-24 时间:下午7:17:14 
 */
public class ClientTest {

	public static void main(String[] args) {
		HelloWSImplService factory=new HelloWSImplService();
		HelloWSImpl helloWS=factory.getHelloWSImplPort();
		System.out.print(helloWS.add("23456"));
	}

}

第三步:查看结果如下

2  使用CXF框架来编写

2.1 什么是CXF框架?

2.1.1、由来

     1)Axis --> Axis2;
      XFire(Web service框架) + Celtrix(ESB框架)  = CXF

2.1.2、下载:

    1)官网地址下载:http://cxf.apache.org/download.html

      2)CXF目录:这边是 apache-cxf-2.7.8

①、bin:提供的是常用的dos控制台命令工具。如wadl2java等等

②、docs:帮助文档

③、lib: jar包、依赖库

④、modules:CXF模块jar包

⑤、samples:例子

2.1.3、特性:

     1)有代码生成工具:

Java to WSDL;WSDL to Java;XSD to WSDL;WSDL to XML;WSDL to SOAP;WSDL to Service

      2)支持特性:

①、支持 JAX-WS、 JAX-WSA、JSR-181 和 SAAJ;

②、支持 SOAP 1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy;

③、支持 WSDL 1.1 、2.0;

④、支持 MTOM;、JavaScript

⑤、通过 Yoko 支持 CORBA;

⑥、通过 Tuscany 支持 SCA;

⑦、通过 ServiceMix 支持 JBI;

⑧、内置Jetty应用服务器;

2.2 如何使用CXF框架。

(一)、要求的jar 包

1、CXF版本为 cxf-2.7.8.jar ,其他版本可能会有出入。

2、需要的jar包为:

3、因为使用main函数启动发布,所以需要 jetty 包。

4、出现Cannot create a secure XMLInputFactory异常提示时通常是少了woodstox-core-asl-4.2.0.jar或stax2-api这两个包,少这两个包服务能够启动成功,且浏览器访问wsdl正常;但客户端连接web service时就出现错误提示了。加入后可能还需要重启下eclipse。

相关jar包资源地址为:https://download.csdn.net/download/sdddlll/10566640

2.3 使用CXF开发服务器端

形式和JDK方式的一样。只有一点不一样。那就是要把刚刚下载好的jar包导入服务器端和客户端的lib目录下。

从左边的这个目录可以看到。此时再次运行服务器。结果如下

2.4 使用CXF开发客户端

整个客户端的工程目录同上:

第一步:将下载好的Apache-cxf-2.5.9的bin目录添加到系统变量的path路径下

 第二步:在cmd命令环境中客户端的src目录下输wsdl2java http://localhost:8080/WS_day_01/HelloWS/sayHello?wsdl

就相当于使用cxf工具生成了可客户端代码

第三步:测试。测试结果与JDK测试结果相同。

好了,写到这里就把基本的jdk的实现方式和CXF的实现方式都跑了一遍。但是CXF有很多的优点。在上面也已经总结了。所以在以后的学习中,也主要使用CXF框架的方式来实现。

下一篇。将稍微深入一下。通过天气预报的接口实现自己的案例。

猜你喜欢

转载自blog.csdn.net/SDDDLLL/article/details/81211172