WebService是一种跨编程语言和跨操做系统平台的远程调用技术。java
所谓跨编程语言和跨操做平台,就是说服务端程序采用java编写,客户端程序则能够采用其余编程语言编写,反之亦然!跨操做系统平台则是指服务端程序和客户端程序能够在不一样的操做系统上运行。web
所谓远程调用,就是一台计算机a上的一个程序能够调用到另一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统,商场的POS机转帐调用的转帐方法的代码实际上是跑在银行服务器上。编程
要学会使用第三方服务,好比调用天气等。浏览器
进入网站 http:// www.webxml.com.cn 进入对应的服务页面,如天气:服务器
而后点击 "服务说明" 获得以下页面:编程语言
而后下载该页面,以后使用命令 "wsomport -s . 文件的路径" 解析该文件获得源代码,以后把源码拷项目中便可使用。网站
下载的文件以下:WeatherWS.asmx.xmlspa
解析:G:\webservice>wsimport -s . G:\webservice\WeatherWS.asmx.xml 获得源码以下:操作系统
使用:.net
public class Cilent {
public static void main(String[] args) {
WeatherWS ws = new WeatherWS();
WeatherWSSoap soap = ws.getWeatherWSSoap();
ArrayOfString as = soap.getWeather("哈尔滨", null);
List<String> list = as.getString();
for(String str : list){
System.out.println(str);
}
}
}
咱们本身能够发布服务
本身发布一个服务:
新建一个项目:
---------------------------------------------
import javax.jws.WebService;
public interface MyService {
public String sayHiTo(String name);
public int add(int a, int b);
}
-----------------------------------------------------
@WebService(endpointInterface="com.myservice.service.MyService")
public class MyServiceImpl implements MyService{
public String sayHiTo(String name) {
return "您好:" + name;
}
public int add(int a, int b) {
return a + b;
}
}
-----------------------------------------------------------
发布:
public class Main {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9001/com.myservice.service/MyService",
new MyServiceImpl());
System.out.println("发布完毕...");
}
}
--------------------------------------
以后在浏览器中输入:
http://localhost:9001/com.myservice.service/MyService?wsdl
便可看到咱们发布的服务说明
接下来要使用咱们发布的服务:
方式一:
使用 wsimport -s 命令直接解析到咱们的新项目中:
wsimport -s G:/workSpace/webservice-myservice-cilent/src/ -p com.myservice.service -keep -verbose http://localhost:9001/com.myservice.service/MyService?wsdl
格式:wsimport -s 项目src -p 完成包名 -keep -verbose(显示解析的详细信息,可省略) 发布的地址
方式二:
把上述服务说明页面下载下来,以后使用 wsimport -s . 解析它获得源码,拷贝到项目中便可使用
wsimport -s . G:\webservice\MyService.xml 获得源码:
以后就可使用了:
@WebService 注解的属性:
name : WebService 的名称。映射到 WSDL 文件中的<wsdl:portType> 元素默认值为 JWS 文件中 Java 类的非限定名称。
targetNamespac : 用于今后 WebService 生成的 WSDL 和 XML 元素的 XML 名称空间。默认值由 JAX-RPC specification 指定。
serviceName : WebService 的服务名。映射到 WSDL 文件中的 <wsdl:service> 元素。
默认值为 JWS 文件中 Java 类的非限定名称,后面加上字符串 Service。
portName : 如上图
wsdlLocation : 预约义 WSDL 文件的相对或绝对 URL。若是指定此特性,则当 JWS 文件与 WSDL 文件中的端口类型和绑定不一致时,jwsc Ant 任务不生成 WSDL 文件,而且会返回错误。
endpointInterface : 现有服务端点实现的接口文件的全限定名称。若是指定此特性,则假设您已经建立了该端点接口文件,而且该文件位于 CLASSPATH 中。