热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ApacheCXF+SpringMVC整合发布WebService

https:www.jianshu.comp527d3ba6ad14 一、概述webservice其实是个类似文档的东西,保证不同平台应用之间可以相互操作,之前都是使用java拓展

https://www.jianshu.com/p/527d3ba6ad14

 

一、概述

webservice其实是个类似文档的东西,保证不同平台应用之间可以相互操作,之前都是使用java拓展包进行ws发布,生成一个代理jar进行调用,这次试试springmvc+cxf,不过这个还是soap方式的,restful方式的需要研究一下jersy再放出来。

二、实例

1.pom文件中引入cxf

 >
            >org.apache.cxf>
            >cxf-rt-frontend-jaxws>
            >2.6.0>
        >
        >
            >org.apache.cxf>
            >cxf-rt-transports-http>
            >2.6.0>
        >      

2.webservice 接口 及实现类

package com.web.cxf.service;

import javax.jws.WebService;

@WebService
public interface CXFWebService {

    public String hello(String text);
    
}
package com.web.cxf.service.impl;

import com.web.cxf.service.CXFWebService;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(endpointInterface = "com.web.cxf.service.CXFWebService",
        targetNamespace = "http://service.cxf.web.com/",
        serviceName = "CXFWebService")
public class CXFWebServiceImpl implements CXFWebService{

    public String hello(@WebParam String text) {
        return "Hello " + text;
    }
}

3.配置applicationContext-cxf.xml


xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:amq="http://activemq.apache.org/schema/core"
       xmlns:jms="http://www.springframework.org/schema/jms"
       xmlns:mvc="http://www.alibaba.com/schema/stat"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://activemq.apache.org/schema/core
        http://activemq.apache.org/schema/core/activemq-core-5.7.0.xsd
        http://www.alibaba.com/schema/stat http://www.alibaba.com/schema/stat.xsd
        http://www.springframework.org/schema/jms
        http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd">


    <context:annotation-config />

    id="test" class="com.web.cxf.service.impl.CXFWebServiceImpl" />

    
    <jaxws:endpoint id="testCXF" implementor="#test" address="/testCXF" />

>

4.添加xml到web入口


  >
    >contextConfigLocation>
    >
      classpath:config/applicationContext.xml,
      classpath:config/applicationContext-cxf.xml
    >
  >

5.启动项目查看http://localhost:8080/cxf/testCXF?wsdl

 
image.png

 

6.客户端调用

package com.web.cxf.client;


import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

import javax.xml.namespace.QName;

public class CXFWebServiceClient {

    public static void main(String[] args) {
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient("http://localhost:8080/cxf/testCXF?wsdl");
        Object[] objects;
        //使用qname 解决该命名空间下找不到方法的问题
//        //QName qname;
//        try {
//            qname = new QName("http://service.cxf.web.com/","hello");
//            objects = client.invoke(qname,"AnyFast");
//            System.out.println(objects[0].toString());
//        }catch (Exception e){
//            e.printStackTrace();
//        }

        try {
            objects = client.invoke("hello","AnyFast");
            System.out.println(objects[0].toString());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

查看控制台


 
image.png

-end-



作者:榆次丶笑笑生
链接:https://www.jianshu.com/p/527d3ba6ad14
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

推荐阅读
  • 分布式Dubbo 分布式服务
    分布式,du ... [详细]
  • 七、使用Angular命令行界面的渐进式网络应用正如我们在第3章中提到的理解A ... [详细]
  • Alibaba架构师出品:《Java一无所知到精通》文档
    前言阿里巴巴属于行业绝对的老大哥,培养的太多优秀的程序员,如果仔细去看看阿里对于Java程序员的招聘需求你会发现,不管是多久的工作经验,都需要熟练掌握Java基础。因此,对于秋招的 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • MVC下Log4Net的配置和使用
    MVC下Log4Net的配置和使用对于网站来讲,我们不能将异常信息显示给用户,Log4Net用来记录日志,可以将程序运行过程中的信息输出到文件,数据库中等地方,可以通过日志查看系统的运行过程,发现系 ... [详细]
  • java和servlet交互,JSP与Servlet之间的交互,传值
    一.Servlet首先要明白一点,servlet需要容器的支持才能够运行,如Tomcat、jetty达到servlet的请求,需要ServletRequest对象和S ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • boot集成的邮箱 spring_spring boot集成mybatis(2) – 使用pagehelper实现分页
    章节SpringBoot介绍SpringBoot开发环境搭建(Eclipse)SpringBootHelloWorld(restful接口)例子spri ... [详细]
  • 阿里首席架构师科普RPC框架
    RPC概念及分类RPC全称为RemoteProcedureCall,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程 ... [详细]
  • 1.WebServicea.定义:WebService是一种跨编程语言和跨操作系统平台的远程调用技术b.三大技术:XMLXSD,SOAP, ... [详细]
author-avatar
傅笑寒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有