java 实现WebService 以及不同的调用方式

来源:互联网 发布:2017年淘宝搜索规则 编辑:程序博客网 时间:2024/05/15 10:27

**

java 实现WebService 以及不同的调用方式

**
webservice:
就是应用程序之间跨语言的调用
wwww.webxml.com.cn
1.xml
2. wsdl: webservice description language web服务描述语言
通过xml格式说明调用的地址方法如何调用,可以看错webservice的说明书

3.soap simple object access protoacl (简单对象访问协议)     限定了xml的格式    soap 在http(因为有请求体,所以必须是post请求)的基础上传输xml数据        请求和响应的xml 的格式如:    <Envelop>                            <body>                            //....                            </body>                        </Envelop>            operation name:服务提供的方法静态方法不能发布为外部服务运用jkd自带的代码生成访问服务器的客户端代码    E:/wsimort -s . http://test.cm/?wsdl我们可以把webservice看做是web服务器上的一个应用,web服务器是webservice的一个容器函数的参数在 http://test.cm/?xsd=1JAX-WS是指 java api for xml -WebService//测试 WebService服务的 explorerWeb Service Explorer 可以显示返回的xml格式targetNamespace 默认为倒置的包名

客户端调用WebService的方式:
1.通过wximport生成代码
2.通过客户端编程方式
3.通过ajax调用方式
4.通过 URL Connection 方式调用

请求过程分析:
1.使用get方式获取wsdl文件,称为握手
2.使用post发出请求
3.服务器响应成功过

几种监听工具:
http watch
Web Service explorer
eclipse 自带工具 TCP/IP Monitor

服务端代码:

package com.webservcie;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
* WebService
* 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
*/
@WebService(serviceName=”MyService”,targetNamespace=”http://www.baidu.com”)
public class HelloService {

@WebMethod(operationName="AliassayHello")@WebResult(name="myReturn")public String sayHello(@WebParam(name="name") String name){    return  "hello: " + name;}public String sayGoodbye(String name){    return  "goodbye: " + name;}@WebMethod(exclude=true)//当前方法不被发布出去public String sayHello2(String name){    return "hello " + name;}public static void main(String[] args) {    /**     * 参数1:服务的发布地址     * 参数2:服务的实现者     *  Endpoint  会重新启动一个线程     */    Endpoint.publish("http://test.cm/", new HelloService());    System.out.println("Server ready...");}

}


1.客户端调用(wximport自动生成代码 【推荐】)

package com.wsclient;

public class App {

/** * 通过wsimport 解析wsdl生成客户端代码调用WebService服务 *  * @param args *  */public static void main(String[] args) {    // TODO Auto-generated method stub    /**     * <service name="MyService">     * 获得服务名称     */    MyService mywebService = new MyService();    /**     * <port name="HelloServicePort" binding="tns:HelloServicePortBinding">     */    HelloService hs = mywebService.getHelloServicePort();    /**     * 调用方法     */    System.out.println(hs.sayGoodbye("sjk"));    System.out.println(hs.aliassayHello("sjk"));}

}


2.通过ajax+js+xml调用



通过ajax调用WebService服务

0 0