Spring boot 整合CXF开发webService

前言

说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例如银行、航空公司的机票查询接口等。

目前就遇到了这种情况,需要在系统中查询第三方提供的soap web service接口,也就是说要将它整合进现有的系统当中。

Spring整合CXF本来十分简单,但是因为使用了Spring boot,不想用以前xml一堆配置的方式,那么能否按照Spring boot的风格优雅的进行整合呢?

答案当然是肯定的,但是遍查网上几乎没有这方面的资料,折腾过后觉得还是有必要记录一下,虽然它显得非常的简单。

添加依赖

Maven的项目,首先当然是添加依赖了,除了原先Spring boot的依赖之外,还需要添加cxf依赖:

<ol class="linenums" style="margin: 0px; color: rgb(30, 52, 123);"><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="tag" style="color: rgb(0, 0, 136);"><dependency></span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="tag" style="color: rgb(0, 0, 136);"><groupId></span><span class="pln" style="color: rgb(72, 72, 76);">org.apache.cxf</span><span class="tag" style="color: rgb(0, 0, 136);"></groupId></span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="tag" style="color: rgb(0, 0, 136);"><artifactId></span><span class="pln" style="color: rgb(72, 72, 76);">cxf-rt-frontend-jaxws</span><span class="tag" style="color: rgb(0, 0, 136);"></artifactId></span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="tag" style="color: rgb(0, 0, 136);"><version></span><span class="pln" style="color: rgb(72, 72, 76);">3.1.6</span><span class="tag" style="color: rgb(0, 0, 136);"></version></span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="tag" style="color: rgb(0, 0, 136);"></dependency></span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="tag" style="color: rgb(0, 0, 136);"><dependency></span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="tag" style="color: rgb(0, 0, 136);"><groupId></span><span class="pln" style="color: rgb(72, 72, 76);">org.apache.cxf</span><span class="tag" style="color: rgb(0, 0, 136);"></groupId></span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="tag" style="color: rgb(0, 0, 136);"><artifactId></span><span class="pln" style="color: rgb(72, 72, 76);">cxf-rt-transports-http</span><span class="tag" style="color: rgb(0, 0, 136);"></artifactId></span></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="tag" style="color: rgb(0, 0, 136);"><version></span><span class="pln" style="color: rgb(72, 72, 76);">3.1.6</span><span class="tag" style="color: rgb(0, 0, 136);"></version></span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="tag" style="color: rgb(0, 0, 136);"></dependency></span></code></li></ol>

编写业务代码

这里我们以查询用户信息为例,创建一个自定义的User对象:

<ol class="linenums" style="margin: 0px; color: rgb(30, 52, 123);"><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">class</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">implements</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Serializable</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">private</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">static</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">final</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">long</span><span class="pln" style="color: rgb(72, 72, 76);"> serialVersionUID </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">-</span><span class="lit" style="color: rgb(25, 95, 145);">5939599230753662529L</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">private</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Long</span><span class="pln" style="color: rgb(72, 72, 76);">              userId</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">private</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">String</span><span class="pln" style="color: rgb(72, 72, 76);">            username</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">private</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">String</span><span class="pln" style="color: rgb(72, 72, 76);">            email</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">private</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Date</span><span class="pln" style="color: rgb(72, 72, 76);">              gmtCreate</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="com" style="color: rgb(147, 161, 161);">//getter setter ......</span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li></ol>

接下来创建一个用于提供web service服务的用户接口,共两个方法getNamegetUser,一个返回普通的String,一个返回自定义对象:

<ol class="linenums" style="margin: 0px; color: rgb(30, 52, 123);"><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="lit" style="color: rgb(25, 95, 145);">@WebService</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">interface</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">UserService</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@WebMethod</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="typ" style="color: teal;">String</span><span class="pln" style="color: rgb(72, 72, 76);"> getName</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="lit" style="color: rgb(25, 95, 145);">@WebParam</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">name </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"userId"</span><span class="pun" style="color: rgb(147, 161, 161);">)</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Long</span><span class="pln" style="color: rgb(72, 72, 76);"> userId</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@WebMethod</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="typ" style="color: teal;">User</span><span class="pln" style="color: rgb(72, 72, 76);"> getUser</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="typ" style="color: teal;">Long</span><span class="pln" style="color: rgb(72, 72, 76);"> userId</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li></ol>

有接口当然要有业务代码实现了,这里我们只做简单的演示:

<ol class="linenums" style="margin: 0px; color: rgb(30, 52, 123);"><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">class</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">UserServiceImpl</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">implements</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">UserService</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">private</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Map</span><span class="pun" style="color: rgb(147, 161, 161);"><</span><span class="typ" style="color: teal;">Long</span><span class="pun" style="color: rgb(147, 161, 161);">,</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pun" style="color: rgb(147, 161, 161);">></span><span class="pln" style="color: rgb(72, 72, 76);"> userMap </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">HashMap</span><span class="pun" style="color: rgb(147, 161, 161);"><</span><span class="typ" style="color: teal;">Long</span><span class="pun" style="color: rgb(147, 161, 161);">,</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pun" style="color: rgb(147, 161, 161);">>();</span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">UserServiceImpl</span><span class="pun" style="color: rgb(147, 161, 161);">()</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="typ" style="color: teal;">User</span><span class="pln" style="color: rgb(72, 72, 76);"> user </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pun" style="color: rgb(147, 161, 161);">();</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setUserId</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="lit" style="color: rgb(25, 95, 145);">10001L</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setUsername</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"liyd1"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setEmail</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"liyd1@qq.com"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setGmtCreate</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Date</span><span class="pun" style="color: rgb(147, 161, 161);">());</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        userMap</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">put</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">getUserId</span><span class="pun" style="color: rgb(147, 161, 161);">(),</span><span class="pln" style="color: rgb(72, 72, 76);"> user</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pun" style="color: rgb(147, 161, 161);">();</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setUserId</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="lit" style="color: rgb(25, 95, 145);">10002L</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setUsername</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"liyd2"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setEmail</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"liyd2@qq.com"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setGmtCreate</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Date</span><span class="pun" style="color: rgb(147, 161, 161);">());</span></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        userMap</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">put</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">getUserId</span><span class="pun" style="color: rgb(147, 161, 161);">(),</span><span class="pln" style="color: rgb(72, 72, 76);"> user</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pun" style="color: rgb(147, 161, 161);">();</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setUserId</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="lit" style="color: rgb(25, 95, 145);">10003L</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setUsername</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"liyd3"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setEmail</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"liyd3@qq.com"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">setGmtCreate</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Date</span><span class="pun" style="color: rgb(147, 161, 161);">());</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        userMap</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">put</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">user</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">getUserId</span><span class="pun" style="color: rgb(147, 161, 161);">(),</span><span class="pln" style="color: rgb(72, 72, 76);"> user</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@Override</span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">String</span><span class="pln" style="color: rgb(72, 72, 76);"> getName</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="typ" style="color: teal;">Long</span><span class="pln" style="color: rgb(72, 72, 76);"> userId</span><span class="pun" style="color: rgb(147, 161, 161);">)</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="kwd" style="color: rgb(30, 52, 123);">return</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"liyd-"</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">+</span><span class="pln" style="color: rgb(72, 72, 76);"> userId</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@Override</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">User</span><span class="pln" style="color: rgb(72, 72, 76);"> getUser</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="typ" style="color: teal;">Long</span><span class="pln" style="color: rgb(72, 72, 76);"> userId</span><span class="pun" style="color: rgb(147, 161, 161);">)</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="kwd" style="color: rgb(30, 52, 123);">return</span><span class="pln" style="color: rgb(72, 72, 76);"> userMap</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="kwd" style="color: rgb(30, 52, 123);">get</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">userId</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li></ol>

发布服务

接口和业务代码我们都写完了,剩下的就是发布服务了,也就是Spring boot和cxf的整合。

其实这二者的整合十分的简单,比以前xml的方式更加的简洁,所有相关的代码如下:

<ol class="linenums" style="margin: 0px; color: rgb(30, 52, 123);"><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="lit" style="color: rgb(25, 95, 145);">@Configuration</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">class</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">CxfConfig</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@Bean</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">ServletRegistrationBean</span><span class="pln" style="color: rgb(72, 72, 76);"> dispatcherServlet</span><span class="pun" style="color: rgb(147, 161, 161);">()</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="kwd" style="color: rgb(30, 52, 123);">return</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">ServletRegistrationBean</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">CXFServlet</span><span class="pun" style="color: rgb(147, 161, 161);">(),</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"/soap/*"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@Bean</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">name </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Bus</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">DEFAULT_BUS_ID</span><span class="pun" style="color: rgb(147, 161, 161);">)</span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">SpringBus</span><span class="pln" style="color: rgb(72, 72, 76);"> springBus</span><span class="pun" style="color: rgb(147, 161, 161);">()</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="kwd" style="color: rgb(30, 52, 123);">return</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">SpringBus</span><span class="pun" style="color: rgb(147, 161, 161);">();</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@Bean</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">UserService</span><span class="pln" style="color: rgb(72, 72, 76);"> userService</span><span class="pun" style="color: rgb(147, 161, 161);">()</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="kwd" style="color: rgb(30, 52, 123);">return</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">UserServiceImpl</span><span class="pun" style="color: rgb(147, 161, 161);">();</span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="lit" style="color: rgb(25, 95, 145);">@Bean</span></code></li><li class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="kwd" style="color: rgb(30, 52, 123);">public</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">Endpoint</span><span class="pln" style="color: rgb(72, 72, 76);"> endpoint</span><span class="pun" style="color: rgb(147, 161, 161);">()</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="typ" style="color: teal;">EndpointImpl</span><span class="pln" style="color: rgb(72, 72, 76);"> endpoint </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="kwd" style="color: rgb(30, 52, 123);">new</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">EndpointImpl</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">springBus</span><span class="pun" style="color: rgb(147, 161, 161);">(),</span><span class="pln" style="color: rgb(72, 72, 76);"> userService</span><span class="pun" style="color: rgb(147, 161, 161);">());</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        endpoint</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">publish</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"/user"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">        </span><span class="kwd" style="color: rgb(30, 52, 123);">return</span><span class="pln" style="color: rgb(72, 72, 76);"> endpoint</span><span class="pun" style="color: rgb(147, 161, 161);">;</span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">    </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li></ol>

可以看到从配置cxf到发布服务,都只需要一二行代码,出乎意料的简单吧?

到这里我们所有的操作就都完成了,启动Spring boot,访问 http://localhost:8080/soap/user?wsdl

可以看到有相关的wsdl描述信息输出了,说明服务已经发布了。

调用服务

发布了web service服务,那怎么调用呢,像整合一些第三方接口也是先有调用才后有发布啊?

调用soap web service,一般的方法是根据wsdl生成客户端代码,整合之后就可以像调用本地接口一样使用了。

但是我个人不怎么喜欢这种方式,每个接口都要生成一次还有一堆的代码,感觉比较麻烦。

相对更喜欢传入方法名调用的方式,显得清爽而简洁,以下就是所有代码了:

<ol class="linenums" style="margin: 0px; color: rgb(30, 52, 123);"><li class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="typ" style="color: teal;">JaxWsDynamicClientFactory</span><span class="pln" style="color: rgb(72, 72, 76);"> dcf </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="typ" style="color: teal;">JaxWsDynamicClientFactory</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">newInstance</span><span class="pun" style="color: rgb(147, 161, 161);">();</span></code></li><li class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="typ" style="color: teal;">Client</span><span class="pln" style="color: rgb(72, 72, 76);"> client </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> dcf</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">createClient</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"http://localhost:8080/soap/user?wsdl"</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="typ" style="color: teal;">Object</span><span class="pun" style="color: rgb(147, 161, 161);">[]</span><span class="pln" style="color: rgb(72, 72, 76);"> objects </span><span class="pun" style="color: rgb(147, 161, 161);">=</span><span class="pln" style="color: rgb(72, 72, 76);"> client</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">invoke</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="str" style="color: rgb(221, 17, 68);">"getUser"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="lit" style="color: rgb(25, 95, 145);">10002L</span><span class="pun" style="color: rgb(147, 161, 161);">);</span></code></li><li class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"></code></li><li class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="com" style="color: rgb(147, 161, 161);">//输出调用结果</span></code></li><li class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px; background: rgb(238, 238, 238);"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="typ" style="color: teal;">System</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="kwd" style="color: rgb(30, 52, 123);">out</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">println</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">objects</span><span class="pun" style="color: rgb(147, 161, 161);">[</span><span class="lit" style="color: rgb(25, 95, 145);">0</span><span class="pun" style="color: rgb(147, 161, 161);">].</span><span class="pln" style="color: rgb(72, 72, 76);">getClass</span><span class="pun" style="color: rgb(147, 161, 161);">());</span></code></li><li class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px;"><code style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 0px; color: inherit; background-color: transparent;"><span class="typ" style="color: teal;">System</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="kwd" style="color: rgb(30, 52, 123);">out</span><span class="pun" style="color: rgb(147, 161, 161);">.</span><span class="pln" style="color: rgb(72, 72, 76);">println</span><span class="pun" style="color: rgb(147, 161, 161);">(</span><span class="pln" style="color: rgb(72, 72, 76);">objects</span><span class="pun" style="color: rgb(147, 161, 161);">[</span><span class="lit" style="color: rgb(25, 95, 145);">0</span><span class="pun" style="color: rgb(147, 161, 161);">].</span><span class="pln" style="color: rgb(72, 72, 76);">toString</span><span class="pun" style="color: rgb(147, 161, 161);">());</span></code></li></ol>

这种方式要注意的就是,如果调用的服务接口返回的是一个自定义对象,那么结果Object[]中的数据类型就成了这个自定义对象(组件帮你自动生成了这个对象),

但是你本地可能并没有这个类,所以需要自行转换处理,最简单的是新建一个跟返回结果一模一样的类进行强转,当然更好的方式是封装一个通用的,这个不是本文主题就不在这深入讨论了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值