首页 > 作文

SpringBoot整合WebService服务的实现代码

更新时间:2023-04-04 23:47:39 阅读: 评论:0

目录
为什么使用webrvice?适用场景:不适用场景:axis2与cxf的区别springboot使用cxf集成webrvice

webrvice是一个soa(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过internet进行基于http协议的网络应用间的交互。其实webrvice并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,把你本地的功能开放出去共别人调用。

为什么使用webrvice?

简单解释一下webrvice,比如你的项目需要查询某银行账户余额。你能直接查吗,肯定不行,因为数据库是银行的,他不可能给你权限。你想访问他的数据库获取数据,这就需要用到webrvice。通过调用银行暴露的接口来得到你想要的数据。

适用场景:

软件的集成和复用,如气象局(服务端系统)、天气查询网站等。

发布一个服务(对内/对外),不考虑客户端类型,不考虑性能,建议webrvice服务端已经确定使用webrvice,客户端不能选择,必须使用webrvice

软件集成:通过远程调用技术,将两个系统整合到一起,从而实现软件集成。

软件复用:同一个款软件的多次集成,最终实现复用。

不适用场景:

考虑性能时不建议使用webrvice农业电气化同构程序下不建议使用webrvice

axis2与cxf的区别

目前java开发webrvice的框架主要包括axis2和cxf,如果你需要多语言的支持,你应该选择axis2。如果你需要把你的实现侧重java并希望和spring集成,cxf就是更好的选择,特别是把你的webrvice嵌入其他的程序中。

区别axis2cxf简述webrvice引擎简易的soa框架,可以作为esbspring集成不支持支持应用集成困难简单是否跨语言是否部署方式web应用嵌入式服务的管控和治理支持不支持

springboot使用cxf集成webrvice

1.向pom.xml中添加集成webrvice的相关依赖

  <dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-web-rvices</artifactid></dependency><dependency><groupid>org.apache.cxf</groupid><artifactid>cxf-rt-frontend-jaxws</artifactid><version>3.1.6</version></dependency><dependency><groupid>org.apache.cxf</groupid><artifactid>cxf-rt-transports-http</artifactid><version>3.1.6</version></dependency>

2.创建服务端接口

package com.primeton.mq.rvice; import javax.jws.webrvice;@webrvice(name = "demorvice", // 暴露服务名称    targetnamespace = "http://rvice.mq.primeton.com"// 命名空间,一般是接口的包名倒序)public interface demorvice {    public string sayhello(string ur);}

3.创建服务端接口实现类

package com.primeton.mq.rvice.impl; import com.primeton.mq.rvice.demorvice;import javax.jws.webrvice;import java.util.date;@webrvice(rvicename = "demorvice", // 与接口中指定的name一致        targetnamespace = "http://rvice.mq.primeton.com", // 与接口中的命名空间一致,一般是接口的包名倒        endpointinterface = "com.primeton.mq.rvice.demorvice"// 接口地址)public class demorviceimpl implements demorvice {    @override    public string sayhello(string ur) {        return ur+",现在时间:"+"("+new date()+")";    }}

4.创建cxf配置类

package com.primeton.mq.webrviceconfig; import com.primeton.mq.rvice.demorvice;import com.primeton.mq.rvice.impl.demorviceimpl;import org.apache.cxf.bus;import org.apache.cxf.bus.spring.springbus;import org.apache.cxf.jaxws.endpointimpl;import org.apache.cxf.transport.rvlet.cxfrvlet;import org.springframework.boot.web.rvlet.rvletregistrationbean;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;import javax.xml.ws.endpoint;@configurationpublic class cxfconfig {    @bean    public rvletregistrationbean dispatcherrvlet() {        return new rvletregistrationbean(new cxfrvlet(),"/demo/*");    }    @bean(name = bus.default_bus_id)    public springbus springbus() {        return new springbus();    public demorvice demo高原rvice() {        return new demorviceimpl();    public endpoint endpoint() {        endpointimpl endpoint = new endpointimpl(springbus(), demorvice());        endpoint.publish("/api");        return endpoint;}

5.启动springboot服务

输入http:/宣传软文/localhost:8090/demo/api?wsdl即可,注意我设置的端口是8090,视情况而定。

6.创建客户端

在idea中进入file > new project…菜单打开新建项目窗口,依次选择java、webrvices,version项选择apache axis,libraries项选择 download。然后点击next按钮进入下一页。

在下一页中输入项目名称,然后点击finish按钮开始下载依赖包。依赖包下载完成后进入新建的项目。

选webrvices > generate wsdl from java code,生成wsdl

然后选择服务地址

确定之后,创建一个测试类,代码如下:

package test; import example.demorviceimplrvice;public class demo {    public static void main(string[] args) {        demorviceimplrvice webrviceimpl = new demorviceimplrvice();        string result = webrviceimpl.getdemorviceimplport().sayhello("没有说");        system.out.println("===========================================");        system.out.println(result);    }}

注意:实现webrvice客户端不一定要生成客户端的代码,可以通过地址动态调用。

package com.primeton.mq.test; import com.primeton.mq.rvice.demorvice;import org.apache.cxf.endpoint.client;import org.apache.cxf.jaxws.jaxwsproxyfactorybean浮想联翩的近义词;import org.apache.cxf.jaxws.endpoint.dynamic.jaxwsdynamicclientfactory;import org.apache.cxf.transport.http.httpconduit;import org.apache.cxf.transports.http.configuration.httpclientpolicy;public class demo {    public static void main(string[] args) {        //创建动态客户端        jaxwsdynamicclientfactory factory = jaxwsdynamicclientfactory.newinstance();        client client = fac湘潭科技大学tory.createclient("http://localhost:8090/demo/api?wsdl");        // 需要密码的情况需要加上用户名和密码        //client.getoutinterceptors().add(new clientlogininterceptor(ur_name,pass_word));        httpconduit conduit = (httpconduit) client.getconduit();        httpclientpolicy httpclientpolicy = new httpclientpolicy();        httpclientpolicy.tconnectiontimeout(2000);  //连接超时        httpclientpolicy.tallowchunking(fal);    //取消块编码        httpclientpolicy.treceivetimeout(120000);     //响应超时        conduit.tclient(httpclientpolicy);        //client.getoutinterceptors().addall(interceptors);//设置拦截器      try{          object[] objects = new object[0];          // invoke("方法名",参数1,参数2,参数3....);          objects = client.invoke("sayhello", "sujin");          system.out.println("返回数据:" + objects[0]);      }catch (exception e){          e.printstacktrace();      }}

到此这篇关于springboot整合webrvice服务的文章就介绍到这了,更多相关springboot整合webrvice服务内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 23:47:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/349a7b4007dc8e77d2b7557f11f54d9c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:SpringBoot整合WebService服务的实现代码.doc

本文 PDF 下载地址:SpringBoot整合WebService服务的实现代码.pdf

标签:接口   客户端   服务端   是一个
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图