使用XFire开发Web Service客户端分为如下两大类:
一、服务提供者告诉你interface,你可以使用如下三种方式来开发:
YourService即是服务提供者告诉给你的一个interface(当然,也可以根据WSDL的定义,自己定义一个同样的interface)。
1,简单的方式
Service serviceModel
=
new
ObjectServiceFactory().create(YourService.
class
);
YourService service
=
(YourService)
new
XFireProxyFactory().create(serviceModel,
"
http://your/remote/url
"
);
2,JSR 181注释的方式
Service serviceModel
=
new
AnnotationServiceFactory().create(YourService.
class
);
YourService client
=
(YourService)
new
XFireProxyFactory().create(serviceModel,
"
http://your/remote/url
"
);
3,混合方式
Service serviceModel
=
new
AnnotationServiceFactory(
new
Jsr181WebAnnotations(),
XFireFactory.newInstance().getXFire().getTransportManager(),
new
AegisBindingProvider(
new
JaxbTypeRegistry())).create(YourService.
class
);
二,通过WSDL创建一个动态的客户端,如下:
package
test;
import
java.net.MalformedURLException;
import
java.net.URL;
import
org.codehaus.xfire.client.Client;
public
class
DynamicClientTest
{
public
static
void
main(String[] args)
throws
MalformedURLException,
Exception
{
Client client
=
new
Client(
new
URL(
"
http://localhost:8080/xfiretest/services/TestService?wsdl
"
));
Object[] results
=
client
.invoke(
"
sayHello
"
,
new
Object[]
{
"
Firends
"
}
);
System.out.println(results[
0
]);
}
}
三,使用ANT工具或命令行通过WSDL生成一个客户端:
1,使用ANT生成客户端,ANT脚本如下:
<?
xml version
=
"
1.0
"
?>
<
project name
=
"
wsgen
"
default
=
"
wsgen
"
basedir
=
"
.
"
>
<
path id
=
"
classpathId
"
>
<
fileset dir
=
"
./WebRoot/WEB-INF/lib
"
>
<
include name
=
"
*.jar
"
/>
</
fileset
>
</
path
>
<
taskdef classpathref
=
"
classpathId
"
name
=
"
wsgen
"
classname
=
"
org.codehaus.xfire.gen.WsGenTask
"
>
</
taskdef
>
<
target name
=
"
wsgen
"
description
=
"
generate client
"
>
<
wsgen outputDirectory
=
"
./src/
"
wsdl
=
"
abc.wsdl
"
binding
=
"
xmlbeans
"
package
=
"com.abc.p
"
overwrite
=
"
true
"
/>
</
target
>
</
project
>
请注意,脚本中有一个参数binding,可以指定如下两种不同的方式:
(1)jaxb(Java Architecture for XML Binding,https://jaxb.dev.java.net/
):使用此种方式时,会自动生成更多的Request和Resopnse类。
(2)xmlbeans
调用方式如下:
AbcServiceClient client
=
new
AbcServiceClient();
String url
=
"
http://localhost:8080/xfireTest/services/TestService
"
;
String result
=
client.getAbcPort(url).sayHello(
"
Robin
"
);
2,使用命令生成客户端的命令如下:
gpath
=
xfire
-
all
-
1.2
-
SNAPSHOT.jar:ant
-
1.6
.
5
.jar:jaxb
-
api
-
2
.0EA3.jar:stax
-
api
-
1.0
.
1
.jar:jdom
-
1.0
.jar:jaxb
-
impl
-
2
.0EA3.jar\
:jaxb
-
xjc
-
2.0
-
ea3.jar:wstx
-
asl
-
2.9
.
3
.jar:commons
-
logging
-
1.0
.
4
.jar:activation
-
1.1
.jar:wsdl4j
-
1.5
.
2
.jar:XmlSchema
-
1.0
.
3
.jar:xfire
-
jsr181
-
api
-
1.0
-
M1.jar;
java
-
cp $gpath org.codehaus.xfire.gen.WsGen
-
wsdl http:
//
localhost:8080/xfire/services/Bookservice?wsdl -o . -p pl.tomeks.client -overwrite true
其结果与ANT生成的一样。
四,参考资源:
1,XFire 1.2.6手册(http://xfire.codehaus.org/User%27s+Guide
)
2,http://xfire.codehaus.org/Client+API
3,http://xfire.codehaus.org/Dynamic+Client
转自:http://www.blogjava.net/fastzch/archive/2008/08/28/225439.html
备注:
如果是采取传递对象的形式,则客户端用到的bean不仅内容要和服务器上的相同并且包名都必须是一样的!
常遇到的异常解决办法
1.java.io.FileNotFoundException: class path resource [org/codehaus/xfire/spring/xfire.xml] cannot be opened because it does not exist
没有找到org/codehaus/xfire/spring/xfire.xml。查看你的xfire所用的jar中是否包括了org/codehaus/xfire/spring/xfire.xml文件
2.java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/xfire-servlet.xml]
查看项目的webroot下面是否有/WEB-INF/xfire-servlet.xml文件
3.org.codehaus.xfire.XFireRuntimeException: Cannot create mapping for java.util.List, unspecified component type for return type of method findAllUser in interface com.devil13th.service.IUserService
发布的接口一定是有List或collection等返回类型,而且没有配置这些返回类型的.xml文件或是没有配置泛型的类型。查看【服务接口相关的xml】部分中的教程内容
plus:xfire client http authentic
Client basicAuth = ((XFireProxy) Proxy.getInvocationHandler(service))
.getClient();
basicAuth.setProperty(Channel.USERNAME, "user");
basicAuth.setProperty(Channel.PASSWORD, "pwd");
分享到:
相关推荐
在这个场景下,"Xfire客户端调用webservice jar包"是指Xfire客户端为了实现某些功能,如获取服务器数据或更新信息,需要调用Web服务的接口。这些接口通常以Java的jar包形式提供,方便开发者集成到他们的应用中。 ...
本篇文章将深入探讨如何使用XFire客户端调用Web服务,以及对象传递在Web服务开发中的应用。 首先,理解Web服务的基本概念至关重要。Web服务采用标准的协议如SOAP(Simple Object Access Protocol)进行通信,XML...
在本文中,我们将重点关注CXF客户端调用Web服务的方法,特别是处理Map类型参数的问题。 首先,CXF客户端调用Web服务时,通常会通过服务接口类来实现。在给出的示例中,`TestService`接口定义了几个服务方法,如`...
【CXF、AXIS2、XFire 客户端调用方法详解】 在Web服务开发中,CXF、AXIS2和XFire是常见的Java API,用于构建和消费SOAP(简单对象访问协议)服务。这些框架提供了丰富的功能,使得开发者能够方便地创建和调用Web...
### XFire客户端调用 在生成Java客户端代码后,调用Web服务的流程通常如下: 1. **初始化客户端**:创建服务接口的代理类实例,通常需要提供Web服务的URL。 2. **设置认证和配置**:如果Web服务需要身份验证或...
本文主要分析XFire客户端调用服务的基本流程。 1. 创建服务模型 在调用服务前,首先需要创建服务模型,它包含服务接口、操作信息和Binding信息等关键数据。服务模型由服务工厂ServiceFactory创建,用户需提供服务...
7. **API实现**:如果Xfire客户端提供了API供其他程序调用,那么这些API的实现也会被封装在JAR文件中。 8. **加密和安全**:为了保护用户的隐私和安全,Xfire客户端可能使用了加密算法,这些算法的实现也可能包含在...
在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...
XFire客户端Eclipse插件是开发人员在使用Eclipse IDE时用于集成XFire服务框架的工具。XFire,现在已被Apache CXF所吸收,是一款强大的Java Web服务框架,旨在简化创建和部署Web服务的过程。这款插件使得在Eclipse...
本文将详细介绍Spring XFire客户端的实例应用,以及如何利用它来实现Web服务的调用。 首先,我们需要理解Spring XFire的核心概念。Spring XFire是Spring框架的一个扩展,它整合了XFire(现已被Apache CXF合并)的...
标题"Xfire调用webservice无法接收到参数问题解决"指出的核心问题是:当使用Xfire作为客户端调用Web服务时,服务端无法正确接收到传递的参数。这可能是由于多种原因引起的,如: 1. **XML序列化与反序列化问题**:...
描述中提到的“xfire webserivce客户端 jar”是指XFire客户端部分的jar文件,它主要用于调用和消费Web服务。这些jar文件包含了客户端所需的API,使得开发者可以轻松地创建Web服务客户端,通过SOAP消息与远程服务进行...
标题 "xfire客户端jar" 指的是XFire这一款基于Java开发的多玩家游戏平台的客户端组件。XFire是一款曾经流行的在线游戏社区软件,它允许玩家与朋友一起玩游戏、记录游戏时间、查看成就,以及参与游戏内的社交活动。在...
同时,下载XFire的客户端库,包括必要的jar包,这些在提供的压缩文件"xfire客户端调用及依赖包"中应该能找到。 2. **添加依赖**:将下载的jar包添加到你的项目类路径中,这些jar包通常包括XFire的核心库、XML处理库...
1. **生成客户端代理类**:使用Xfire的工具(如`xfire-gen`)或在线工具,根据服务的WSDL(Web Service Description Language)文件生成客户端代理类。 2. **编写客户端代码**:实例化代理类并调用服务方法。 ```...
在描述中提到的"Demo样板",通常是一个预配置的示例程序,用于演示如何使用xfire客户端来连接和调用Web服务。然而,由于每个Web服务都有其特定的WSDL(Web服务描述语言)文件,定义了服务的接口和操作,因此这个Demo...
6. **调用服务**:客户端可以通过SOAP请求或RESTful方式调用这些服务,实现跨系统的通信。 在实际应用中,`Demo`可能是一个包含整合示例代码的压缩包。解压后,你可以查看`Demo`中的代码文件,了解如何在Spring环境...
4. **创建服务客户端**:在你的应用中,实例化由XFire生成的客户端代理类,然后调用其方法来执行Web服务操作。例如: ```java ServiceClient client = new ServiceClient(); client.setEndpoint(...
"Java 使用 XFire 调用 webService 接口" ...我们了解了服务端和客户端的开发步骤,并了解了使用 XFire 调用 webService 接口的优点。通过本文,我们可以更好地理解和应用 XFire 框架,提高 Web 服务的开发和集成效率。
本教程将深入探讨Xfire如何实现Web服务的创建、部署以及客户端调用,同时提供实例代码供学习参考。 **1. Xfire简介** Xfire是基于Java的Web服务框架,它提供了全面的WS-I(Web Services Interoperability)兼容性...