标签:
因为也是第一次使用到这样的技术,本人在这里通过一个例子记录了自己的一些心得,还望大家指出不好的地方,我们共勉。
webservice主要是用来交换数据和集成数据,目前主要用到的技术有TCP/IP,HTML,XML,.NET,Java
1、首先创建一个webservice项目,用于发布webservice服务
MyWebservice就是一个用于发布service的类,MyWebservice.java:
1 package com.webservice; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5 import javax.xml.ws.Endpoint; 6 7 @WebService 8 public class MyWebService { 9 // 方法一,用于发布 10 public String getS(String name) { 11 return "你好:" + name; 12 } 13 14 // 方法二,不用于发布 15 @WebMethod(exclude = true) 16 public String getS2(String name) { 17 return "你好:" + name; 18 } 19 20 public static void main(String[] args) { 21 Endpoint.publish("http://localhost/hello", new MyWebService()); 22 } 23 }
注释:注解@webserivce用在此类上,表示将这个类发不成一个webservice
注解@WebMethod(exclude = true)代表此方法不会被发布,待会儿后面会解释到
Endpoint.publish(arg1,arg2)方法有两个参数:arg1代表的是你发布的地址,arg2代表的是服务的实现者
2、编译mywebservice.java类
3、查看wsdl(在浏览器地址栏中输入:http://localhost/hello(与wywebservice.java中一致))
只要能够看到以下的信息,说明已经发布成功
到此为止,一个service就已经发布成功了
总结:
a、在需要发布的类上添加注解@webservice
b、通过endpoint.publish()方法发布一个service
TIPS:类中的所有非静态方法都是可以被发布的
不能被发布的情况:1、静态方法和final修饰的方法
2、方法上添加注解@WebMethod(exclude = true)
4、客户端访问发布的服务
刚刚我们生成的WSDL文档你或许看不懂,但是那没关系,只要JAVA能识别就好。可以根据WSDL文档生成客户端调用的代码工具。
我们需要使用到的命令如下:
-d:生成class文件
-s:生成Java文件
-p:自定义包结构
wsimport -s . -p com.myWebservice.client http://localhost/hello?wsdl
本人在E盘下的com/myWebservice/client目录下生成了.class文件和.java文件
命令运行:
执行后生成的文件:
将所有的java文件拷贝到你的客户端的项目中,我的客户端项目已准备好,且将生成的文件全部拷贝到客户端项目下:
1 package webservice_client; 2 3 import com.webservice.MyWebService; 4 import com.webservice.MyWebServiceService; 5 6 public class Myclient { 7 public static void main(String[] args) { 8 MyWebServiceService mss = new MyWebServiceService(); 9 MyWebService ms = mss.getMyWebServicePort(); 10 String s = ms.getS("clplee"); 11 System.out.println(s); 12 } 13 }
6、测试结果在控制台输出:
到此为止,一个webservice的例子已经创建成功。
标签:
原文地址:http://www.cnblogs.com/clplee/p/5447049.html