项目 >> SOAP >> XFire

使用XFire开发一个简单的web服务

你不必发布到tomcat等容器中就可以进行测试,常用的测试类常继承AbstractXFireSpringTest 抽象类。AbstractXFireSpringTest 类又实现了AbstractXFireTest 类,AbstractXFireTest 类是TestCase的子类,所以你可以使用junit进行单元测试。
 
下面看一个例子:
package com.kuaff.xfire.samples;
 
import java.net.URL;
 
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.service.Endpoint;
import org.codehaus.xfire.spring.AbstractXFireSpringTest;
import org.jdom.Document;
import org.springframework.context.ApplicationContext;
 
publicclass MathClientTest extends AbstractXFireSpringTest
{
    publicvoid testService() throws Exception
    {
        Document wsdl = getWSDLDocument("MathService");
        printNode(wsdl);
    }
   
       
    protected ApplicationContext createContext()
    {
        returnnew ClassPathXmlApplicationContext(new String[] {
           "/org/codehaus/xfire/spring/xfire.xml",
           "/META-INF/xfire/services.xml"
        });
    }
}
 
 
你必须实现createContext方法,这个方法将得到应用上下文。在这个例子中返回了一个ClassPathXmlApplicationContext上下文,它通过类路径的下配置文件生成这个上下文对象。
剩下的工具就是写单元测试的方法,和junit的方式一样。getWSDLDocument方法可以获取指定Web服务的WSDL文档。如果你要测试发布的服务,还可以通过
invokeService方法测试:
Document response = invokeService("MathService", "Add.xml");
 
        addNamespace("k", "http://www.kuaff.com/xfire/mathservice");
        assertValid("//soap:Body/k:addResponse", response);
        printNode(response);
 
通过assertValid方法可以通过Xpath查询的方式验证返回的xml文档是否和预期一致。
更详细的内容可以查看AbstractXFireTest的API。
 
在SpringSide这个开源项目中做了一个Web服务,它的单元测试代码如下:
package org.springside.bookstore.service;
import … …
 
publicclass XFireTest extends AbstractXFireSpringTest {
 
    protectedfinal Log log = LogFactory.getLog(getClass());
 
    publicvoid setUp() throws Exception {
        super.setUp();
    }
 
    publicvoid testGetWsdl() throws Exception {
        Document doc = getWSDLDocument("BookService");
        assertValid("//xsd:complexType[@name=\"Book\"]", doc);
        assertValid("//xsd:complexType[@name=\"Category\"]", doc);
    }
 
    protected ApplicationContext createContext() {
        returnnew ClassPathXmlApplicationContext(new String[]{"classpath*:applicationContext*.xml"});
    }
}
 
(来源www.iocblog.net)



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。

相关项目