MyEclipse xFire webService学习笔记

XFire概述:

XFire 是 codeHaus 组织提供的一个开源框架,它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。

XFire 目前最新的版本是 1.2.2,目前支持的特性主要包括:

  • 支持将 Web 服务绑定到 POJO、XMLBeans、JAXB1.1、JAXB2.0 和 Castor;
  • 支持基于 HTTP、JMS、XMPP 等多种协议访问 Web 服务;
  • 支持多种 Web 服务业界重要标准如 SOAP、WSDL、Web 服务寻址(WS-Addressing)、Web 服务安全(WS-Security)等;
  • 支持 JSR181,可以通过 JDK5 配置 Web 服务;
  • 高性能的 SOAP 实现;
  • 服务器端、客户端代码辅助生成;
  • 对 Spring、Pico、Plexus 等项目的支持等。

开发环境:

MyEclipse 7.0+JDK1.5+TOMCAT6.0+XFire1.2.6

开发准备:

一、XFire安装

XFire 框架目前的最新版本是 1.2.6,可以访问 xfire.codehaus.org 下载 XFire 框架的安装包,下载时请选择“全部二进制发布包(Binary Distribution in zip package),而不仅仅是“XFire jar 文件(Jar of all XFire modules),即xfire-distribution-1.2.6.zipxfire-all-1.2.6.jar两个包

下载路径:http://xfire.codehaus.org/Download

下载完成后,我们可以将下载的 .zip 文件解压缩到任意的文件夹中(后面的章节中使用 % XFIRE_HOME % 表示 XFire 框架的安装目录),解压缩后形成的文件目录结构如下:

1、api(目录)

api 目录中是 XFire 框架中所有类(class)对应的 API 文档,为开发者使用 XFire 完成应用开发提供帮助。

2、examples(目录)

examples 目录中包含了所有随 XFire 二进制包发布的实例,包括这些实例的源代码和相关 Web 应用配置内容。

3、lib(目录)

lib 目录中包含 XFire 运行所需要的外部支持类包(.jar文件),可以根据不同项目所需的 XFire 特性选择所需要的支持类包。

保守的方法是在 Web 项目中包含所有的外部支持类包(.jar文件)。

4、manual(目录)

manual 目录中包含有 XFire 框架的帮助文档,开发者可以从这些帮助文档中学习更多运用 XFire 框架实现 SOA 的知识和技巧。

5、modules(目录)

modules 目录中包含了 XFire 框架根据不同特性分别编译的二进制包文件。发布基于 XFire 框架的 Web 项目时,

可以选择使用该目录下的所有 .jar 文件,也可以选择 XFire-all-1.2.6.jar 文件。

6、XFire-all-1.2.6.jar

XFire 框架的二进制包文件,包含了全部的模块(modules)。

7、LICENSE.txt

LICENSE.txt 文件中包含了 XFire 框架的授权协议。

8、NOTICE.txt

9、README.txt

这两个文件中包含了 XFire 发布时的一些有用的信息。

二、MyEclipse 7.0、JDK1.5、TOMCAT6.0(weblogic)软件安装(这几个不做详细介绍)

三、准备开发:

1)在MyEclipse中选择File—>New—>Other,选择Web Service Project


 2)Project Name:xFireDemo,Framework:XFire,其他选项默认


3)选择next出现以下对话框,Servlet name、Configuration Folder等需要可以根据需要修改,一般都不用修改。但Configuration Folder建议修改,默认是只有WebServices,这边修改为WebRoot/WEB-INF/WebServices,否则WebServices会与WebRoot同级,部署在weblogic上不好操作。

但修改service.xml只能修改WebServices文件夹下面的的文件。


4)继续点击next出现以下对话框,默认是选中了MyEclipse Libraries和XFire 1.2 Core Libraries。


5)这里不建议选中Myeclipse的选项,全不选,所需的jar从xfire-distribution-1.2.6.zipxfire-all-1.2.6.jar两个包中获取点击Finish完成。

6)项目工程目录结构如下,将所需的jar包添加至WEB-INF/lib目录下。同时在WEB-INF/classes目录下增加了\META-INF\xfire目录

并包含service.xml文件,此文件与WebServices目录下的service.xml同步,两者都不可删除。


7)查看web.xml代码,配置中自动增加了XFireServlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

8)添加xFire相关jar包, 将下载的 XFire-all-1.2.6.jar和解压.zip包lib文件下的所有jar包都拷贝至Web-INF/lib目录下面。

[注] 为了减少拷贝的 jar 文件的数目,开发者可以根据项目的需要选择需要拷贝的 jar 文件,而不是全部拷贝,如何根据需要选择拷贝合适的类包文件请访问 XFire 站点

9)创建 Web 服务接口 ---- HelloWorldService及接口实现类HelloWorldServiceImpl

package com.xFire.service;

public interface HelloWorldService {

	public String getMsg(String msg);
}
package com.xFire.service.impl;

import com.xFire.service.HelloWorldService;

public class HelloWorldServiceImpl implements HelloWorldService {

	public String getMsg(String msg) {
		return "Hello " + msg;
	}

}
10) 创建Web Service ,通过File—>New—>Other—>Web Services—>Web Service


11)选中Next进入如下图所示,Framework:XFire,Strategy:Create web service from java class,其中复选无需选中。


12)点击Next,Web service name:根据需要输入(这边写xFireServer),

interface和impl分别输入com.xFire.service.HelloWorldService和com.xFire.service.impl.HelloWorldServiceImpl并选中Finish


13)查看WebServices/services.xml,多了如下代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
	<service>
		<name>xFireServer</name>
		<namespace>http://service.xFire.com/HelloWorldService</namespace>
		<serviceClass>com.xFire.service.HelloWorldService
		</serviceClass>
		<implementationClass>
			com.xFire.service.impl.HelloWorldServiceImpl
		</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
</beans>
14)创建完成,并将工程部署至tomcat上。

在浏览器中分别输入http://localhost:8080/xFireDemo/services和http://localhost:8080/xFireDemo/services/xFireServer?wsdl

结果如下。



15)编写客户端验证

package com.xFire.service;

import java.net.MalformedURLException;
import java.net.URL;
import org.codehaus.xfire.client.Client;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class XFireTest {

	public static void main(String[] args) {

		// 调用方法一:
		// //这个是在java端调用.net写的远程Web Service 如果调用本机写的只需要把URL中的地址换成本机能访问的地址即可 
		Client client = null;
		try {
			client = new Client(
					new URL(
					"http://localhost:8080/xFireService/services/HelloWorldService?wsdl"));
			Object[] result1 = client.invoke("getMsg", new Object[] { "张三" });
			System.out.println(result1[0]);

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

		// 调用方法二:
		Service s = new ObjectServiceFactory().create(HelloWorldService.class);
		XFireProxyFactory xf = new XFireProxyFactory(XFireFactory.newInstance()
				.getXFire());
		String url = "http://localhost:8080/xFireService/services/HelloWorldService";
		HelloWorldService helloWorldService;
		try {
			helloWorldService = (HelloWorldService) xf.create(s, url);
			System.out.println(helloWorldService.getMsg("李四"));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

	}
}
执行程序测试结果为:

Hello 张三
Hello 李四

PS:另把环境换成WebLogic Server Version: 10.3.0.0 ++JDK1.5+MyEclipse 7.0,按照如上步骤再次操作,将应用部署至weblogic域下可正常启动并调用正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值