2013-01-25 3 views
2

MTOM을 사용하여 WS를 통해 WS 클라이언트로 직접 Oracle 데이터베이스 blob 파일에서 직접 스트리밍하려고합니다.MT 다운로드 작업 (MTOM 포함)

나는 내가 여기에 설명되어있는 방법을 찾을 생각 :

http://www.java.net/forum/topic/glassfish/metro-and-jaxb/mtom-best-practices

을하지만 난 실현 InputStreamDataSource 및 javax.mail.util.ByteArrayDataSource에보고했다 후 그들은 하바에게 바이트를 acutal 것을 [] 스트리밍 이데올라가 헛되다는 것을 의미하는 메모리에있는 '문서'의 의미는 내가 피하려고하는 것은 동시에 여러 문서를 동시에 메모리에 저장하는 것입니다.

그래서 WS와 MTOM을 통해 DB에서 WS 클라이언트로 스트리밍 할 수 있습니까?

아이디어가 있으십니까?

감사

크리스

답변

1

나는 실험을 시도하고 마침내 나는 몇 가지 긍정적 인 결과를 가지고 있었다.

위 일이 유효하지만 InputStreamDataSource은 다음과 같이해야한다 DB에서 직접 클라이언트 브라우저로 스트리밍하기 위해서 : 나는 affraid했다 무엇

public class InputStreamDataSource implements DataSource { 
    private InputStream inputStream; 

    public InputStreamDataSource(InputStream inputStream) { 
     this.inputStream = inputStream; 
    } 

    public InputStream getInputStream() throws IOException { 
     return inputStream; 
    } 

    public OutputStream getOutputStream() throws IOException { 
     throw new UnsupportedOperationException("Not implemented"); 
    } 

    public String getContentType() { 
     return "*/*"; 
    } 

    public String getName() { 
     return "InputStreamDataSource"; 
    } 
} 

내가 폐쇄하면 입력이 자신을 스트리밍 할 것입니다 .. . 입력 스트림

내가 ABL했다을 WS 클라이언트는

내가 확인보다 ... 바이너리 컨텐츠를받지 않았고 실제로 DataHandler에 새로운 스레드를 생성하고 종료 e에서 500MB를 DB에서 클라이언트로 빠르게 스트리밍하고 메모리 사용 공간을 절약하십시오!