公司口试操作题—用webservice实现两个整数求和
刚开始找工作那段时间,每天要面试好几家单位,不停的重复着面试,机试。后来来到我现在这个公司,感觉这家公司很务实,给了我三道题目,前两道不难,第一个题目是结合Oracle数据库建立一个登陆信息表,实现ajax登陆验证功能,第二个题目是用oracle语句实现jsp分页功能。前两道题目很简单,关键是第三道题目,用webservice实现两个整数求和,看到这个题目我连webservice的基本概念都不知道,回校问老师,老师也不清楚。没办法只能上网查资料,弄到半夜十二点半终于搞明白了。
第二天机试顺利通过。之后公司来了几位应试的最后都被webService拒之门外,我问道怎么不上网查资料呢,他说,查了,网上的例子放到自己的机器出些不知道的错误,网上文章也都是些难懂的字眼看不懂。所以我把机试题的经验写到博客里,希望能对求职的朋友有一点帮助。
概念:
Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问
说的通俗一点webservice它就是一个函数或着方法,它的特别之处在于这个方法布署到web容器之后,无论身处何地,只要能访问到这个web容器,谁都可以调用这个方法。实现webservie最快捷的就是用axis框架,将axis的几个jar包导入到项目里,把要实现webservice功能的类,复制一份放到WEBROOT目录下,将复制到WEBROOT目录下的类的后缀名改为.jws,然后布署到web容器,在地址栏中输入http://ip/项目名/类文件.jws,将会看到如图所示的界面:
点击 Click to see the WSDL 会打开一个网页,网页包含一些xml的描述信息,如图
如果看到上面的信息,表明的你的webservice已经发布成功了,在程序里可以调用这个"函数"了
简单的webservice服务调用代码:
package com.sunnylocus.test; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class TestCalculate { public static void main(String[] args) { try { /*我在公司的服务器测试的,公司的tomcat已把端口改成80 所以ip地址后面不用加端口号*/ String endpoint = "http://192.168.0.16/axis/Calculate.jws"; Service service = new Service(); Call call = null; call = (Call) service.createCall(); //设置操作名称(或着说被调用的方法名) call.setOperationName(new QName(endpoint, "getSum")); //设置目标终端地址 call.setTargetEndpointAddress(new java.net.URL(endpoint)); //设置传入参数 Object[] params = {new Integer(5),new Integer(3)}; //调用webservice Integer sum = (Integer) call.invoke(params); System.out.println("两数之和:"+sum); } catch (Exception ex) { ex.printStackTrace(); } } }
输出:
代码及axis相关的jar包,我打包放在附件了,希望对找工作的朋友有点帮助。