XFire发布Web Services

步骤

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]);

}

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程技术

常用开源框架中设计模式使用分析(全)

说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻...

20920
来自专栏JackieZheng

RabbitMQ入门-Routing直连模式

Hello World模式,告诉我们如何一对一发送和接收消息; Work模式,告诉我们如何多管齐下高效的消费消息; Publish/Subscribe模式,告...

295100
来自专栏李蔚蓬的专栏

跨程序共享数据——Content Provider 之 创建自己的内容提供器

本模块共有四篇文章,参考郭神的《第一行代码》,对Content Provider的学习做一个详细的笔记,大家可以一起交流一下:

13150
来自专栏大内老A

如何让普通变量也支持事务回滚?

有一次和人谈起关于事务的话题,谈到怎样的资源才能事务型资源。除了我们经常使用的数据库、消息队列、事务型文件系统(TxF)以及事务性注册表(TxR)等,还有那些资...

19080
来自专栏开发与安全

muduo网络库学习之Exception类、Thread 类封装中的知识点(重点讲pthread_atfork())

一、Exception类封装 class Exception : public std::exception ?  #include <execinfo.h>...

25600
来自专栏向前进

【笔记】HybridApp中使用Promise化的JS-Bridge

背景: HybridApp,前端采用JS-bridge的方式调用Native的接口,如获取设备信息、拍照、人脸识别等 前端封装了调用库,每次调用Native接口...

35740
来自专栏用户2442861的专栏

muduo 4 网络库学习之Exception类、Thread 类封装中的知识点(重点讲pthread_atfork())

class Exception : public std::exception

19310
来自专栏刘望舒

Android解析ClassLoader(二)Android中的ClassLoader

前言 在上一篇文章我们学习了Java的ClassLoader,很多同学会把Java和Android的ClassLoader搞混,甚至会认为Android中的Cl...

22280
来自专栏公众号_薛勤的博客

深入理解[Master-Worker模式]原理与技术

Master-Worker模式是常用的并行模式之一。它的核心思想是,系统由两类进程协作工作:Master进程和Worker进程。Master进程负责接收和分配任...

26750
来自专栏IT可乐

Spring详解(二)------IOC控制反转

  我相信提到 Spring,很多人会脱口而出IOC(控制反转)、DI(依赖注入)、AOP等等概念,这些概念也是面试官经常问到的知识点。那么这篇博客我们就来详细...

22450

扫码关注云+社区

领取腾讯云代金券