2014-11-21 5 views
0

Я пытаюсь загрузить файл с моего сервера webservice Axis2 с помощью MTOM и ADB. Я могу загрузить файл, если я не могу включить MTOM как на сервере, так и на стороне клиента. Любые предложения или образец кода будет приятно :)Cant скачать файл с webservice с помощью MTOM и Axis2 stub

стороне клиента

ServerWSStub stub = new ServerWSStub(); 
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM,Constants.VALUE_TRUE); 

стороне сервера axis2.xml

<parameter name="enableMTOM">optional</parameter> 

Это мой сервер

public DataHandler download(String konum) throws Exception { 
     System.out.println("The filePath for download: " + konum); 
     FileDataSource dataSource = new FileDataSource(konum); 
     DataHandler datahandler = new DataHandler(dataSource); 

     OMFactory fac = OMAbstractFactory.getOMFactory(); 
     OMNamespace ns = fac.createOMNamespace("http://benim.projem.org/dosya", "dosyam"); 
     OMText textData = fac.createOMText(datahandler, true); 
     OMElement ele = fac.createOMElement("sonuc", ns); 
     ele.addChild(textData); 
     System.out.println(ele); 
     return datahandler; 

Это мой клиент

ServerWSStub stub = new ServerWSStub();   

//stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM,Constants.VALUE_TRUE); 

//when uncommented i get java.lang.NoClassDefFoundError: org/apache/james/mime4j/MimeException 
//while trying to invoke _operationClient.execute(true); in ServerWSStub 
//I guess it is because of wrong unparsing 


Download download = new Download(); 
download.setKonum(konum); 
try { 
    DownloadResponse downloadResponse = stub.download(download); 
    DataHandler dh =(DataHandler) downloadResponse.get_return(); 
    File file = new File("C:/dosya/"+fileNameType); 

    if (!file.getParentFile().exists()) 
     file.getParentFile().mkdirs(); 
    if(!file.exists()){ 
     file.createNewFile(); 
    } 
    FileOutputStream fileOutputStream = new FileOutputStream(file); 

    dh.writeTo(fileOutputStream); 
    fileOutputStream.flush(); 
    fileOutputStream.close(); 
} catch (ServerWSExceptionException e) { 
    e.printStackTrace(); 
} 

Любой

ответ

1

Я, наконец, получил решение, я думаю. Поток закрывается до того, как клиент получает весь Thats файла, почему первым я использовал getOptions(). SetTimeOutInMilliSeconds (10000) метод, но это было и бесполезно, а затем в файле Stub я комментировал

_messageContext.getTransportOut().getSender().cleanup(_messageContext);//look for the method's finally part 

части так, что во время большой файл перевозки поток не был закрыт, и я мог бы загрузить весь файл без каких-либо глупых исключений :)

--MIMEBoundary_e56e8a77b94fbdd7678582aa5ca53f50b1d56c0d828499ea 
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" 
Content-Transfer-Encoding: binary 
Content-ID: <[email protected]> 

<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:downloadResponse xmlns:ns="http://servis.ws.projem.tez.benim"><ns:return><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:[email protected]" /></ns:return></ns:downloadResponse></soapenv:Body></soapenv:Envelope> 
--MIMEBoundary_e56e8a77b94fbdd7678582aa5ca53f50b1d56c0d828499ea 
Content-Type: text/plain 
Content-Transfer-Encoding: binary 
Content-ID: <[email protected]> 
binary code here 
0

Просто добавьте апач-mime4j-ядро-0.7.2.jar в WEB-INF/lib на стороне обслуживания (сервера). Банку можно найти here.

 Смежные вопросы

  • Нет связанных вопросов^_^