Java WebService 高频面试题及详细答案(实战向)_第1页
Java WebService 高频面试题及详细答案(实战向)_第2页
Java WebService 高频面试题及详细答案(实战向)_第3页
Java WebService 高频面试题及详细答案(实战向)_第4页
Java WebService 高频面试题及详细答案(实战向)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaWebService高频面试题及详细答案(实战向)一、基础概念类1、什么是WebService?它的核心作用是什么?答案:WebService是一种跨平台、跨语言的远程调用技术,基于HTTP协议,通过标准化的XML数据格式实现不同系统之间的通信和数据交互。核心作用主要有两点:1.解决异构系统对接问题:不同开发语言(Java、.NET、PHP等)、不同服务器、不同架构的系统,无需适配底层语法,统一通过标准接口通信;2.实现业务功能复用:将通用业务(如短信推送、数据查询、校验接口)封装为独立服务,供多个项目、多个系统远程调用,减少重复开发。它最大的特点就是平台无关、语言无关、协议标准化,是传统企业系统对接、老旧系统集成的主流方案。2、WebService的三大核心要素是什么?各自作用?答案:核心三要素为WSDL、SOAP、UDDI,其中前两个是日常开发核心,UDDI基本已被淘汰。1.WSDL(Web服务描述语言):基于XML的服务描述文档,相当于接口的“说明书”。里面定义了当前WebService的接口地址、请求方法、请求参数、返回数据格式、端口、命名空间等信息。客户端通过WSDL地址,就能自动解析生成调用代码,无需手动对接参数。2.SOAP(简单对象访问协议):WebService的数据传输协议,基于XML封装请求和响应数据。规定了数据的封装格式、请求头、请求体、错误信息格式,保证服务端和客户端数据解析统一。默认基于HTTP传输,也可支持FTP、SMTP。3.UDDI(统一描述、发现和集成协议):早期的服务注册中心,用于统一收录、查询WebService服务。现在企业开发中基本不用,服务注册发现已被Nacos、Eureka、Consul等替代。3、SOAP和HTTP是什么关系?SOAP是独立协议吗?答案:SOAP不是独立传输协议,它是数据封装协议,必须依托底层传输协议工作,日常开发中99%场景都是依托HTTP协议。可以简单理解:HTTP负责网络传输通道,SOAP负责规范通道里的数据包格式。普通HTTP接口(Http接口、Rest接口)传输的是普通文本、JSON、表单数据;而WebService的SOAP请求,是在HTTP请求体中,嵌套了一套固定格式的XML报文,包含Envelope、Header、Body等固定节点。4、WebService适用场景和不适用场景分别是什么?答案:适用场景:1.异构老旧系统对接:传统ERP、OA、银行、政务老系统,大多只支持WebService对接;2.跨语言、跨平台严格对接:需要极高的数据规范性、格式统一性的对外接口;3.企业内部大型系统集成、第三方合规接口调用(如部分政务、金融对外接口)。不适用场景:1.互联网高并发、高响应场景:SOAP报文XML格式臃肿,数据冗余大,解析速度慢,性能远低于JSON;2.前后端分离项目、微服务内部调用:主流使用Restful+JSON,更简洁高效;3.简单的数据查询、提交接口,没必要过度复杂化。二、技术框架与实战开发类1、Java中开发WebService常用的框架有哪些?各自优缺点?答案:Java主流开发框架主要是JAX-WS(官方标准)、CXF、Axis2三种,目前企业最常用的是CXF。1.JAX-WS(JDK原生)优点:JDK1.6及以上自带,无需引入第三方依赖,轻量、上手简单,适合简单接口开发;缺点:功能简陋,不支持高级特性(拦截器、报文加密、断点续传),稳定性一般,不适合复杂项目。2.ApacheCXF目前企业首选,完全兼容JAX-WS标准,支持丰富的高级特性,自带拦截器、日志、报文校验、加密解密,支持Rest和SOAP双模式,稳定性强、性能优秀,适配Spring、SpringBoot项目。3.ApacheAxis2早期主流框架,功能强大但配置繁琐、依赖臃肿、启动慢,现在基本被CXF淘汰,新项目几乎不用,仅部分老旧项目存在。2、简单说下SpringBoot整合CXF开发WebService的核心步骤答案:实战开发核心分为5步,流程固定:1.引入CXF核心依赖:在pom.xml中引入cxf-spring-boot-starter依赖;2.定义服务接口:使用JAX-WS注解,@WebService定义接口,@WebMethod声明对外暴露的方法,@WebParam声明参数名称;3.编写接口实现类:实现定义的接口,完成具体业务逻辑;4.CXF配置类注册服务:通过@Configuration配置类,创建ServletRegistrationBean注册CXF核心Servlet,创建Endpoint端点,绑定接口实现类、设置访问地址;5.启动项目测试:通过访问项目地址+服务地址?wsdl查看生成的WSDL文档,确认服务发布成功。3、如何根据WSDL文档生成客户端调用代码?常用方式有哪些?答案:日常开发对接第三方WebService接口,无需手写请求报文,直接根据WSDL生成客户端代码,两种常用方式:1.JDK自带wsimport命令最简单便捷,cmd执行命令:wsimport-s源码输出路径-p包名WSDL地址执行后自动生成接口、实体类、调用工具类,直接注入调用即可,适合简单接口。2.Maven插件jaxws-maven-plugin企业项目主流方式,在pom配置插件,指定WSDL地址、生成包路径,编译项目自动生成客户端代码,统一管理、适配项目结构,支持批量生成。4、@WebService、@WebMethod、@WebParam注解的作用和使用注意点答案:1.@WebService:作用在类或接口上,标识当前类为WebService服务类,会自动生成WSDL文档。常用属性:name(服务名称)、targetNamespace(命名空间,必须和客户端一致,否则调用报错)。2.@WebMethod:作用在方法上,声明该方法为对外暴露的接口方法。如果不添加该注解,类中所有public方法都会默认暴露,容易暴露内部方法,生产环境必须手动指定。3.@WebParam:作用在方法参数上,指定请求参数名称。如果不指定,生成的参数名默认是arg0、arg1,可读性差,且部分第三方服务会严格校验参数名,导致调用失败。三、核心原理与差异对比类1、WebService(SOAP)和Restful接口的核心区别?项目中如何选型?答案:两者核心区别在于传输格式、协议规范、性能和适用场景,是面试高频对比考点:对比维度WebService(SOAP)Restful接口数据格式固定XML报文,格式臃肿、冗余多JSON为主,简洁轻量、冗余少协议规范专属SOAP协议,有严格的报文结构规范基于原生HTTP协议,无强制报文规范性能效率解析慢、传输数据量大,性能偏低解析快、体积小,高并发适配性好跨平台性极强,标准化程度高较好,主流技术均支持JSON使用场景老旧系统、政务、金融异构对接互联网项目、微服务、前后端分离选型原则:对接老旧系统、国企政务、金融第三方接口,必须用WebService;自研新项目、微服务架构、高并发场景,统一使用Restful+JSON。2、什么是WSDL命名空间(targetNamespace)?为什么命名空间不一致会调用失败?答案:targetNamespace是WebService的唯一标识命名空间,用于区分不同服务、不同接口的同名方法和实体,避免命名冲突。WebService的请求报文、服务端点、客户端代码都会绑定该命名空间。如果客户端生成代码的命名空间和服务端定义的不一致,服务端无法匹配到对应的接口方法,会直接报找不到方法、参数不匹配错误。实战中最常见的坑就是手动修改包名、复制代码后命名空间错乱,导致对接失败,优先核对WSDL文档和客户端命名空间是否一致。3、SOAP1.1和SOAP1.2版本的主要区别?答案:两个版本协议头、请求地址、报文格式有细微差异,不兼容:1.请求Content-Type不同:SOAP1.1是text/xml,SOAP1.2是application/soap+xml;2.协议命名空间不同,版本标识不同;3.1.2版本优化了报文结构,支持更多编码格式,容错性更好。实战对接第三方接口时,必须和对方版本一致,版本不匹配会直接报415、500请求格式错误。CXF框架默认兼容两个版本,可手动配置指定版本。四、问题排查与实战坑点类1、调用WebService接口常见报错及解决方案答案:整理工作中最高频的报错和解决办法:(1)415不支持的媒体类型原因:客户端SOAP版本和服务端不匹配,Content-Type设置错误;解决方案:统一两端SOAP版本,手动指定请求头Content-Type。(2)报找不到对应方法、参数不匹配原因:命名空间不一致、参数名不匹配、参数数量不对;解决方案:核对targetNamespace,确保客户端参数名和WSDL文档完全一致,禁止使用arg0默认参数。(3)报文解析异常、XML格式错误原因:手动拼接报文格式错误、特殊字符未转义;解决方案:优先使用工具类生成代码调用,不手动拼XML,特殊字符&、<、>做转义处理。(4)连接超时、服务不可达原因:服务地址错误、防火墙拦截、端口未开放、服务未启动;解决方案:先浏览器访问WSDL地址校验服务可用性,排查网络和端口权限。2、WebService接口如何实现报文加密、权限校验?答案:WebService是公开接口,生产环境必须做安全校验,常用两种方案:1.自定义Header鉴权(最常用)在SOAP请求Header中自定义token、用户名、密码字段,服务端通过CXF拦截器拦截所有请求,解析Header参数,校验权限,校验不通过直接拒绝访问,拦截器统一处理,无需每个接口单独校验。2.报文加密解密通过CXF自带的安全组件,对SOAP请求体XML报文进行AES加密,服务端接收后解密,防止报文数据明文传输泄露,适合传输敏感数据(身份证、手机号、交易数据)的接口。3、WebService接口性能差,实战中如何优化?答案:针对SOAP报文臃肿、解析慢的问题,实战优化手段:1.精简报文:减少无用参数、精简返回实体字段,避免冗余数据传输;2.开启连接池:WebService默认短连接,频繁创建销毁连接耗时,配置HTTP连接池复用连接;3.关闭日志冗余打印:CXF默认打印完整请求响应报文,生产环境关闭详细日志,减少IO消耗;4.非必要场景弃用WebService,改造为Restful+JSON接口,从根源提升性能;5.对高频查询接口做本地缓存、Redis缓存,减少接口重复调用。五、延伸面试题1、WebService和Dubbo、Feign的区别?答案:三者都是远程调用技术,但应用场景完全不同:1.WebService:跨系统、跨语言对外调用,基于SOAP/HTTP,标准化通用,性能差,用于外部异构系统对接;2.Dubbo:微服务内部Java服务之间的远程调用,基于Dubbo协议,高性能、高并发,仅限Java生态内部使用;3.Feign:基于HTTP的声明式调用,用于微服务内部Rest接口调用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论