XFire webservice入门开发实例_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > XFire webservice入门开发实例

XFire webservice入门开发实例

 2013/12/3 18:26:10  yimeng528  程序员俱乐部  我要评论(0)
  • 摘要:目录:前言概述环境配置构建项目服务端的实现客户端的实现[一]、前言概述在2010年3月曾经写过一篇xfirewebservices图文介绍详细步骤,当时只是写了一个XFire中最基本功能的演示,本次打算对XFire一系列应用配合实际的代码演示逐步做下介绍。[二]、环境配置Eclipse3.7Maven3.0.4JDK1.6.0_18[三]、构建项目创建项目xfire-base-demo:mvnarchetype:create-DgroupId=com.micmiu.xfire.demo
  • 标签:Web Service Webservice 开发 实例 开发实例

目录:

  1. 前言概述
  2. 环境配置
  3. 构建项目
  4. 服务端的实现
  5. 客户端的实现

[一]、前言概述

2010年3月曾经写过一篇?xfire webservices图文介绍详细步骤,当时只是写了一个XFire中最基本功能的演示,本次打算对XFire一系列应用配合实际的代码演示逐步做下介绍。

[二]、环境配置

  • Eclipse 3.7
  • Maven 3.0.4
  • JDK 1.6.0_18

[三]、构建项目

创建项目?xfire-base-demo

class="brush: bash; gutter: true; first-line: 1">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
发表评论
用户名: 匿名