Apache CXF实现WebService发布和调用

第一种方法:不用导入cxf jars

服务端:

1、 新建Web工程

2、新建接口和实现类、测试类

目录结构图如下:

接口代码:

package com.cxf.spring.service;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface IGreetingService {

    @WebMethod
    public String greeting(String name);

}

实现类代码:

package com.cxf.spring.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public class GreetingServiceImpl implements IGreetingService{

	@WebMethod
	@Override
	public String greeting(@WebParam(name ="name") String name) {

		return "HI:....."+name;
	}

}

测试类代码:

package com.cxf.spring.test;

import javax.xml.ws.Endpoint;

import com.cxf.spring.service.GreetingServiceImpl;

public class TestSpring {

    public static void main(String[] args) {
        pushWS_1();
    }

    public static void pushWS_1() {

        String address = "http://localhost:8100/greeting";

        System.out.println("Server start....");

        Endpoint.publish(address, new GreetingServiceImpl());

        System.out.println("Server ready....");

        try {
            Thread.sleep(3*60*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Server exit");
        System.exit(0);
    }
}

运行测试类:访问:http://localhost:8100/greeting?wsdl

客户端:

1、新建java工程  ,配置CXF环境变量 (下载Apache CXF2.7 )

2、CMD打开命令窗口,运行以下命令,生产客户端代码: wsdl2java.bat  -p com.cxf.spting  -client -encoding utf-8 -noAddressBinding  http://localhost:8100/greeting?wsdl

拷贝到新建java工程的src文件下

运行GreetingServiceImpl_GreetingServiceImplPort_Client.java访问webservice

第二种:

新建web工程 引入cxf依赖包(最小jar)

修改以上测试类代码

package com.cxf.spring.test;

import javax.xml.ws.Endpoint;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.cxf.spring.service.GreetingServiceImpl;
import com.cxf.spring.service.IGreetingService;

public class TestSpring {

    public static void main(String[] args) {
        pushWS_2();
    }

    public static void pushWS_2() {

        JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
        bean.setAddress("http://localhost:8100/greeting");
        bean.setServiceClass(IGreetingService.class);
        bean.setServiceBean(new GreetingServiceImpl());
        bean.create();

        System.out.println("Server ready....");

        try {
            Thread.sleep(3*60*1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Server exit");
        System.exit(0);
    }

运行访问

客户端:按照第一种方法执行。。。

另外两种调用webservice的方法

新建工程 ------测试类   -----  接口:

package com.cxf.test;

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

import com.cxf.test.client.IGreetingService;

public class TestClient_2 {

    public static void main(String[] args) {  

        pull_1();

        pull_2();
    }

    public static void pull_1(){
         JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
            Client client = dcf.createClient("http://localhost:8100/greeting?wsdl");
            try {
                Object[] objs = client.invoke("greeting", "张三");
                System.out.println(objs[0].toString());
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

    public static void pull_2() {

            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            factory.setServiceClass(IGreetingService.class);
            factory.setAddress("http://localhost:8100/greeting?wsdl");
            IGreetingService service = (IGreetingService) factory.create();
            System.out.println(">>>>>>>>Client: " + service.greeting("战士"));

    }    

}
package com.cxf.test.client;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(targetNamespace="http://service.spring.cxf.com/", name = "IGreetingService")
public interface IGreetingService {

    @WebMethod
    public String greeting(String name);

}
时间: 2024-11-04 04:46:58

Apache CXF实现WebService发布和调用的相关文章

Apache CXF实现WebService入门教程(附完整源码)

Apache CXF实现WebService非常简单实用,只需要几步就可以实现一个简单的web service. 首先我们需要新建一个maven项目,在pom中添加依赖和jetty作为测试的web service的web容器. 如下是测试用到的pom文件内容: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu

Apache CXF实现WebService开发(二)

本文我们将承接上文Apache CXF实现WebService开发(一) http://blog.csdn.net/mahoking/article/details/41631993.完成将我们开发的WebService与我们的Web项目部署到同一个容器内例如Tomcat或JBOSS或其他的.本例我们使用的CXF的版本为apache-cxf-2.6.16.所使用是的相关jar包(文件)和文件所在的路径为: /CXFWebServer/WebRoot/WEB-INF/lib/commons-log

Web应用使用Apache CXF 建立 WebService——详细案例(与Spring结合)

转载请注明出处:http://blog.csdn.net/u013474104/article/details/45097957 步骤- - 1.使用Maven依赖jar文件 2.web.xml配置 a.加载cxf-beans.xml配置文件 b.配置CXF Servlect 3.cxf-beans.xml服务配置 a.lics2uldwms.java服务接口类 b.lics2uldwms.java服务接口的实现类 4.访问服务接口 5.Client调用服务接口--TestDemo.java类

Apache CXF实现WebService开发(一)

Apache CXF简介 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS .这些 Services 可以支持多种协议,比如:SOAP.XML/HTTP.RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP.JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝

CXF soup webservice 动态客户端调用工具类

在尝试了多种webservice客户端调用方法之后,还是觉得这种方法靠谱点儿,此方法用到了Apache的CXF框架,工具类源码如下: import java.lang.reflect.Method; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class WsReq{     private String wsUrl;     private Class<?> interfaceClz;          pulbic W

WEBSERVICE发布与调用

一.背景说明 最近在做一个任务,主要目的就是将客户SAP系统里的RFC函数发布成WebService,并在我们的前置机程序里面调用,得到返回的数据并经过解析处理后按照和原有逻辑类似的方式去处理. 二.具体操作 可以知道问题的关键在于WebService的发布与调用.因为之前在EBS系统里面部署配置过Intergrated soa gateway,并发布过Webservice接口.所以对相关概念有一定的了解,这次正好趁这个机会,算是重新加深一波理解了.这里主要记录下,过程中了解到的一些相关的东西以

Apache cxf暴露接口以及客户端调用之WebService初步理解

在我们真实的项目中,经常会调用别人提供给我们的接口,或者在自己的团队中, restful风格的前后端分离也经常会提供一个后端接口暴露出去供app,或者.net/C/C++程序员去调用,此时就需要使用到一个工具或者一套程序来调用暴露的接口. 而今天我要说的就是其中的一个方式,使用apache的cxf调用以及暴露接口,让我们直接开始代码 1.首先我们需要去下载cxf,cxf是apache的一个产品,下载链接附上:http://www.apache.org/dyn/closer.lua/cxf/3.2

CXF结合Spring 发布及调用接口遇到的问题

1. 报错BeanCreationException 异常可查看下面的错误,一般是缺少jar包导致 2. 使用cxf 3.0 以上的版本自动生成客户端代码,可能会报版本错误信息,所以尽量使用java 1.7及以上版本. 官网说明:The current plan is that CXF 3.1 will no longer support Java 6 and will require Java 7 or newer. Users are strongly encouraged to start

WS的发布与调用

https://www.cnblogs.com/domi22/p/8094517.html spring 集成cxf 第二弹(经过测试)以xml格式进行数据交互 https://blog.csdn.net/weixin_37852133/article/details/68124447 JAVA解析xml的四种方式比较 https://www.cnblogs.com/lq147760524/p/6725110.html dom4j解析xml字符串实例 https://www.cnblogs.co