在测试中设置并使用简单的Web服务

时间:2016-06-02 09:59:46

标签: java web-services testing jetty cxf

我有简单的Web服务类,如下所示:

@WebService
public class Param {

    @WebMethod
    public Dictionary getDict(@WebParam(name = "dictname") @XmlElement(required = true) String dictname) {
        //do some stuff
        return dict;
    }
}

我也有wsdl文件。我曾经通过从wsdl文件调用CXF插件生成的类在远程服务器(来自其他服务器)上调用此服务。它看起来如下:

ParamService paramServices = new ParamService(new URL(getParamWsdlUrl()));
Param param = paramServices.getParamPort();
BindingProvider bindingProvider = (BindingProvider) param;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, getParamUrl());
Dictionary dic = param.getDict("test");

但是现在我想在junit中测试这个Web服务。我不想使用远程服务器执行此任务,而是使用jetty或类似的机制在本地设置它。我在这里遇到的问题是,如果我想创建托管我的服务的jetty实例(1)我希望Param类是我自己的实现。不幸的是后来(2)我需要使用CXF生成的Param类。问题是这两个类具有完全相同的名称和包,因此编译器不知道使用哪一个。

Endpoint endpoint = Endpoint.publish(getParamUrl(), Param.class); // 1

ParamService paramServices = new ParamService(new URL(getParamWsdlUrl()));
Param param = paramServices.getParamPort(); // 2
BindingProvider bindingProvider = (BindingProvider) param;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, getParamUrl());

Dictionary dic = param.getDict("test");

所以这是我的问题。我该如何解决这个问题?如何更改此问题以测试此服务?也许有一些更简单的方法来调用jetty设置的web服务?我想省略使用服务作为流和发送xml文件,因为它似乎我真的很复杂和不舒服。

0 个答案:

没有答案