2015-01-06 4 views
1

TomEE 및 CXF를 사용하여 REST 클라이언트를 구현하는 데 올바른 종속성을 찾을 수 없습니다.MultivaluedMap을 사용하여 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에서 완전히 제공되지 않았으며이 인터페이스를 구현하지 않았습니까? tomEE를 사용하여 CXF를 올바르게 사용하려면 어떤 종속성을 사용해야합니까?

내가 웹에 어떤 예를 찾을 수 없습니다. CXF와

답변

0

MultivaluedMap 구현 org.apache.cxf.jaxrs.impl.MetadataMap입니다. 새로운 JAX-RS에서

2.0 호환 버전을, 거기 javax.ws.rs.core.MultivaluedHashMap이지만, JAX-RS 1.x에서와 인터페이스 구현은 구현에 따라 다릅니다.

+0

감사합니다. 당신! 도움이되었습니다. 어쨌든 json에서 T로 마샬링하는 것은 작동하지 않지만 다른 문제입니다. –