5、运行测试应用
启动Tomcat
再打开浏览器,输入:http://localhost:8080/ws/services,
服务器返回的结果如下:
WebService已经布署成功了,打开WSDL信息:
http://localhost:8080/ws/services/SayHelloService?wsdl。
其中 sayHelloService是配置文件中 service\name 元素所定义的内容,”wsdl”参数表示查看该 Web 服务的 WSDL(Web服务描述语言)文件。
注意:XML的空格或者有些字符在不同的编码下,会出现乱码,到时XML解析会出错。我这边运行这个servers.xml实例,由于编码不符合UTF-8,配置内容是其他编码形式,导致 XML解析报错:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.codehaus.xfire.spring.ServiceBean' defined in class path resource [META-INF/xfire/services.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: I nvalid property '????' of bean class [org.codehaus.xfire.spring.ServiceBean]: Bean property '????' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter? org.springframework.beans.NotWritablePropertyException: Invalid property '????' of bean class [org.codehaus.xfire.spring.ServiceBean]: Bean property '????' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter? |
6、模拟远程调用
客户端Java代码
package com.test.ws; import java.net.MalformedURLException; 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 org.codehaus.xfire.transport.http.CommonsHttpMessageSender; public class SayHelloClient { public static void main(String args[]) { String serviceURL = "http://localhost:8080/ws/services/SayHelloService"; //创建service对象 Service serviceModel = new ObjectServiceFactory().create(SayHelloService.class); XFireProxyFactory serviceFactory = new XFireProxyFactory(); try{ //获取服务对象 SayHelloService service = (SayHelloService) serviceFactory.create(serviceModel, serviceURL); Client client = Client.getInstance(service); //忽略http连接的超时时间,0为不设置超时时间,》=1为超时毫秒数 client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0"); String msg = service.sayHello("大兵"); System.out.println("服务器对[大兵]的回复:" + msg); msg = service.sayHello(null); System.out.println("服务器对你的回复:" + msg); }catch (MalformedURLException e) { e.printStackTrace(); } } |
客户端运行结果:
服务器对[大兵]的回复:大兵,早上好,还没有去工作吗 ?
服务器对你的回复:你叫什么名字呢?
注意:当客户端设置http连接超时为1毫秒时
Client client = Client.getInstance(service);
client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "1");
会出现如下错误提示:
2013-9-12 11:21:02 org.codehaus.xfire.transport.http.HttpChannel sendViaClient 严重: java.net.SocketTimeoutException: Read timed out Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't send message. org.codehaus.xfire.fault.XFireFault: Couldn't send message. at org.codehaus.xfire.fault.XFireFault.createFault (XFireFault.java:89) at org.codehaus.xfire.handler.OutMessageSender.invoke (OutMessageSender.java:30) at org.codehaus.xfire.handler.HandlerPipeline.invoke (HandlerPipeline.java:13
|
从例子实现的过程中,我们可以发现 XFire 框架最大化的发挥了 POJO 的作用,减少了 SOA 实施时对框架本身的依赖,降低了 SOA 实施的难度,企业实施 SOA 时并不需要增加太多的投入就可以实现目标。
最后附上工程源码
相关推荐
在“Web Service 之 XFire入门”这篇文章中,博主可能还会分享如何通过实例代码来演示这些步骤,例如创建一个名为“helloworld”的简单服务,这个服务可能只有一个返回“Hello, World!”的函数。这样的例子有助于...
XFire 入门 web service.wpsXFire 入门 web service.wpsXFire 入门 web service.wps
【XFire Web Service 入门】 XFire 是一个开源的、高性能的Java Web Service框架,它简化了创建和消费Web服务的过程。XFire在早期是Apache CXF的一部分,后来并入了CXF项目,提供了丰富的功能,包括SOAP、WS-*协议...
在"xfire开发Web Service接口第一个程序"这个文件中,你可能会找到一个简单的示例,展示如何创建一个计算两个数相加的Web Service。这个例子可能包括定义服务接口、实现接口、配置服务以及启动服务的步骤。通过分析...
总之,Xfire是学习Web服务的一个良好起点,尤其是对于初学者来说,结合“Web_Service学习手册(Xfire)”和源码,你可以快速建立起Web服务开发的基础。随着对Xfire的深入理解,你还可以进一步探索更高级的特性,如WS-...
【使用XFire+Spring构建Web Service】是一种高效且灵活的方法,尤其适合于那些希望利用Spring框架的优秀特性来开发Web Service应用的开发者。XFire是一个先进的Web Service框架,与Axis2并列为新一代的选择,因其...
在XFire中创建一个Web Service实例,首先需要定义一个Java接口或类,该接口或类代表要暴露的服务。接着,使用XFire的API或注解来标记这个接口或类,声明它是一个Web服务。然后,通过XFire的ServerFactoryBean创建并...
3. **实现Web服务**:接下来,你需要创建一个类来实现这个接口。在这个实现类中,你会编写实际的业务逻辑。 ```java public class HelloWorldServiceImpl implements HelloWorldService { @Override public ...
本教程将深入探讨如何使用XFire来实现一个基础的Web服务入门实例,并通过源码分析来增进理解。 首先,我们要明白Web服务的基本概念。Web服务基于开放标准,如SOAP(Simple Object Access Protocol)、WSDL(Web ...
1.3.3 CXF:CXF是另一个流行的开源Web Service框架,它结合了Xfire和Apache SOAP项目的优点,支持多种Web Service规范,并且可以与Spring框架无缝集成。 1.3.4 主流 Web Service 的比较 Axis适合初学者,因为它的...
【Web Service + Xfire 入门】 Web Service是一种基于开放标准的、允许应用程序之间进行交互的方式,它使得不同系统能够共享数据和服务。Xfire是一款基于Java的SOAP(Simple Object Access Protocol)框架,它为...
3. **XML(eXtensible Markup Language)**:XML用于构造Web服务的数据交换格式,Xfire Web Service中的数据通常会被编码为XML文档,以便跨平台和语言传递。 4. **API密钥管理**:为了使用Xfire Web Service,...
Web Service框架XFire是新一代的解决方案,旨在简化Web Service应用的开发,与Axis 2一同成为业界关注的焦点。XFire以其简洁的API设计,全面支持Web Service的各种标准协议,如SOAP、WSDL和WS-Security等,极大地...
【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...
《Web Service学习手册(Xfire)》是一本深入探讨Web Service技术的专业资料,配合"xfire_1.147_zol.zip"压缩包中的资源,为读者提供了丰富的学习材料。Web Service是Java领域中的一项重要技术,它允许不同系统间的...
这篇博客“Web Service实践之——开始XFire”可能详细介绍了如何使用XFire来实现Web服务。 在Web服务的世界里,SOAP(Simple Object Access Protocol)是用于交换结构化信息的标准协议,而WSDL(Web Services ...
在Java开发中,XFire是一个流行的框架,用于实现Web服务。本文将详细介绍如何使用XFire在Java中创建和消费Web服务。 首先,理解Web Service的基本概念至关重要。Web Service是一种采用统一的XML(可扩展标记语言)...
【标题】"webService-xfire入门doc" 涉及的是Web服务技术中的XFire框架,这是一款用于构建和消费Web服务的开源Java库。XFire是早期流行的Web服务实现,它允许开发者轻松地将Java对象转换为Web服务,反之亦然。 ...