【问题标题】:how to implement a REST-client with tomee and CXF using MultivaluedMap?如何使用 MultivaluedMap 实现带有 tomee 和 CXF 的 REST 客户端?
【发布时间】:2015-01-06 14:46:51
【问题描述】:

我无法找到正确的依赖项来使用 tomEE 和 CXF 实现 REST 客户端。

我的模块有这个依赖:

<dependency>
    <groupId>org.apache.openejb</groupId>
    <artifactId>tomee-jaxrs</artifactId>
    <version>1.7.1</version>
    <scope>provided</scope>
</dependency>

初始客户端实现很简单。它必须提供一个 post 方法并提交一个 MultiValueMap。

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;

import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.ext.form.Form;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

    public class RestClient<T> {

        private static final Logger LOG = LoggerFactory.getLogger(RestClient.class);
        private WebClient client;
        private Class<T> type;

        public RestClient(Class<T> aType, String aBaseUrl, String aPath) {

            this.client = WebClient.create(aBaseUrl);
            this.client.path(aPath);
            this.client.accept(MediaType.APPLICATION_JSON);
            this.type = aType;
        }

        public T post(MultivaluedMap<String, String> params) {

            LOG.debug("sending POST request to: " + this.client.getCurrentURI());
            Form theForm = new Form(params);
            T theReponse = (T) this.client.post(theForm, this.type.getClass());
            return theReponse;
        }   
    }

问题是我无法弄清楚 javax.ws.rs.core.MultivaluedMap 的实现。结果我无法调用我的方法。 :( 我只看到界面。 CXF 不是完全由我的 pom.xml 提供的,它没有这个接口的实现吗?我应该使用什么依赖项来启用 CXF 与 tomEE 的正常工作?

我在网上没有找到任何示例。

【问题讨论】:

    标签: cxf jax-rs apache-tomee


    【解决方案1】:

    使用 cxf,MultivaluedMap 实现是 org.apache.cxf.jaxrs.impl.MetadataMap

    在较新的 JAX-RS 2.0 兼容版本中,有一个 javax.ws.rs.core.MultivaluedHashMap,但对于 JAX-RS 1.x,接口的实现是特定于实现的。

    【讨论】:

    • 谢谢!这有帮助。无论如何,现在从 json 到 T 的编组不起作用,但这是一个不同的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 2015-09-06
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2013-09-08
    相关资源
    最近更新 更多