2016-09-14 3 views
0

Я звоню службу, в которой я устанавливаю OUTBOUND_MESSAGE_ATTACHMENTS следующим образом:OUTBOUND_MESSAGE_ATTACHMENTS не прибывает к стороне сервера

Map<String, DataHandler> attachmentsMap = (Map<String, DataHandler>) context.get(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS); 
         ByteArrayDataSource bads = new ByteArrayDataSource(file, PDF_MIME_TYPE); 

         DataHandler dh = new DataHandler(bads); 

         AttachmentPart attachmentPart = message.createAttachmentPart(); 

         attachmentPart.setContent(new ByteArrayInputStream(file), PDF_MIME_TYPE); 
         attachmentPart.setContentId(fileId); 

         String contentDisposition = "Content-Disposition: attachment; name=\"" + fileId + "\""; 
         attachmentPart.addMimeHeader("Content-Disposition", contentDisposition); 

         message.addAttachmentPart(attachmentPart); 

         attachmentsMap.put(fileId, dh); 

А на стороне сервера я ожидаю, чтобы найти ту же самую информацию в INBOUND_MESSAGE_ATTACHMENTS но кажется, что ничего не отправлено.

Можете ли вы, пожалуйста, что я делаю неправильно?

+0

Я увидел, что мне нужно как-то установить AttachmentOutInterceptor следующее свойство: props.put (AttachmentOutInterceptor.WRITE_ATTACHMENTS, Boolean.TRUE). И после этого я должен поместить в JaxWsProxyFactoryBean. Но вопрос в том, откуда я должен получить JaxWsProxyFactoryBean? – Aditzu

ответ

0

В конце концов, я нашел решение самостоятельно.

У меня была реализация CXF из Apache, и я должен включить свойство для записи вложения.

JaxWsClientFactoryBean clientFactoryBean = new JaxWsClientFactoryBean(); 
      clientFactoryBean.setServiceClass(DocumentManagementForUnderwritingService.class); 
      clientFactoryBean.setAddress(serviceURL); 

      JaxWsProxyFactoryBean pfb = new JaxWsProxyFactoryBean(clientFactoryBean); 
      DocumentUploadHandler.enableSoapClientOutputAttachments(pfb); 
      DocumentManagementForUnderwritingService proxyy = (DocumentManagementForUnderwritingService) pfb.create(); 

Ниже я установить свойство:

DocumentUploadHandler.enableSoapClientOutputAttachments(pfb); 

И метод из обработчика:

public static void enableSoapClientOutputAttachments(JaxWsProxyFactoryBean pfb){ 
     Map<String,Object> props = new HashMap<String, Object>(); 
     props.put(AttachmentOutInterceptor.WRITE_ATTACHMENTS, Boolean.TRUE); 
     pfb.setProperties(props); 
     pfb.getOutInterceptors().add(new SwAOutInterceptor()); 
     pfb.getOutInterceptors().add(new AttachmentOutInterceptor()); 

    } 

После того как я создал прокси-сервер, я прикован обработчик:

Binding binding = proxy.getBinding(); 
     @SuppressWarnings("rawtypes") 
     final List<Handler> handlerChain = binding.getHandlerChain(); 
     handlerChain.add(documentUploadHandler); 
     binding.setHandlerChain(handlerChain); 

И код от обработчика присутствует в вопросе. Надеюсь, это поможет кому-то еще в будущем.

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

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