XFire是codeHaus组织提供的一个WebService开源框架,目前已被Apache的CXF所取代,已很少有人用了,这里简单记录下其调用WebService使用方法。官网现已不提供下载,可以到maven仓库下载,下载地址:https://search.maven.org/artifact/org.codehaus.xfire/xfire-distribution/1.2.6/jar。文中demo所使用到的软件版本:Java 1.8.0_191、Xfire 1.2.6。

1、准备

参考Java调用WebService方法总结(1)--准备工作

2、调用

2.1、Client方式

public static void client(String param) {
try {
Client client = new Client(new URL("http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl"));
Object[] results = client.invoke("toTraditionalChinese", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
}

如果服务端是用JAX-WS发布的,需指定RPC方式(接口类上增加@SOAPBinding(style = SOAPBinding.Style.RPC));调用本地的服务:

/**
* JAX-WS发布的服务端需指定RPC方式
* @param param
*/
public static void client2(String param) {
try {
Client client = new Client(new URL("http://10.40.103.48:9006/zsywservice/TestService?wsdl"));
Object[] results = client.invoke("hello", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
}

2.2、ServiceFactory方式

这种方式需要把接口类拷贝到客户端。测试时调用本地服务时参数传不进去,总是null;不知为何;有了解的朋友请指正。

/**
* 调用本地服务时参数传不进去,总是null
* @param param
*/
public static void factory(String param) {
try {
Service serviceModel = new ObjectServiceFactory().create(ITestService.class, null, "http://ws.zsyw.inspur.com/", null);
XFireProxyFactory factory = new XFireProxyFactory();
ITestService testService = (ITestService) factory.create(serviceModel, "http://10.40.103.48:9006/zsywservice/TestService?wsdl");
String result = testService.hello(param);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}

2.3、完整代码

package com.inspur.ws;

import java.net.URL;

import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.inspur.zsyw.ws.ITestService; /**
*
* xfire调用WebService
*
*/
public class Xfire {
public static void client(String param) {
try {
Client client = new Client(new URL("http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl"));
Object[] results = client.invoke("toTraditionalChinese", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* JAX-WS发布的服务端需指定rpc方式
* @param param
*/
public static void client2(String param) {
try {
Client client = new Client(new URL("http://10.40.103.48:9006/zsywservice/TestService?wsdl"));
Object[] results = client.invoke("hello", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 调用本地服务时参数传不进去,总是null
* @param param
*/
public static void factory(String param) {
try {
Service serviceModel = new ObjectServiceFactory().create(ITestService.class, null, "http://ws.zsyw.inspur.com/", null);
XFireProxyFactory factory = new XFireProxyFactory();
ITestService testService = (ITestService) factory.create(serviceModel, "http://10.40.103.48:9006/zsywservice/TestService?wsdl");
String result = testService.hello(param);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
client("大学");
client2("大学");
factory("大学");//hello,null
}
}

Java调用WebService方法总结(6)--XFire调用WebService的更多相关文章

  1. Java调用WebService方法总结(7)--CXF调用WebService

    CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架.文中所使用到的软件版本:Java 1.8.0_1 ...

  2. Java调用WebService方法总结(5)--Axis2调用WebService

    Axis2是新一点Axis,基于新的体系结构进行了全新编写,有更强的灵活性并可扩展到新的体系结构.文中demo所使用到的软件版本:Java 1.8.0_191.Axis2 1.7.9. 1.准备 参考 ...

  3. Java调用WebService方法总结(4)--Axis调用WebService

    Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...

  4. Java调用WebService方法总结(3)--wsimport调用WebService

    wsimport是JDK自带的把WSDL转成Java的工具,可以很方便的生成调用WebService的代码.文中所使用到的软件版本:Java 1.8.0_191. 1.准备 参考Java调用WebSe ...

  5. Java调用WebService方法总结(2)--JAX-WS调用WebService

    用JAX-WS(Java API for XML Web Services)调用WebService不需要引入其他框架,都是JDK自带的:文中所使用到的软件版本:Java 1.8.0_191.Dom4 ...

  6. 既然 start() 方法会调用 run() 方法,为什么我们调用 start() 方法,而不直接调用 run() 方法?

    当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码.如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行

  7. JAVA学习笔记--方法中的参数调用是引用调用or值调用

    文献来源:<JAVA核心技术卷Ⅰ>,第4章第5节 (没有相关书籍的可看传送门) ps:测试demo因为偷懒,用的是String对象 结论:Java使用的是对象的值引用.即将任何对象所在内存 ...

  8. Java调用WebService方法总结(1)--准备工作

    WebService是一种跨编程语言.跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的:本系列文章主要介绍Java调用WebService的各种方法,使 ...

  9. java基础:方法的定义和调用详细介绍,方法同时获取数组最大值和最小值,比较两个数组,数组交换最大最小值,附练习案列

    1. 方法概述 1.1 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可 ...

随机推荐

  1. python使用ldap3进行接口调用

    把自己使用到的ldap调用的代码分享出来,希望大家可以参考 #!/usr/bin/python # -*- coding: utf-8 -*- """ @Time : 2 ...

  2. 软件工程--团队项目选择与NABCD

    目录 Part1:项目说明 项目基础 我们的目标 Part2:项目NABCD Need Approach Benefit Competitors Delivery & Data Deliver ...

  3. Netty回调与Channel执行流程分析

    在上一篇的基础上修改代码 1.TestHttpServerHandle  类 package com.example.firstexample; import io.netty.buffer.Byte ...

  4. IDEA将指定package(指定文件)打成jar包

    写在前面 真的是好记性不如烂笔头 需求 将项目中包名为org的package打成jar包 步骤 1.选择Artifacts>绿色+号>JAR>Empty name自定义, 我这里命名 ...

  5. docker 安装redis cluster集群

    安装Redis镜像 docker pull yyyyttttwwww/redis 创建redis容器 docker run -it -d --name r1 -p 5001:6379 --net=ne ...

  6. [转]c++多线程编程之pthread线程深入理解

    多线程编程之pthread线程深入理解         Pthread是 POSIX threads 的简称,是POSIX的线程标准.           前几篇博客已经能给你初步的多线程概念.在进一 ...

  7. js 经常用于条件判断 大于等于0 的正整数

    /^\d+(?=\.{,}\d+$|$)/.test() // true 转:https://www.jianshu.com/p/feef5e62dd67

  8. Flutter中管理路由栈的方法和应用

    原文地址:https://www.jianshu.com/p/5df089d360e4 本文首先讲的Flutter中的路由,然后主要讲下Flutter中栈管理的几种方法. 了解下Route和Navig ...

  9. springboot:redis反序列化发生类型转换错误

    明明是同一个类,在反序列时报类型转换错误,真实奇怪.经查找资料,说是引入了devtools的缘故. 注释掉以下内容: <dependency> <groupId>org.spr ...

  10. tomcat一闪而过,无法开启

    记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause,然后启动该脚本 正常情况下回像下图显示 如果一闪而过的话,可 ...