我无法找到使用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的实现。结果我无法调用我的方法。 :( 我只看到界面。我的pom.xml完全没有提供CXF,并且它没有这个接口的实现吗?我应该使用什么依赖来使用tomEE正常工作CXF?
我在网上找不到任何例子。
答案 0 :(得分:0)
使用cxf,MultivaluedMap
实施是org.apache.cxf.jaxrs.impl.MetadataMap
。
在较新的JAX-RS 2.0兼容版本中,有一个javax.ws.rs.core.MultivaluedHashMap
,但对于JAX-RS 1.x,该接口的实现是特定于实现的。