三年没写了。。。好快。。上班之后还是重拾起来,虽然早已不做ACM了,但是和大家分享知识总是令人高兴地。
说下项目中常用到的WebService吧,WebService技术是一种跨平台、耦合度非常低的应用。实际场景:
1.提供WebService的WSDL地址,要求我们调用其中的方法,完成某些业务逻辑。此时我们是客户端调用服务,别人是服务端提供服务。
假设有这样的一个WSDL地址,10.112.11.145:9902/App/MyImplService?WSDL;里面定义了一个方法void add(int x,int y);
我们在浏览器地址中输入这个WSDL地址(前提是有效的),就可以看到一些XML,通常是SOAP报文。
开发的时候,
第一步:打开CMD的DOS窗口,进入你的jdk安装目录的bin下面,比如我的是D:/jdk1.6.0_26/bin,利用jdk提供的wsimport.exe工具来生成我们本地需要的java代码。
命令如下:
wsimport -s D;\Test\src http://10.112.11.145:9902/App/MyImplService?WSDL,
就可以在指定的Src目录下获得我们的java代码了。
第二步:
把上面得到的Java文件直接导入到我们的项目中,就跟用已有的Java文件一样,可以直接用,调用过程也很简单。
MyImplService service = new MyImplService(); MyImpl serviceImpl = service.getMyImplPort(); serviceImpl.add(xx,xx);
这样就完成了整个过程的调用。
2.服务提供方。我们作为WebService的提供方开发接口,别人来调用我们的服务,像1中我们的操作一样。
这个相信也有很多人都做过了,很简单,
第一步:根据你具体的业务逻辑定义接口,
package com.sgx.webservice; import javax.jws.WebService; @WebService public interface Hello { void sayHello(); }
第二步:完成实现类
package com.sgx.webservice; import javax.jws.WebService; @WebService public class HelloImpl implements Hello{ @Override public void sayHello() { System.out.println("Hello,World!"); } }
第三步:发布WebService,
1.如果是本地项目的话,直接用java里面的Endpoint.publish(yourwsdl)即可。
2.如果是要上其他环境(测试,生产==)这个时候我们只需要定义好我们的WebService接口,WebMethod等等。
如果是WebLogic服务器的话,不用写Listener,只需要定义接口和实现类,这样应用启动的时候就会自动检测到这个WebService服务并且将他发布出去,
我们在浏览器输入地址验证一下即可。
如果是Tomcat服务器,应该还要实现一个Listner来发布服务。这样才能将服务发布出去。(Tomcat下请大家自行验证。)
然后别人就可以调用了我们发布的服务了。