WebService面试题及答案.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

WebService面试题及答案

1.什么是WebService?它解决了什么实际问题?

答案:WebService是基于HTTP协议、用XML格式传输数据的跨语言/跨平台服务调用技术。实际开发中主要解决“异构系统互通”问题——比如Java后端要给.NET客户端提供用户查询接口,或老系统(如ERP)需给新系统(如电商平台)同步库存,WebService能屏蔽语言和平台差异,让不同系统通过统一协议交互。

2.WebService的核心协议有哪些?各自作用是什么?

答案:核心是3个协议:

SOAP:简单对象访问协议,规定数据传输格式(XML结构,包含Envelope头、Header(可选,存安全/事务信息)、Body(业务数据)),且必须基于HTTP/HTTPS传输;

WSDL:Web服务描述语言,是服务的“说明书”——用XML列出服务地址、接口方法名、参数类型、返回值类型,客户端可通过WSDL自动生成调用代码;

UDDI:统一描述发现集成,相当于“服务注册中心”,但实际项目中用得少(一般直接给客户端WSDL地址,不用专门注册)。

3.WebService和RESTfulAPI的区别?什么场景选WebService?

答案:主要区别在3点:

维度

WebService

RESTfulAPI

数据格式

仅XML

支持JSON/XML/FormData等

协议依赖

必须基于SOAP+HTTP

基于HTTP方法(GET/POST等)

灵活性

重(需生成WSDL和客户端代码)

轻(直接传JSON,无需生成代码)

选WebService的场景:需强事务/安全支持(如银行转账,SOAPHeader可加数字签名)、老系统对接(如ERP/OA系统只提供WebService接口)、跨语言复杂交互(如C++客户端调用Java服务)。REST更适合轻量场景(如APP接口)。

4.实际开发中用什么框架实现WebService?以CXF为例,说下服务发布步骤?

答案:常用框架有ApacheCXF、Axis2,CXF更轻量且支持Spring整合。CXF发布服务步骤:

写业务接口(如UserService),加@WebService注解;

写实现类,加@WebService(endpointInterface=接口全路径)指定接口;

配置Spring(或纯Java代码)发布:

//纯Java方式

UserServiceservice=newUserServiceImpl();

Endpoint.publish(http://localhost:8080/webservice/user,service);

启动服务后,访问http://localhost:8080/webservice/user?wsdl能看到WSDL文档,说明发布成功。

5.客户端怎么调用WebService?有几种方式?

答案:主要2种方式:

工具生成客户端代码:用CXF的wsdl2java工具(命令:wsdl2java-d生成路径wsdl地址),生成接口和客户端类,直接new客户端对象调用;

动态调用(不生成代码):用CXF的JaxWsDynamicClientFactory,适合服务地址或参数可能变化的场景,示例:

JaxWsDynamicClientFactoryfactory=JaxWsDynamicClientFactory.newInstance();

Clientclient=factory.createClient(http://xxx?wsdl);

//调用方法(参数1:方法名,参数2:方法参数数组)

Object[]result=client.invoke(queryUser,1001);

6.WebService调用时出现“连接超时”,怎么排查?

答案:按步骤排查:

先检查服务端是否正常:访问WSDL地址,看能否打开(若打不开,可能服务没启动或端口被占用);

检查网络连通性:用ping命令测服务端IP,用telnet命令测端口(如telnet008080),排除防火墙拦截;

客户端配置超时参数:CXF客户端默认超时时间长,可手动设置缩短排查时间,示例:

//设置连接超时和响应超时(单位:毫秒)

HTTPConduitconduit=(HTTPConduit)client.getConduit();

HTTPClientPolicypolicy=newHTTPClientPolicy

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档