WebService应用以及jdk如何应用

来源:互联网 发布:淘宝蛋蛋家全名 编辑:程序博客网 时间:2024/06/11 03:08
WebService,顾名思义就是基于Web的服务,它使用Web(HTTP)方式,接收和响应外部系统的某种请求,从而实现远程调用。


www.webxml.com.cn下就有很多这样的服务,比如天气预报、手机号码归属地查询等这样的服务都可以归我们调到。为何取名“webxml”呢?依我看来,这是因为webservice遵循的soap协议,soap协议正是作为一个基于XML语言用于网上传输数据的协议。


接着,讲一下webservice在java的应用。


jdk可以基于某个webservice的服务说明(即wsdl文件)通过wsimport命令生成调用该服务的客户端代码,进行类的使用,就可以访问到服务类了。同样,jdk可以基于注解@WebService将类声明成服务类,利用Endpoint类发布该服务,其他用户也可以通过你发布的服务说明文件生成客户端代码,访问你的服务。


再说说我用过的两个webservice框架!


CXF,提供了对<span class="Apple-converted-space"> JAX-WS</span>全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。


Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化更强、灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security、WS-ReliableMessaging 等)的实现中。


一、利用jdk发布webservice服务

1、创建服务接口类,最重要的是要加入@WebService注解

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService(

serviceName="MyServiceName",//修改服务访问点集合名字
portName="MyHelloServer",//修改端口名字
name="MyHelloServer",//修改服务类的名字
targetNamespace="top.einino.ws" //修改命名空间名字

)

public class HelloServer {


//@WebResult(name="helloresult") 修改修改返回值的元素的父标签名字

//@WebParam(name="personName")  修改传入参数的元素的父标签名字

//  exclude=false表示对外可见,默认可以不配置

@WebMethod(exclude=false)
public  @WebResult(name="helloresult")  String sayHello(@WebParam(name="personName")  String name){

return  name+"hello";

}

}

2、创建服务发布类

import javax.xml.ws.Endpoint;

public class ServerPublish {

public static void main(String[] args) {

//两个参数,一个是本地的服务地址,二是提供服务的类
Endpoint.publish("http://127.0.0.1:8080/hello", new HelloServer());

}

}

3、现在即可,在浏览器输入http://127.0.0.1:8080/hello?wsdl访问你刚刚发布的服务了。

二、利用jdk访问webservice服务

1、使用执行jdk的wsimport命令生成客户端代码

打开cmd执行窗口:跳转到d://wscode路径下,这路径可自己决定,是为了存放生成的代码的,然后执行语句:wsimport -s . -p top.einino.ws.client  http://127.0.0.1:8080/hello?wsdl

'-s .  '表示生成java和class文件, 后面的‘.’表示放在当前目录,也可以是'-d .'表示只生成class文件,'-d .'是默认参数,后面的‘-p’指定在当前目录生成该路径的文件夹,并存放生成的代码

2、现在将生成的代码放入到自己的项目中,进行调用访问

package top.einino.client;

import java.io.IOException;
import top.einino.ws.client.MyHelloServer;
import top.einino.ws.client.MyServiceName;

public class TestJDKServerClient {

public static void main(String[] args) throws IOException {

//MyServiceName创建服务访问点集合
MyServiceName myServiceName = new MyServiceName();
//根据服务访问点获得绑定的服务类MyHelloServer
MyHelloServer myHelloServer = myServiceName.getMyHelloServer();
//调用具体的业务逻辑
String sayHello = myHelloServer.sayHello("bingo");

//测试用
System.out.println(sayHello);

}

}

三、小结

jdk发布webservice服务,主要是用@WebService来定义服务类,再用Endpoint类来发布这个服务。

jdk访问webservice服务,主要是根据http://127.0.0.1:8080/hello?wsdl用wsimport命令生成客户端代码,再进行调用访问。

如果大家有兴趣的话,也可以登录www.webxml.com.cn去找些wsdl文件,进行服务哦!


WebServcice在jdk的应用暂告一段落!

如果有疑问或者对该文章有何看法或建议或有问题的,欢迎评论,恳请指正!






0 0
原创粉丝点击