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

摘要:
O(\\\\\\\\\\\\)--˃请注意,不需要添加wsdl⑤ 在控制器层中写入测试代码以测试packagecom。肖昌伟。网状物控制器;输入错误。弹簧框架。豆。工厂注释。自动连线;输入错误。弹簧框架。刻板印象控制器;输入错误。弹簧框架。网状物绑定注释。请求映射;输入错误。弹簧框架。网状物绑定注释。响应机构;importwebservice。服务器服务@Controller@RequestMappingpublicclassWebServiceTestController{@AutowiredprivateServicewebServiceBean;@RequestMappingpublic@ResponseBodyStringtest(){returnwebServiceBean.getWelcome;}}后来,我发现控制器的名称不需要与xml中的名称相同,因为使用了ioc。⑥ 打开浏览器,见证奇迹。检查接口发布端。控制台还打印出调用的服务。到目前为止,调用webService接口已经结束。

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

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

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

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

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

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

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

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

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

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

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

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

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

④ 接口的调用,前面的都是准备工作。 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吧 

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

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

并且查看接口发布端,控制台也打印出了 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接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jemeter批量测试FormData使用方法详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

new一个接口

首先我们先看看接口的定义:   接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要...

Web Service实现分布式服务的基本原理

简单的说, 就是客户端根据WSDL 生成 SOAP 的请求消息, 通过 HTTP 传输方式(也可以是其它传输方式, 如 FTP 或STMP 等,目前 HTTP 传输方式已经成为 J2EE Web Service 的标准)传给对方, 服务方实现服务请求, Web Service(Web服务)将结果以 SOAP 的消息格式返回给客户端。 如果人工去创建和解析基...

Android平台下的JNI开发

JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程。要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Eclipse下进行C/C++开发了。 其实JNI的原理很容易理解,其本质就是在Java层定义一个接口,同时在C层用C/C++代码实现该接口的功能并编译成动态链接...

JDK1.7中关于AutoCloseable接口的使用

1.查看API文档,找到AutoCloseable相关定义 public interface AutoCloseable 该接口是从JDK1.7开始引入,并且该接口中只有一个方法close() 1 void close() throws Exception //关闭此资源,放弃任何潜在资源 2.测试AutoCloseable接口,实现自动关闭处理 2.1新...

JAVA-SPI机制-实现功能的热插拔

一、序:   开发中经常遇到的一个需求是,处理不同种类的数据,但是完成的功能是相似的,功能随着传入类型的不同而变化 二、方案:   1、定义接口:定义一个接口,编写不同的实现类     (1)使用场景:完成功能相同,参数也类似,只是内部的实现逻辑不同,可以编写接口实现的配置类,使用时动态获取实现类     (2)缺点:数据的类型必须确定     (3)举...

python+unittest+requests实现接口自动化的方法

前言: Requests简介 Requests 是使用Apache2 Licensed许可证的 HTTP 库。用 Python 编写,真正的为人类着想。 Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 有点落后了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最...