2015-01-06 2 views
2

메시징 서비스를 사용 중입니다. ByteBuffer에는 탈 직렬화하기 위해 JAXB를 사용하려는 일부 XML이 포함되어 있습니다.ByteBuffer를 JAXB와 함께 사용

ByteBuffer를 deserialize하기 위해 (JAXB Unmarshaller를 사용하는) 직접적인 방법이 있습니까? 아니면이를 문자열로 변환 한 다음 유일한 방법으로 deserialize할까요?

+1

당신이 찾을 수있는 유용한 다음 http://stackoverflow.com/questions/4332264/바이트 스트림으로 랩핑 (wrapping-a-bytebuffer-with-an-inputstream) –

답변

1

JAXB 입력으로 받아 들일 수 있어야합니다의 InputStream에 ByteBuffer를 포장하는 매우 사소한해야한다 :

public class ByteBufferInputStream extends InputStream { 
    private ByteBuffer byteBuffer; 

    public ByteBufferInputStream(ByteBuffer byteBuffer) { 
     this.byteBuffer = byteBuffer; 
    } 


    @Override 
    public int read() throws IOException { 
     if(byteBuffer.hasRemaining()) { 
      return byteBuffer.get(); 
     } else { 
      return -1; 
     } 
    } 
}