MyEclipse java+xfire webservice实现
开发环境
??? Sun Java 5+MyEclipse 5.0.0.?
????概述?
??? 本文介绍了使用MyEclipse Web Service来迅速开发和测试一个HelloWorld Web Service,其中包括:?
??? 1. 介绍了MyEclipse Web Services的基本概念?
??? 2. 创建一个MyEclipse Web Services工程?
??? 3. 创建一个简单的HelloWorld Web Service?
??? 4. 在Web容器中,如Tomcat 5中部署Web Service?
??? 5. 使用Web Services Explorer来测试部署的Web Services?
??? XFire Java SOAP框架概述?
??? MyEclipse Web Services是建立在XFire Java SOAP框架和工具基础上的, XFire是一款开源的Java SOAP框架。它拥有一个轻量级的信息处理模块,通过STAX来与SOAP信息相结合。提供了一个工作在Web Services下的简单API,支持POJO和schema开发. XFire支持 Web Services standards,Spring 整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP, In-memory传输协议.?
????一. 创建Web Service工程?
??? 在MyEclipse 5.0中引入了一个新的工程类型即Web Service工程,该工程扩展了MyEclipse Web Project来支持额外的Web Service配置,开发和部署.本部分将使用Web Services Project wizard来创建和配置一个新的Web Service Projects Web Service Wizard将完成下列的动作:?
??? 创建MyEclipse J2EE Web Project?
??? 在工程中的web.xml文件中配置XFire Servlet?
??? 创建XFire services.xml配置文件?
??? 在工程中的构建路径中添加MyEclipse-XFire类库?
??? 添加一个指定的MyEclipse web project builder到.projects文件,以便部署services.xml文件到它合适的位置.如: <webroot>/WEB-INF/classes/META-INF/xfire/?
??? 运行Web Service Project Wizard?
??? 该向导包括三个页面, Page-1搜集Web Project配置细节, Page-2搜集XFire配置细节, Page-3在新建的构建路径中配置XFire类库?
??? 1. 执行Web Services Project Wizard.?
?????? 1). 选择File>New>Other?
?????? 2). 扩展MyEclipse种类按照J2EE工程的种类?
?????? 3). 选择Web Services Project然后点击Next,如图所示
??? Figure-1: New Project Wizard Launcher?
??? 2. 添加Project Name,点击Next?
??? Figure-2: Page-2, Collecting web configuration details?
??? 3.在向导的Page-2中添加XFire servlet和service.xml文件的配置信息,按照默认的值即可.?
??? Figure-3: XFire servlet and services.xml configuration?
【IT168技术文档】?
??? 4.在向导的Page-3中选择类库添加到工程的构建路径中,其中XFire Core Library是需要的,如果要在工程中开发一个客户端应用, XFire HTTP Client Libraries也是需要的.
??? Figure-4: Selecting XFire libraries to add to new web service project buildpath?
??? 5选择Finish完成Web Service工程的创建过程?
??? Figure-5,显示了新创建的HelloWorld Web Service工程的组织结构,Web Service 工程和一个标准的MyEclipse Web工程很相似. XFire Web Service配置元素如图红色区域显示:?
??? Figure-5: Web services artifacts of a new web service project?
????二. 创建Web Service-Code-first Strategy?
??? 在这部分将用MyEclipse Web Service Wizard并通过使用Code-first Strategy来创建一个HelloWorldService示例.?
??? 1. 执行MyEclipse Web Service Wizard,有两种方法来执行MyEclipse Web Service Wizard?
??? 方法1.从MyEclipse perspective toolbar中来执行向导?
??? 在打开的Web Service Wizard上的workbench上来选择新Web Service按钮?
??? 方法2.从workbench menubar执行向导?
??? 1. 从workbench menubar选择: File>New>Other>MyEclipse>Web Service?
??? Figure-6: Launching Web Service Wizard?
??? 2. 在Page-1选择HelloWorld 工程并选择Create web service from Java bean?
??? 3. 选择Next到Page-2?
??? Figure-7: Page-1 of new web service wizard
【IT168技术文档】?
??? 4. 填写Web Service的名字HelloWorldService?
??? 5. 选择Java Source folder或者选择New按钮来新建一个source folder?
??? 6. 填写Java package或者通过选择Browse按钮来选择一个已经存在的package.也可以选择New按钮来新建一个Java package?
??? 注意:对Service接口和Service执行的类的默认值是基于所填入Web Service名字来产生的.?
??? 7. 选择Next来初始化Web Service的创建过程
??? Figure-8: Page-2 of new web service wizard.?
??? 该向导产生了IHelloWorldService Java接口和HelloWorldServiceImpl Java类.并且在services.xml配置文件中创建了一个<service>实体(如图所示),注意到example(String message)方法在接口类中产生,当Web Service部署后作为一个测试操作.?
??? Figure-9: Newly created HelloWorld interface and implementation class?
????
??? 三. 部署Web Service Project?
??? Web Service可以部署在任何MyEclipse支持的J2EE应用服务器上,该部分将演示如何在Tomcat 5 Web容器上部署HelloWorld工程.?
??? 3.1部署HelloWorld Web Service Project?
??? Figure-10显示了如何部署HelloWorld应用.?
??? 1. 从Server Manager中选择Deployer按钮(step-1)?
??? 2. 在Server Deployments对话框中选择Add to create a new deployment (step-2)?
??? 3. 在New Deployment对话框中选择HelloWorld工程并选择Exploded Archive选项?
??? 4. 在New Deployment对话框选择Finish来将HelloWorld在Tomcat 5默认的位置中打包为WAR?
??? 5. 选择OK完成部署?
??? Figure-10: Three-step deployment process?
??? 新HelloWorld WAR部署将出现在Server Manager视图中Tomcat 5节点下.?
??? Figure-11: Servers Manager View depicting deployed HelloWorld web service project
【IT168技术文档】?
??? 四. 启动Tomcat服务器?
??? 五. 使用Web Service Explorer测试Web Service?
??? MyEclipse提供了一个Web Service Explorer来测试Web Service.?
??? 1. 在MyEclipse perspective中选择toolbar button来执行Web Service Explorer?
??? Figure-15: Web Services Explorer launch button on workbench toolbar?
??? 2. 选择WSDL模式(Figure-16)?
??? 3. 在活动面板中键入HelloWorldService WSDL文档的URLhttp://localhost:8080/HelloWorld/services /HelloWorldService?WSDL,Web Service Explorer将下载自动产生的WSDL文档,该WSDL文档由XFire framework,并产生一系列的操作能够调用service.?
??? 4. 在活动面板中选择example操作并在in0域中键入HelloWorld?
??? 5. 选择Go按钮来调用在HelloWorldService上的example操作,,结果出现在Status面板上?
??? Figure-16: Web Services Explorer testing HelloWorldService?
????六. 创建Java Test客户端?
??? XFire提供了一个动态的代理框架,能够读取WSDL文档和创建潜在的消息服务使Java类来执行在Web Service的行为.该部分将为HelloWorld Web Service写一个Java Web Service客户端?
??? 6.1增加XFire类库配置?
??? 为了使example client能够在HelloWorld工程中运行,需要增加XFire HTTP Client类库到工程的构建路径中.?
??? 1. 在Package Explore视图中右击HelloWorld工程选择Build Path>Add Library?
??? 2. 选择MyEclipse Libraries?
??? 3. 选择XFire HTTP Client Libraries?
??? Figure-17: Choosing the XFire HTTP Client Libraries?
??? 4. 选择Finish?
??? 6.2创建HelloWorldClient类?
??? 执行Java类向导来创建HelloWorldClient类?
??? Figure-18: HelloWorldClient defined in New Java Class Wizard.?
??? 代码如下:?
public static void main(String[] args) { Service srvcModel = new ObjectServiceFactory().create(IHelloWorldService.class); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire()); String helloWorldURL = "http://localhost:8080/HelloWorld/services/HelloWorldService"; try { IHelloWorldService srvc = (IHelloWorldService)factory.create(srvcModel, helloWorldURL); String result = srvc.example("hello world"); System.out.print(result); } catch (MalformedURLException e) { e.printStackTrace(); } }
??? 该段代码定义了创建一个XFire web service proxy的过程,该代理支持POJO IHelloWorldService接口?
??? 右键点击Run As>Java Application或者Debug As>JavaApplication来运行或调试该程序