CXF 기반의 webservice를 개발 중입니다. 요청 중 하나는 클라이언트가 메시지의 일부로 선택적 PDF 파일을 업로드 할 수 있어야한다는 것입니다. 이것은 아주 사소한이었다MTOM 첨부 파일이 비어 있는지 확인하는 방법
Endpoint endpoint = Endpoint.publish("/myWs", new WsImpl(getServletContext()));
SOAPBinding binding = (SOAPBinding) endpoint.getBinding();
binding.setMTOMEnabled(true);
그리고 사용 : 나는 또한 MTOM에 대한 지원을 활성화 한
@XmlMimeType("application/octet-stream")
@XmlElement(name = "InvoicePdf", required = false)
private DataHandler invoicePdf = null;
:
내 전송 객체에 getter 및 setter와 함께이 추가 한
DataHandler pdf2 = p_invoice.getInvoicePdf();
//pdf2.getInputStream();
//pdf2.writeTo(outputstream);
모든 것이 효과적입니다. 파일을 받고 처리 할 수 있습니다. 그러나 선택 사항이므로 클라이언트가 파일을 업로드하지 않는 경우가있을 수 있습니다. 문제는 클라이언트가 파일을 보냈지 만 통지하지 못한다는 것입니다.
- pdf2 널 아니다. 입력 스트림의 구문 분석을 건너 뛰고 PDF 서명을 찾고 싶습니다. 입력 스트림을 원하는 출력 스트림 (파일에 쓰기)에 전달하는 것이 훨씬 쉽기 때문에
- DataHandler 또는 DataSource (pdf2.getDataSource()) API에서 파일 존재 여부를 결정하기위한 적절한 메소드 나 필드를 찾지 못했습니다. 나는 빈 DataHandler가 길이가 9 인 DataSource를 포함한다는 것을 디버그에서 확인한다. 불행히도 length 속성은 전혀 액세스 할 수 없습니다.
파일 전송 여부를 결정하는 방법을 알려주세요.