第一个webservice程序
什么是webservice呢,有的人可能会对这个有所误解。他解决了跨平台和跨服务器的问题,使用webservice可以像第三方获取所需的资源。如“百度地图”,“gps导航”等都会使用到webservice。地图厂商一般都会提供相应的接口给其他用户使用。webservice主要包含3个方面 (1)web服务提供者(WSDL) (2)web服务请求者(SOAP) (3)web服务管理者(UDDI) 理解起来应该没有太多的问题,对于java程序员来说,axis2是一个不错的选择,如果使用的是spring那么选择cxf比较合适 开发准备 首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。 下载地址:http://axis.apache.org/axis2/java/core/download.cgi 我这里就选择war包,把它部署到tomcat里面就可以了。之后在浏览器里输入http://localhost:8080/axis2/可以看到 下面我就来写一个简单的服务器端webservice,这里建议java程序不要写在包里面,java程序如下 import java.util.Random; public class HelloWorldService { public String sayHello(String name) { return name + " say: hello [axis2]"; } public int getAge(int i) { return i + new Random().nextInt(100); } } 我们可以吧这个java类的.class文件复制到 tomcat目录下的webapps的axis2的WEB-INF目录的pojo文件夹下。如果没有pojo这个目录就手动创建一个一个文件夹。然后在浏览器输入:http://localhost:8080/axis2/, 点击service之后可以看到如下页面继续点击链接就可以看到一个xml了。接下来就可以写一个客户端程序来使用服务器端的webservice了,这里要把需要的jar包导入进去,也可以用源码或者war包里面的 程序如下所示 package bao1; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; public class HelloWorldClient { public static void main(String[] args) throws AxisFault { //RPCServiceClient是RPC方式调用 RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); //设置调用WebService的URL String address = "http://localhost:8080/axis2/services/HelloWorldService"; EndpointReference epf = new EndpointReference(address); options.setTo(epf); /** * 设置将调用的方法,http://ws.apache.org/axis2是方法 * 默认(没有package)命名空间,如果有包名 * 就是http://service.hoo.com 包名倒过来即可 * sayHello就是方法名称了 */ QName qname = new QName("http://ws.apache.org/axis2","sayHello"); //指定调用的方法和传递参数数据,及设置返回值的类型 Object[] result = client.invokeBlocking(qname,new Object[] { "jack" },new Class[] { String.class }); System.out.println(result[0]); qname = new QName("http://ws.apache.org/axis2","getAge"); result = client.invokeBlocking(qname,new Object[] { new Integer(22) },new Class[] { int.class }); System.out.println(result[0]); } } 下面是效果截图 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |