2013-07-30 3 views
0

Я пытаюсь использовать @attachment HTTP свойстваNull исключение выбрасывается при выполнении мула, когда DevKit 3.0.0 метод, который принимает @InboundAttachments параметров

У меня есть метод, называемый DevKit Validate в потоке, что называется как так

<http:connector name="httpConnector" doc:name="HTTP\HTTPS"> 
    <service-overrides 
     messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory" /> 
</http:connector> 
<flow name="AttachmentTestFlow1" doc:name="AttachmentTestFlow1">   
    <http:inbound-endpoint connector-ref="httpConnector" doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8100"/> 
    <Foo:validate config-ref="TestMessageSizeHappy" /> 
</flow> 

В DevKit:

@Processor 
public Object validate(@Payload InputStream in 
    ,@InboundAttachments("*") Map<String, DataHandler> inboundAttachments 
    ,@OutboundAttachments Map<String, DataHandler> outboundAttachments 
    ) { 

однако при запуске моего мула приложения это брошено:

ERROR 2013-07-30 09: 06: 39225 [главная] org.mule.module.launcher.application.DefaultMuleApplication: нулевой org.xml.sax.SAXParseException: CVC-комплекс-type.2.4. b: Содержимое Элемент 'xmlthreatprotection: validate' не заполнен. Один из '{"http://www.mulesoft.org/schema/mule/core": аннотации, "http://www.mulesoft.org/schema/mule/xmlthreatprotection": входящие вложения}' ожидается. в org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException (Неизвестный источник)

Мне кажется, что мул ожидает вложения, которые следует поместить в качестве атрибута, как некоторые! Когда я удаляю материал @attachment, я не получаю ошибок во время выполнения.

ответ

1

Вы уверены, что это поддерживается DevKit? Я не могу найти ни одного теста интеграции в исходном коде, который содержит @InboundAttachments и @OutboundAttachments аннотации, а @InboundHeaders и @OutboundHeaders оба теста покрыты.

В качестве альтернативы вы можете получить доступ к MuleEvent и вложения через него:

@Processor 
@Inject 
public Object validate(@Payload InputStream in, MuleEvent muleEvent) { 
+0

Я попробовал это в 3.0.0, и он бросает исключение и 3.2. и 3.4 он даже не компилируется, мы обнаружили, что вы можете получить multipart attachements только для работы с очень специфическими деталями входящей реализации. – Nikos

+0

Поэтому я не думаю, что это поддерживается, возможно, это дополнительная аннотация из моей IDE. Я мог бы играть с теми, кого вы упомянули! – Nikos

+0

Вы предпочитаете @InboundHeaders и OutboundHeaders или MuleEvent? – Nikos