因为webservice分为服务端和客户端,所以如果要学习的话,那么肯定是包括这两部分的了。
1.开发服务端的webservice:
使用jdk开发ws其实很简单,只是需要一些注解:最重要的是
@WebService,@WebMethod
这两个注解,分类在类和方法上面注解。注明这是一个ws接口,然后在实现就可以了,下面是例子:
/** * SEI 接口 * @author Hotusm * */ @WebService public interface HelloWs { @WebMethod public String sayHello(String name); }
我们声明了一个接口,然后在类上和方法上面都使用注解标记,然后我们在实现这个接口:
@WebService public class HelloWsImpl implements HelloWs{ @Override public String sayHello(String name) { System.out.println("SEI IMPL"); return "hello "+name; } }
这样一个ws的helloword就写好了,下面就剩下怎么发布ws了,我们要使用到jdk提供给我们方法了:
Endpoint publish = Endpoint.publish("http://127.0.0.1:9999/WebService/hellows", new HelloWsImpl());//这里我们使用的是实现的那个方法。
注意,如果是java app的话,建议不要使用127.0.0.1而应该获取到本机的真是端口号,这样别人就能够调用你的ws了。还有就是这个端口不能够被占用了。不然是会报错的:,,最后发布完以后,我们可以通过流浪器打开地址http://127.0.0.1:9999/WebService/hellows?wsdl,如果看到xml文件,那么就证明发布成功啦。
2.开发客户端的ws
开发客户端代码会分为两部分:
1.获取wsdl文件,这个获取除了网上的那个地址,也有可能是第三方发给你的一个wsdl文件
2.使用jdk提供的工具生成客户端主体代码。
下面来示例一下:
1.第一步一般只是准备工作,没什么好讲的只是讲一下怎么生成客户端代码。我们使用到了java的一个工具,在jdk的bin目录里面有一个,我们可以使用这个工具来帮助我们生成代码。
①。使用cmd,切换到存放生成代码的地方(这里需要注意下,生成的包名和服务器中的包名是一致的,所以别放在服务器的src下面,不然就覆盖了)。:
D:\ww>wsimport -keep http://127.12.0.1:9999/WebService/hellows?wsdl
这样,在d盘的ww文件夹下面就生成了这样的一个结构的包和一些类。下面怎么使用这些东西呢?
HelloWsImplService factory=new HelloWsImplService();
//一般情况下,你只需要看哪一个类继承了service,那么这个类就是factory了:public class HelloWsImplService extends Service {...} HelloWs helloWsImplPort = factory.getHelloWsImplPort();//然后通过工厂获取到操作类,就是真正有意义的那个类
helloWsImplPort.sayHello("hotusm");
如果是一个储存在磁盘上的wsdl,我们需要这样来生成:
wsimport -keep D:\jeesite\WebServiceTest\src\weather.wsdl
其他的操作都是一样的。
CXF开发:cxf开发和jdk的开发是差不多的。差别是加上cxf的架包。