구성 요소에서 MuleMessage 인스턴스 콜렉션을 반환하는 데 문제가 있습니다.구성 요소에서 MessageCollection을 반환하는 뮬
뮬 3.3.1.
다음 코드는 작동합니다 (예 : 구성 요소 다음에 로거가있는 foreach 구성 요소가 예상대로 "abc"및 "def"를 덤프합니다).
public Object onCall(MuleEventContext eventContext) throws Exception
{
MuleMessage message = eventContext.getMessage();
MuleMessageCollection collection = new DefaultMessageCollection(message.getMuleContext());
String s1 = "abc";
String s2 = "def";
DefaultMuleMessage m1 = new DefaultMuleMessage(s1, message.getMuleContext());
DefaultMuleMessage m2 = new DefaultMuleMessage(s2, message.getMuleContext());
List<MuleMessage> list = new ArrayList<MuleMessage>();
list.add(m1);
list.add(m2);
collection.addMessages(list);
return collection;
}
경우에는, 그러나, 그래서처럼 문자열 대신에 내 자신의 클래스를 대체 :
public Object onCall(MuleEventContext eventContext) throws Exception
{
MuleMessage message = eventContext.getMessage();
MuleMessageCollection collection = new DefaultMessageCollection(message.getMuleContext());
LicenseRequest s1 = new LicenseRequest();
LicenseRequest s2 = new LicenseRequest();
DefaultMuleMessage m1 = new DefaultMuleMessage(s1, message.getMuleContext());
DefaultMuleMessage m2 = new DefaultMuleMessage(s2, message.getMuleContext());
List<MuleMessage> list = new ArrayList<MuleMessage>();
list.add(m1);
list.add(m2);
collection.addMessages(list);
return collection;
}
내가 얻을 예외 :
org.mule.transport.http.HttpsConnector Work caused exception on 'workCompleted'. Work being executed was: [email protected]7
org.mule.exception.DefaultSystemExceptionStrategy Caught exception in Exception Strategy: Payload was invalidated calling setPayload and the message is not collection anymore.
java.lang.IllegalStateException: Payload was invalidated calling setPayload and the message is not collection anymore.
at org.mule.DefaultMessageCollection.checkValidPayload(DefaultMessageCollection.java:107)
at org.mule.DefaultMessageCollection.newThreadCopy(DefaultMessageCollection.java:312)
at org.mule.DefaultMuleEvent.newThreadCopy(DefaultMuleEvent.java:779)
at org.mule.RequestContext.newEvent(RequestContext.java:140)
at org.mule.RequestContext.setExceptionPayload(RequestContext.java:121)
at org.mule.exception.AbstractSystemExceptionStrategy.handleException(AbstractSystemExceptionStrategy.java:54)
at org.mule.exception.AbstractSystemExceptionStrategy.handleException(AbstractSystemExceptionStrategy.java:77)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:220)
at org.mule.work.WorkerContext.run(WorkerContext.java:311)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Exception in thread "[license-generation].HTTPSConnector.receiver.02" java.lang.IllegalStateException: Payload was invalidated calling setPayload and the message is not collection anymore.
at org.mule.DefaultMessageCollection.checkValidPayload(DefaultMessageCollection.java:107)
at org.mule.DefaultMessageCollection.newThreadCopy(DefaultMessageCollection.java:312)
at org.mule.DefaultMuleEvent.newThreadCopy(DefaultMuleEvent.java:779)
at org.mule.RequestContext.newEvent(RequestContext.java:140)
at org.mule.RequestContext.setExceptionPayload(RequestContext.java:121)
at org.mule.exception.AbstractSystemExceptionStrategy.handleException(AbstractSystemExceptionStrategy.java:54)
at org.mule.exception.AbstractSystemExceptionStrategy.handleException(AbstractSystemExceptionStrategy.java:77)
at org.mule.transport.AbstractConnector.handleWorkException(AbstractConnector.java:2099)
at org.mule.transport.AbstractConnector.workCompleted(AbstractConnector.java:2067)
at org.mule.work.WorkerContext.run(WorkerContext.java:338)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
을이 시점에서에서 내 테스트, LicenseRequest는 toString() 메서드가 "ghi"를 반환하는 빈 클래스입니다.
내가 뭘 잘못하고 있니?
내 목표는 수신 페이로드에서 생성 된 개체 모음을 반환하는 것입니다. 그런 다음 호출 흐름에서 해당 객체를 반복하고 각각에 대해 적절한 조치를 취할 수 있습니다.
EDIT : 내가 변압기에 원하는 부품을 만들 수 있습니다. 부품이 아닙니다. 왜 이런거야?
흐름의 ForEach 요소를이 게시물에 추가하십시오. – user1760178
ForEach 요소는 아무런 차이가 없습니다. 나는 그것을 제거하고 여전히 문제가 있습니다. 그것은 디버깅을위한 일시적인 것입니다. – Tad