webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

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 (请勿用于商业项目,若需使用请完善,整理好的代码近期会更新上去)

时间: 2024-10-25 14:15:32

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

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

网关就是做一下过滤或拦截操作 让我们的服务更加安全 用户访问我们服务的时候就要先通过网关 然后再由网关转发到我们的微服务 1. 新建一个网关服务Module 2. 依然选择springboot工程 3. 老规矩起个名字 4. 勾选注册中心客户端 5. 勾选zuul网关模块 6. 编写配置文件 server: # 服务端口号 port: 8085 spring: application: # 服务名称 - 服务之间使用名称进行通讯 name: service-zuul eureka: client

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun

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

参考版本 springboot 1.4.X <=========> cxf-spring-boot-starter-jaxws 3.1.X springboot 1.5.X <=========> cxf-spring-boot-starter-jaxws 3.2.X 成功集成cxf后,发现只有webservice服务可以正常使用,其他请求url全部无法正常访问.然后在cxf 配置文件中 WebServiceCxfCfg.java 更改此方法名:dispatcherServlet

Redis——学习之路三(初识redis config配置)

我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. 我们就从上到下来理解一下这些配置信息中的某些配置: 1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb.我可以在安装目录文件夹下找到这个文件. 2.requirepass是密码,即连接服务器的密码,默认为空.下面我来设置一个密码然后用带密码的命令连接一遍. 3.msterauth

Python小白学习之路(十三)—【递归调用】

一.递归调用定义 在函数内部,可以调用其他函数. 如果在调用一个函数的过程中直接或间接调用自身本身,则称为递归调用 从某种意义上来说,递归调用可以实现无限循环 二.递归调用的特性 必须有一个明确的结束条件 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 递归效率不高,递归层次过多会导致栈溢出 在计算机中,函数调用是通过栈(stack)这种数据结构实现的 每当进入一个函数调用,栈就会加一层栈帧 每当函数返回,栈就会减一层栈帧 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出

webService学习之路(二)

继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来 本次集成是基于之前已经搭建好的SpringMVC+mybatis+shiro的基础上进行的,看似很简单的集成,但是由于jar包冲突,搞了好久,牺牲周六休息时间奉上结果 代码文章末尾会给出下载地址的,请大家不用担心,这些都是我搭建的,还不是很完善,要用于商业项目请修改完善. 步骤: ① 首先在 http://cxf.ap

springmvc集成cxf的方法

最近需要在项目中增加webservice接口,供三方调用,下面就把集成的方法展示如下,供大家参考: 第一步:服务端的发布; 1:配置web.xml文件,添加cxf的servlet <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-start

JAVA学习之路三 编程英文汇总学习

JAVA学习中的每个章节中都有许多英文,不断熟悉工作英语也是提高编程能力很重要的一块,对于IT行业,英语才是通用语. 记在<JAVA语言程序设计>学习的第一章英文学习之后 .class file(.class文件)                       javac command(javac命令)          .java file(.java文件)            java Development Toolkit(JDK,java开发工具包)          assembl

spring boot 学习之路3( 集成mybatis )

下面就简单来说一下spring boot 与mybatiis的整合问题,如果你还没学习spring boot的注解的话,要先去看spring boot的注解 好了,现在让我们来搞一下与mybatis的整合吧,在整合过程中,我会把遇到的问题也说出来,希望可以让大家少走弯路! 首先,是在pom.xml中添加一些依赖 这里用到spring-boot-starter基础和spring-boot-starter-test用来做单元测试验证数据访问 引入连接mysql的必要依赖mysql-connector