webservice总结之cxf

java webservice有很多种实现方式,处理方式一般有两种:

  a:基于SOAP的 JAX-WS(Java API for XML-Based Web Services) 比如:RI,Axis,CXF

  b:基于REST的JAX-RS 比如Jersey,RESTEasy,CXF

可以看到CXF 不仅用于开发基于 SOAP 的 WS,也开发于开发基于 REST 的 WS,那就来总结一下CXF的具体用法吧。

SOAP 风格写法

1,定义接口

import javax.jws.WebService;

@WebService
public interface HelloFacade {
    String sayHello(String msg);

}

2,服务端实现接口与发布

 a, 实现接口:

import javax.jws.WebService;

import org.springframework.stereotype.Component;

import com.bresume.core.ws.HelloFacade;

@WebService
@Component
public class HelloFacadeImpl implements HelloFacade{

    @Override
    public String sayHello(String msg) {
        System.out.println("msg="+msg);
        return msg+"_success";
    }

}

HelloFacadeImpl

 b, web.xml配置:

    <!-- CXF -->
    <servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>

web.xml

 c,spring配置:

  最好将ws配置文件单独放置,引入

 <import resource="spring-cxf.xml"/>

  建立spring-cxf.xml   jaxws:server 或者 jaxws:endpoint 两种配置方式都可以

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                        http://www.springframework.org/schema/context
                         http://www.springframework.org/schema/context/spring-context-3.2.xsd
                         http://cxf.apache.org/jaxws
                           http://cxf.apache.org/schemas/jaxws.xsd">

    <!-- <jaxws:server id="helloFacade" address="/soap/hello">
        <jaxws:serviceBean>
            <ref bean="helloFacadeImpl" />
        </jaxws:serviceBean>
    </jaxws:server>
 -->

 <jaxws:endpoint id="helloFacade" implementor="#helloFacadeImpl" address="/soap/hello"/>

</beans>

服务端配置完毕,访问wsdl,可看到如下内容,则表示服务端配置成功

3,客户端访问

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

import com.bresume.core.ws.HelloFacade;

public class Test {
    static final String url = "http://localhost:8081/ws/soap/hello";

    public static void main(String[] args) {
        testJaxWsClient();
        //testDynamicClient();
    }

    public static void testJaxWsClient () {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setAddress(url);
        factory.setServiceClass(HelloFacade.class);

        HelloFacade hellofacade = factory.create(HelloFacade.class);
        String result = hellofacade.sayHello("word");
        System.out.println("testJaxWsClient"+result);
    }

    public static void testDynamicClient() {
        JaxWsDynamicClientFactory  factory = JaxWsDynamicClientFactory .newInstance();
        Client client = factory.createClient("http://localhost:8081/ws/soap/hello?wsdl");

        try {
            Object[] results = client.invoke("sayHello", "world");
            System.out.println("DynamicClientFactory"+results[0]);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Test

-----------未完------

时间: 2024-08-08 13:57:07

webservice总结之cxf的相关文章

WebService概述和CXF入门小程序

一. 什么是WedService? WebService不是框架, 甚至不是一种技术, 而是一种跨平台,跨语言的规范, WebService的出现是为了解决这样的需求场景: 不同平台, 不同语言所编写的应用之间相互调用. 二. WedService有什么用? WebService可以集中解决以下问题: 1. 远程调用 2. 跨平台调用 3. 跨系统调用 那么WebService在企业中有什么用呢? 1. 同一个公司新旧系统的整合. 2. 不同公司的业务整合: 业务的整合就要带来不同公司的系统整合

java的WebService实践(cxf)

Java发布WebService,结合Spring,通过cxf的方式 难点:1.引用什么jar包: 1.创建接口 源码如下: package com.nankang; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHi(@WebParam(name="text") String text); } 2.实现接口 源码如下

WebService流行框架CXF

CXF官方网址:http://cxf.apache.org/ CXF官方网址:官网学习地址:http://cxf.apache.org/docs/index.html 官网下载cxf压缩文件:http://cxf.apache.org/download.html CXF发布WebService有三种方式:main方式,基于和不基于Spring发布到容器 1)main方式 引入jar包,在接口和实现类上使用@WebService即可,发布完成后即可在浏览器中访问url,不需要启动tomcat等服务

webservice入门之CXF教程

1.CXF简介 Apache CXF是一个开源的Service框架,可以用于简化用户的service开发,基于CXF开发的应用可提供SOAP.XML/HTTP.RESTFUL HTTP或CORBA等服务.CXF底层页可以使用不同的传输协议,包括HTTP.JMS或JBI等. 根据CXF官方的说明,CXF包含以下特性: 支持大量的Web Service标准,包括SOAP.WS-I Basic Profile.WSDL.WS-Addressing.WS-Policy.WS-ReliableMessag

WebService学习笔记-CXF添加拦截器

Webservice拦截器:在webservice请求过程中,动态操作请求和响应的数据 分类 按照所处的位置分:服务器端拦截器  客户端拦截器 按照消息的方向分:入拦截器  出拦截器 按照定义者分:系统拦截器 自定义拦截器 在服务器端添加拦截器 package com.demo; //注意引入的类一定要正确 import javax.xml.ws.Endpoint; import org.apache.cxf.interceptor.LoggingInInterceptor; import or

WebService 基础使用&amp;cxf第三方Service使用

1.通过Jax-ws自己发布一个webservice 解析:用webservice发布HelloWorld JAX-WS本质就是通过Socket来实现的.2.WSDL文档描述如何直接变成java代码 eg:提供一个wsdl文档的地址: http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 使用类似于javac的编译工具:wsimport工具来实现.java的生成 cmd命令下指定输出路径: 01.c: ---->回车 02.wsim

webservice 之 使用cxf开发WebService服务器端接口

摘要:webservice 不是一种新技术,它是一种跨平台,跨语言的规范,用于不同平台,不同语言开发应用之间的交互. cxf:是java主流的WebService实现框架. 接下来开始 使用cxf开发WebService服务器端接口 1.新建一个maven项目: 2. 项目用jdk1.7(因为1.7有webservice的默认实现)项目结构如: 3. 首先新建接口,HelloWorld.java: package com.wh.webservice; import javax.jws.WebSe

Webservice介绍,CXF入门程序

一. 什么是WedService? WebService不是框架, 甚至不是一种技术, 而是一种跨平台,跨语言的规范, WebService的出现是为了解决这样的需求场景: 不同平台, 不同语言所编写的应用之间相互调用. 二. WedService有什么用? WebService可以集中解决以下问题: 1. 远程调用 2. 跨平台调用 3. 跨系统调用 那么WebService在企业中有什么用呢? 1. 同一个公司新旧系统的整合. 2. 不同公司的业务整合: 业务的整合就要带来不同公司的系统整合

WebService学习笔记-CXF支持的数据类型

此实例测试CXF支持的数据类型 Student.java实体类 public class Student { private int id; private String name; private float price; //...省略getter setter方法 public Student() {//无参构造方法 super(); } } DataTypeWS.java接口 @WebService public interface DataTypeWS { @WebMethod pub