webService学习之路一:讲解了通过传统方式怎么发布及调用webservice

webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice

本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webService方式暴露出来的接口

① 为避免怀疑同一个项目中调用本项目的接口,这里我新打开一个eclipse通过最原始的方式发布了一个webservice并启动保证可以被访问

打开浏览器确认可以被访问

②进入CXF/bin 利用wsdl2java工具将webService接口转换为可供调用的java类。调用方式wsdl2java   XXXXX?wsdl

执行完成后,你会发现bin目录下多了一个文件夹,文件夹路径和接口包路径一致

③ 将生成的java文件拷贝到需要调用接口的项目中,请注意保持包的路径一致。

④ 接口的调用,前面的都是准备工作。 o(∩_∩)o

继webService学习之路二基础上,集成好CXF后并保证xml中命名空间都已经正确

在applicationContext.xml中添加如下配置:

<import resource="classpath:META-INF/cxf/cxf.xml" />

    <!-- 注意:serviceClass为接口类并非实现类 -->
<!-- <jaxws:server serviceClass="com.xiaochangwei.web.service.WebserviceTest"
address="/webSerciceTest_service_jaxws"></jaxws:server> --> <!-- 注意:implementor为接口的具体实现类 -->
<!-- <jaxws:endpoint implementor="com.xiaochangwei.web.service.impl.WebServiceTestImpl"
address="/webSerciceTest_endpoint" ></jaxws:endpoint> --> <jaxws:client id="webServiceBean" serviceClass="webservice.server.Service"
address="http://localhost:9999/service" />

请注意address后面不需要添加?wsdl

⑤ 在Controller层写一个测试代码进行测试

package com.xiaochangwei.web.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import webservice.server.Service;
@Controller
@RequestMapping("webServiceTest")
public class WebServiceTestController { @Autowired
private Service webServiceBean; @RequestMapping("test")
public @ResponseBody String test(){ return webServiceBean.getWelcome("xiaochangwei");
}
}

后经自己折腾发现,controller这里的名字不需要和xml中的一致,因为采用的是ioc, by tye吧

⑥ 打开浏览器见证奇迹的时刻到了

并且查看接口发布端,控制台也打印出了 service called   。至此,调用webService接口结束。

怎么能这么顺利的就完成了,喜欢折腾的我怎么可能不折腾下. 经过折腾发现

① controller中注入的接口实例名称可以和xml中的不一样,因为采用的是ioc by type, 最开始我还以为和普通bean getbean(id)不同,必须一样呐

package com.xiaochangwei.web.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import webservice.server.Service;
@Controller
@RequestMapping("webServiceTest")
public class WebServiceTestController { @Autowired
private Service service; @RequestMapping("test")
public @ResponseBody String test(){ return service.getWelcome("xiaochangwei ok");
}
}

这样也是可行的

② xml配置中,我以为可以不指定id,因为我们不用getbean(id)进行调用,经折腾发现,id是必须的 否则报 Id is required for element 'client' when used as a top-level tag

③ 我想去掉xml中的jaxws:clent 配置,而直接在生成的接口service.java 文件上增加@Component 或者 @Service来进行注入,经尝试失败了,不过我还会继续折腾的

每天折腾一点点

噢 错了,是每天进步一点点

至此 webservice学习之路全部完结,有不懂的地方和有错误的地方请及时告知我,共勉

未整理的源码下载:http://pan.baidu.com/s/1eSuIQxs (请勿用于商业项目,若需使用请完善,整理好的代码近期会更新上去)

webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口的更多相关文章

  1. springMVC集成CXF后调用已知的wsdl接口

    本文转载自:https://www.cnblogs.com/xiaochangwei/p/5400303.html 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webServi ...

  2. springcloud学习之路: (三) springcloud集成Zuul网关

    网关就是做一下过滤或拦截操作 让我们的服务更加安全 用户访问我们服务的时候就要先通过网关 然后再由网关转发到我们的微服务 1. 新建一个网关服务Module 2. 依然选择springboot工程 3 ...

  3. WebService 学习之路(一):了解并使用webService

    webService主要用于向其他系统提供接口以便调用,系统间可能开发语言等完全不同,根据约定的接口规范,调用者传递相关参数进行接口调用,服务方根据传入的条件进行业务处理并进行结果返回. webSer ...

  4. springboot 学习之路 3( 集成mybatis )

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  5. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  6. springboot 学习之路 6(集成durid连接池)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  7. Springboot整合cxf后不能访问controller,不能访问接口

    参考版本 springboot 1.4.X <=========> cxf-spring-boot-starter-jaxws 3.1.X springboot 1.5.X <=== ...

  8. Spring学习之旅(六)--SpringMVC集成

    对大多数 Java 开发来说,基于 web 的应用程序是我们主要的关注点. Spring 也提供了对于 web 的支持,基于 MVC 模式的 Spring MVC 能够帮助我们灵活和松耦合的完成 we ...

  9. WebService学习总结(四)--基于CXF的服务端开发

    本节将实践目前最流行的第二种web service 发布和调试框架  CXF Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩 ...

随机推荐

  1. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

  2. 背后的故事之 - 快乐的Lambda表达式(一)

    快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...

  3. 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)

    上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...

  4. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  5. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  6. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

  7. .NET应用程序域

    在.NET平台下,可执行程序并没有直接承载在Windows进程中,而非托管程序是直接承载的..NET可执行程序承载在进程的一个逻辑分区中,称之为应用程序域(AppDomain).一个进程可以包含多个应 ...

  8. 装饰者模式 Decoration

    1.什么是装饰者模式 动态给对象增加功能,从一个对象的外部来给对象添加功能,相当于改变了对象的外观,比用继承的方式更加的灵活.当使用装饰后,从外部系统的角度看,就不再是原来的那个对象了,而是使用一系列 ...

  9. BPM配置故事之案例9-根据表单数据调整审批线路2

    老李:好久不见啊,小明. 小明:-- 老李:不少部门有物资着急使用,现在的审批流程太慢了,申请时增加一个是否加急的选项吧.如果选加急,金额1000以下的直接到我这里,我审批完就通过,超过1000的直接 ...

  10. linux下使用shell 自动执行脚本文件

    以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 文件内容: #将tomcat ...