2017-03-07 2 views
0

파일에서 읽는 JMSBytesMessage를 보냈습니다. 바이트 배열을 문제없이 파일에 다시 쓸 수 있습니다. 그러나 JMS 대기열로 보낸 후이를 검색하여 파일에 인쇄하려고하면 읽을 수 없습니다.JMS 손상 바이트 메시지

Files.readAllBytes(Paths.get(file.getPath())) 

Files.write(filename, message.getBytes(), StandardOpenOption.CREATE); 

내가 대기열에서 검색 한 후 그 이킬로바이트 큰 만들지 만, 내가 읽을 수있는 일에 그것을하지 않습니다 Base64로,로 인코딩했습니다. BytesMessages에 대해 이해할 수없는 점은 무엇입니까?

답변

3

코드가 이상하거나 불완전합니다.
JMS 메시지에서 바이트를 어떻게 가져 옵니까? message 대기열에서 가져온 JMS BytesMessage입니까? 클래스 BytesMessage에는 getBytes() 메서드가 없습니다.
는 다음을 수행하는 BytesMessage에서 바이트를 얻으려면 :

다음
BytesMessage msg = ... // Obtain the message from the Q 
byte[] data = new byte[(int) msg.getBodyLength()]; 
msg.readBytes(data); 

내가 내 질문을 닫으 투표 한

Files.write(filename, data, StandardOpenOption.CREATE); 
+0

파일에 바이트를 작성하는 당신이 옳은 것 때문에, 그것을 끔찍하게 불분명하다. 메시지는 JMSBytesMessage를 래핑하는 클래스에 속합니다. 그러나 그 대답은 나를 구해주었습니다. 나는 readBytes 라인을 잊었다! 기본적으로 빈 바이트 배열을 읽고 있었는데, 그것은 이상하게도 빈 파일을 생성하지 못했습니다. – Steve