2014-08-27 1 views
0

나는 잠시 동안이 문제에 대한 해답을 찾고 있었지만 문제는 해결할 수없는 것으로 보인다.Jersery API Body Writer 문제

@POST 
@Path("/save") 

public Response addPushMessage(@FormParam("key") String key, @FormParam("pid") String pid, 
            @FormParam("url") String url, @FormParam("message") String message) throws Throwable { 
    if(key == null || key.isEmpty() || pid == null || pid.isEmpty()) 
      return Response.ok().entity("Error: image key and profile Id are required for push message").build(); 
    try{ 
     Date now = new Date(); 
     BasicDBObject pushMsg = new BasicDBObject("key", key).append("provider", pid).append("createdDate", now); 
     if(url!= null) 
      pushMsg.append("url", url); 
     if(message != null && !message.isEmpty()) 
      pushMsg.append("message", message); 
     pushMsg.append("status", status); 
     String pushMsgId = ServiceUtil.mongo.put(GliifConstant.pushMsgCollectionName, pushMsg); 

     // Notify Event manager to push events if it's PROD 
     // Changed it delibrately to dev for local testing 
     if(ServiceUtil.env.equalsIgnoreCase("dev")){ 
      PushEvent event = new PushEvent(); 
      event.setCreatedDate(now); 
      event.setEventId(pushMsgId); 
      event.setKey(key); 
      event.setUrl(url); 
      event.setStatus(status); 
      WebResource clientResource = client.resource(pushURL); 
      ClientResponse resp = clientResource.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, event); 
     } 
     if(pushMsgId != null) 
      return Response.ok().entity("OK").build(); 
     else 
      return Response.ok().entity("Error: save push notification failed").build(); 
    } 
    catch(Throwable t){ 
     t.printStackTrace(); 
     logger.error(PushService.class.getSimpleName()+" addPushNotification() failed on key: " + key + " \n", t); 
     return Response.status(GliifWebConstants.HTTP_GLIIF_SERVER_ERROR) 
        .header("HTTP_GLIIF_SERVER_ERROR","Gliif RestFull Service addPushNotification() operation caught runtime exception on saving push message on key:"+ key).build(); 
    } 
} 

은 "이벤트를 밀어"클래스의 코드 : :이 지금 실행

public class PushEvent implements Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

private String eventId = ""; 
private String key = null; //must have 
private String url = ""; 
private String message = ""; 
private Date createdDate = null; 
private int status = -1; 


public String getKey() { 
    return key; 
} 
public void setKey(String key) { 
    this.key = key; 
} 
public String getUrl() { 
    return url; 
} 
public void setUrl(String url) { 
    this.url = url; 
} 
public String getMessage() { 
    return message; 
} 
public void setMessage(String message) { 
    this.message = message; 
} 
public String getEventId() { 
    return eventId; 
} 
public void setEventId(String eventId) { 
    this.eventId = eventId; 
} 
public Date getCreatedDate() { 
    return createdDate; 
} 
public void setCreatedDate(Date createdDate) { 
    this.createdDate = createdDate; 
} 
public int getStatus() { 
    return status; 
} 
public void setStatus(int status) { 
    this.status = status; 
} 

} 

내가이 오류 :

나는 서비스가있는 나는이 같은 웹 리소스를 호출해야

Java 유형, 클래스 com.gliif.model.PushEvent 및 MIME 미디어 타입, application/json, 대한 메시지 본문 작가를 찾을 수 없습니다

나는 stackoverflow 포럼을 통해 가면서이 문제를 해결할 수있는 모든 가능한 방법을 시도했지만 아무 소용이 없었다. 누군가이 문제를 해결할 수 있도록 도와 주실 수 있습니까? :(

답변

0

해결책을 찾았습니다. 저지 설정이 잘못 됐어. 모두 저지 클라이언트를 생성하기위한 코드 안에이 줄을 추가했습니다.

DefaultClientConfig defaultClientConfig = new DefaultClientConfig(); 
defaultClientConfig.getClasses().add(JacksonJsonProvider.class); 
Client client = Client.create(defaultClientConfig); 

그리고 오류가 해결되었습니다. 나에게 올바른 방향을 가르쳐 주신 Chasmo에게 감사드립니다 :).

0

.이 이런 식으로 뭔가를 볼 수 있었다 당신은 당신의 PushEvent 클래스의 MessageBodyWriter를 구현하는 프로젝트에 클래스를 정의해야합니다.이 클래스에서

@Provider 
@Produces(MediaType.APPLICATION_JSON) 
public final class PushEventWriter implements MessageBodyWriter<PushEvent> { 

    // implement methods and serialization 

} 

을, 당신이 방법을 구현해야 당신이 JSON으로 PushEvent 변환됩니다. 을 @Provider 주석, 뉴저지이 라이터를 발견하고 내용이 JSON해야하는 경우합니다 (@Produces 주석의 becuase)를 사용합니다. 여기

이 과정을 설명하는 좋은 블로그 게시물입니다 : http://programmingitch.blogspot.de/2014/03/creating-simple-jax-rs-messagebodywriter.html

희망이 도움이됩니다.

+0

클래스를 만들었지 만 여전히 동일한 오류가 발생합니다 –

+0

저지가이 공급자를 찾으면 로그에서 볼 수 있습니까? –

+0

초보자 용 질문이지만이 로그를 어디에서 찾을 수 있습니까? 당신은 서버 로그를 의미합니까 ??? –