博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XFire发布Web Services
阅读量:4180 次
发布时间:2019-05-26

本文共 2461 字,大约阅读时间需要 8 分钟。

步骤

1. 把XFire依赖的jar包放入lib文件夹下。

 

2. 在web.xml中加入如下代码:

 

3. 编写程序代码

首先编写一个功能的接口类。

package com.yc.web.services;
public interface HelloWorldService {
    public void sayHello();
    
    public String sayHello(String name);
    
    public String genUUID();
}

再编写一个功能的接口实现类。

package com.yc.web.services;
import java.util.UUID;
public class HelloWorldServiceImpl implements HelloWorldService {
    public void sayHello() {
        System.out.println("hello world");
        
    }
    public String sayHello(String name) {
        
        return "hello "+name;
    }
    public String genUUID() {
        
        return UUID.randomUUID().toString();
    }
    
}

 

4在src下或者直接在webapp\WEB-INF下创建一个文件夹META-INF,在META-INF下边在创建一个目录xfire,在xfire目录里边创建一个services.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans>

<service xmlns="http://xfire.codehaus.org/config/1.0">

<name>HelloXfire</name>

<namespace>http://www.freshpower.com.cn</namespace>

<serviceClass>

cn.com.freshpower.services.HelloXfire

</serviceClass>

<implementationClass>

cn.com.freshpower.services.HelloXfireImpl

</implementationClass>

</service>

</beans>

 调用XFire发布的Web Service

 
服务以jar包形式发布的时候 直接调用 

当服务端以jar包形式发布,我们就相当于有了客户端的接口类和其自定义对象类。(无接口实现类)。

为了节省时间,我们就直接在1Server下新建一个Client,相当于拥有服务端的客户端。

代码如下:

//这个项目区访问 web service服务器
        
                //创建一个服务的元数据
                Service serviceModel =new ObjectServiceFactory().create(HelloWorldService.class);
                XFire xfire=XFireFactory.newInstance().getXFire();//通过xfire工厂来创建一个xfire的对象
                XFireProxyFactory factory=new XFireProxyFactory(xfire);//创建一个代理工厂
                //定义要访问的服务的地址
                String  serviceUrl="http://localhost/testwebservice/services/helloworld";
                
                HelloWorldService client=null;
                
                client=(HelloWorldService) factory.create(serviceModel, serviceUrl);//xfire 功能是访问 web service 服务器 得到wsdl文件  解析wsdl 知道这个服务方法 返回
                //面向这个接口将实现类创建起来
                
                
                client.sayHello();
                
                String result= client.sayHello("汤高");
                System.out.println(result);
                
                System.out.println(client.genUUID());

    }

XFire 用wsimport 生成后客户端测试类代码

    //创建Service类
        HelloService server=new HelloService();
    
    //获取XxxProType类对象
        HelloServiceProType service =server.getHelloImplPort();
    
    //调用接口中的方法
        String result =service.sayHello();
        System.out.println(result);
   

使用Xfire的Client包 

 

//本地的写法

//String wsdl = "HelloXfire.wsdl"; // 对应的WSDL文件

//Resource resource = new ClassPathResource(wsdl);

//Client client = new Client(resource.getInputStream(), null); //根据WSDL创建客户实例

 

//URL的写法

Client client = new Client(new URL("http://localhost:8080/1Server/service/HelloXfire?wsdl"));

// 调用特定的Web Service方法

Object[] results = client.invoke("sayHello"new Object[]{

"freshpower"});

System.out.println(results[0]);

}

}

转载地址:http://lfhai.baihongyu.com/

你可能感兴趣的文章
《C编译原理》共享库的动态加载和静态加载
查看>>
《Android系统学习》第二章:如何制作OTA U盘升级包
查看>>
《Android系统学习》第五章:编译Android的JDK环境
查看>>
《C++特性》之引用类型
查看>>
fflush(stdin)在gcc编译器中不起作用?
查看>>
《Android系统学习》第八章:Android gtest
查看>>
《Android系统学习》第九章:Android模拟器编译
查看>>
《Android系统学习》第十章:Android消息处理、消息循环和消息队列
查看>>
《Android系统学习》第十一章:Android应用程序Activity组件分析
查看>>
Android4.2 Input子系统
查看>>
《C++面向对象》结构体继承
查看>>
《tiny6410裸机程序》第二章:LED跑马灯RVDS精简main.c说明
查看>>
指向指针的指针
查看>>
《tiny6410裸机程序》第三章:基础汇编test1
查看>>
《tiny6410裸机程序》第四章:汇编与C混合编程
查看>>
《tiny6410裸机程序》第五章:汇编与C混合编程-LED跑马灯最终说明、myled再次精简
查看>>
《tiny6410裸机程序》第六章:myled通过usb下载至nandflash不能运行
查看>>
《tiny6410裸机程序》第七章:S3C6410外部中断简介
查看>>
《tiny6410裸机程序》第八章:S3C6410外部中断控制寄存器
查看>>
《tiny6410裸机程序》第八章:S3C6410总中断控制寄存器
查看>>