나는 이것에 상당한 금액을 봤는데, JBoss ESB와 Camel에 상당히 편합니다.JBoss ESB - Camel 메일 메시지 첨부 파일 (인바운드)
나는 Camel Mail 엔드 포인트를 정의했으며, 목표는 컨텐츠 기반 라우팅을 위해 첨부 파일을 전자 메일에서 추출하는 것입니다.
JB ESB의 Camel 통합은 약간의 블랙 박스이지만 기본적으로 전자 메일의 본문 내용은 기본 위치의 메시지 본문에 String으로 끝납니다. 그것이 일반 텍스트 또는 HTML 이메일이라면 괜찮습니다. 나는 그걸로 작업 할 수 있습니다. 그러나 첨부 파일이 여러 개있는 경우 Camel은 javax.mail.internet.MimeMultiPart를 제공합니다. (괜찮습니다)
문제는 JBoss ESB가이를 문자열에 "강제 적용"하려고했기 때문입니다. 메시지 본문 기본 위치는 입니다. 즉, 값이있는 문자열 개체 [email protected] javax.mail.internet.MimeMultipart mime = (MimeMultipart) message.getBody(). get();을 통해 본문을 mimeMultipart로 캐스팅하려고하면 예측 가능한 예외 java가 발생합니다. .lang.ClassCastException : java.lang.String을 javax.mail.internet.MimeMultipart로 캐스트 할 수 없음
낙타 메일을 사용하여 JBoss ESB에 인보운드 된 MIME Multipart 메시지의 다른 부분에 어떻게 액세스합니까?
많은 감사, AGM
낙타 메일 2.10
제이 보스 ESB 5.3.1
Windows 환경
동료의 컴퓨터
10:39:54,808 INFO [STDOUT] Body Name is org.jboss.soa.esb.message.defaultEntry
10:39:54,809 INFO [STDOUT] Body Class is class java.lang.String
10:39:54,809 INFO [STDOUT] Attempting to display body contents via toString
10:39:54,809 INFO [STDOUT] body value is [email protected]
10:39:54,809 INFO [STDOUT] [email protected]
10:39:54,809 INFO [STDOUT] class java.lang.String
10:39:54,809 INFO [STDOUT] class java.lang.String
10:39:54,810 ERROR [STDERR] java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.internet.MimeMultipart
10:39:54,810 ERROR [STDERR] at com.XXX.integration.actions.GetAttachment.process(GetAttachment.java:23)
10:39:54,810 ERROR [STDERR] at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:667)
10:39:54,810 ERROR [STDERR] at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:614)
10:39:54,811 ERROR [STDERR] at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:442)
10:39:54,811 ERROR [STDERR] at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:587)
10:39:54,811 ERROR [STDERR] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
10:39:54,811 ERROR [STDERR] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
10:39:54,812 ERROR [STDERR] at java.lang.Thread.run(Thread.java:662)
10:39:54,812 INFO [STDOUT] FULL SPOOL:
항상 자사의 중요한 정보로 사용하는 다양한 프로젝트의 버전을 말한다. –
나는 또한 CamelMessageComposer를 확장하고 속성 "composer-class"를 사용하여 주입하려고 시도했지만 ESB가 주사 시도를 존중하지 않는 것 같습니다 (첫 번째 printlns를 보지 못함) – user2453070