目录:
- 前言概述
- 环境配置
- 构建项目
- 服务端的实现
- 客户端的实现
[一]、前言概述
在2010年3月曾经写过一篇 xfire webservices图文介绍详细步骤,当时只是写了一个XFire中最基本功能的演示,本次打算对XFire一系列应用配合实际的代码演示逐步做下介绍。
[二]、环境配置
- Eclipse 3.7
- Maven 3.0.4
- JDK 1.6.0_18
[三]、构建项目
创建项目 xfire-base-demo:
mvn archetype:create -DgroupId=com.micmiu.xfire.demo -DartifactId=xfire-base-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
转为Eclipse项目并导入到Eclipse 中:
mvn eclipse:eclipse
创建和配置相关的源目录和编译目录,.classpath 文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" output="target/classes" path="src/main/java"/> <classpathentry kind="src" output="target/classes" path="src/main/resources"/> <classpathentry kind="src" output="target/test-classes" path="src/test"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> <classpathentry kind="output" path="target/classes"/> </classpath>
添加相关的依赖,修改POM.xml 添加如下内容:
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.3</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.codehaus.xfire</groupId> <artifactId>xfire-all</artifactId> <version>1.2.6</version> <type>jar</type> <scope>compile</scope> </dependency>
[四]、服务端的实现
创建基础的package:com.micmiu.xfire.demo.base
1.服务端接口:HelloWorldService.java
package com.micmiu.xfire.demo.base; /** * * @blog http://www.micmiu.com * @author Michael */ public interface HelloWorldService { /** * return welcome * @param username * @return */ String sayHello(String username); }
2.服务端接口的实现:HelloWorldServiceImpl.java
package com.micmiu.xfire.demo.base; /** * @blog http://www.micmiu.com * @author Michael */ public class HelloWorldServiceImpl implements HelloWorldService { public String sayHello(String username) { return "Hi," + username + " welcome,see more http://www.micmiu.com"; } }
3.XFire相关配置
在源目录 src/main/java 下创建两级目录:META-INF/xfire ,然后在该目录下创建文件:services.xml ,具体内容如下:
<!-- START SNIPPET: services --> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>HelloWorldService</name> <namespace>http://demo.xfire.micmiu.com/HelloWoldService</namespace> <serviceClass>com.micmiu.xfire.demo.base.HelloWorldService </serviceClass> <implementationClass>com.micmiu.xfire.demo.base.HelloWorldServiceImpl </implementationClass> </service> </beans> <!-- END SNIPPET: services -->
修改文件: src\main\webapp\WEB-INF\web.xml ,内容如下:
<web-app> <display-name>Michael's demo www.micmiu.com</display-name> <servlet> <servlet-name>XFireServlet</servlet-name> <display-name>XFire Servlet</display-name> <servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
4.发布webservice
方法一:运用eclipse 中Jetty插件,直接运行该项目,日志如下:
Running Jetty 6.1.26 2012-07-27 14:33:49.020:INFO::Logging to STDERR via org.mortbay.log.StdErrLog ParentLoaderPriority enabled Context path:/xfire-base-demo ProjectClassLoader: entry=... ...... ProjectClassLoader: entry=... Excluded entry=D:\workspace_dev\xfire-examples\xfire-base-demo\target\test-classes 2012-07-27 14:33:49.112:INFO::jetty-6.1.26 2012-07-27 14:33:49.666:INFO::Started SelectChannelConnector@0.0.0.0:8080
方法二:如果没有安装jetty插件,在POM.xml 文件的节点<build><plugins>…</plugins></build>中增加:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <configuration> <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory> </configuration> </plugin>
再配置goals相关参数:jetty:run 即可运行
不管用哪种方法运行后,浏览器中打开webservice的URL如下:
看到上图中的信息,服务已经发布成功。
ps: 本机已经把 demo.micmiu.com 映射到localhost
[五]、客户端的实现
编写客户端代码:HelloWorldClient.java
package com.micmiu.xfire.demo.base; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; /** * * @blog http://www.micmiu.com * @author Michael */ public class HelloWorldClient { /** * @param args */ public static void main(String[] args) { String url = "http://demo.micmiu.com:8080/xfire-base-demo/services/HelloWorldService"; try { Service serviceModel = new ObjectServiceFactory() .create(HelloWorldService.class); System.out.println(" ----> 初始客户端 <---- "); HelloWorldService client = (HelloWorldService) new XFireProxyFactory() .create(serviceModel, url); System.out.println(client.sayHello("Michael")); System.out.println(" ----> 客户端调用结束 <---- "); } catch (Exception e) { e.printStackTrace(); } } }
运行日志:
----> 初始客户端 <---- Hi,Michael welcome,see more http://www.micmiu.com ----> 客户端调用结束 <----
从上面的日志信息可以看出调用成功了。
附录:完整实现后项目的基本目录结构如下:
D:\workspace_dev\xfire-examples\xfire-base-demo> │ .classpath │ .project │ pom.xml │ ├─.settings │ org.eclipse.jdt.core.prefs │ org.maven.ide.eclipse.prefs │ ├─src │ ├─main │ │ ├─java │ │ │ ├─com │ │ │ │ └─micmiu │ │ │ │ └─xfire │ │ │ │ └─demo │ │ │ │ └─base │ │ │ │ HelloWorldClient.java │ │ │ │ HelloWorldService.java │ │ │ │ HelloWorldServiceImpl.java │ │ │ │ │ │ │ └─META-INF │ │ │ └─xfire │ │ │ services.xml │ │ │ │ │ ├─resources │ │ └─webapp │ │ │ index.jsp │ │ │ │ │ └─WEB-INF │ │ web.xml │ │ │ └─test └─target │ xfire-base-demo.war │ ├─classes │ ├─com │ │ └─micmiu │ │ └─xfire │ │ └─demo │ │ └─base │ │ HelloWorldClient.class │ │ HelloWorldService.class │ │ HelloWorldServiceImpl.class │ │ │ └─META-INF │ └─xfire │ services.xml │ ├─maven-archiver │ pom.properties │ ├─surefire ├─test-classes └─xfire-base-demo
相关推荐
WebService&SOA&ESB入门介绍(手把手xfire开发WS入门实例)
我整理了一下使用XFire1.2.6进行Web Service开发的思路,尝试完成了一个入门实例(完整的MyEclipse项目)。如果你正在学习Web Service或者对这个有兴趣,你可以下载该附件,导入MyEclipse中运行以查看示例效果。希望...
【WebService概念】 Web Service是一种基于开放标准的互操作机制,允许不同应用程序和平台通过互联网进行通信。这种通信是基于XML(eXtensible Markup Language)的,确保数据能够在各种编程语言和操作系统之间无缝...
1. **安装和配置Xfire**:首先,你需要下载Xfire的最新版本并将其添加到你的开发环境中,如Eclipse或IntelliJ IDEA。通常,这涉及添加Xfire的JAR文件到项目的类路径中,或者在IDE的构建路径设置中进行配置。 2. **...
【xfire+Spring+WebService 入门实例详解】 在IT行业中,Web服务是一个重要的通信方式,它允许不同系统间的应用程序进行数据交换。本入门实例将深入探讨如何使用XFire框架与Spring集成来构建和消费Web服务。XFire是...
【XFire开发WebService入门教程】 在本文中,我们将详细介绍如何在MyEclipse 6.5环境下使用XFire框架创建和消费Web服务。XFire是一个快速、轻量级且功能丰富的Java Web服务实现库,它使得在Java应用中构建和使用Web...
在描述中,我们得知这是一个包含服务器端、客户端和完整包的webservice开发实例,而“xfire-all.jar”和“xfire-hello”标签进一步确认了xfire库的使用。 xfire是早期流行的用于构建Web服务的Java库,它提供了简单...
在这个入门例子中,我们将探讨如何使用Java来开发和测试Web服务,主要关注Axis和XFire这两种实现方式。 首先,让我们了解Web服务的基本概念。Web服务是通过使用开放的互联网协议来交换数据的应用程序接口(API)。...
- **WebService教程-xfire学习手册【技术文档】.pdf**:这本书籍详细介绍了XFire的使用方法,包括基本概念、快速入门、高级特性和实例应用,对于理解XFire的运作机制和开发实践非常有帮助。 - **CXF实用手册.pdf**:...
通过这个实例教程,你将能够掌握Web服务的基本开发流程,同时对XFire框架有深入的理解。这将有助于你在实际项目中有效地利用Web服务进行系统集成和跨平台通信。记得实践是检验真理的唯一标准,理论知识结合实际操作...
### 使用XFire与Spring开发WebService的关键知识点 #### 实现功能与特点 - **基于J2EE平台的WebService服务**:这种服务充分利用了Java 2 Platform, Enterprise Edition (J2EE)的强大特性,如事务管理、安全性等,...
标题中的"Spring+Hibernate+Xfire"是一个集成开发的框架组合,主要应用于Java后端开发。这个组合将Spring的依赖注入、...通过学习这个实例,开发者可以深入理解Spring、Hibernate和Xfire的集成使用,提高后端开发能力。
10. **文件夹结构**:压缩包内的文件名提到了熔岩在51CTO技术博客上的文章,这些文章可能详细介绍了如何使用Java 6开发和使用Web Service,包括入门、使用复杂对象、使用集合、发布服务、客户端封装以及对比其他Web...
CXF(CXF = XFire + Codehaus XStream)是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful风格的服务。这个资料包包含了对CXF框架的关键知识点,如WS-DL文件结构、CXF的简单应用示例、...