2016-06-14 1 views
0

대기열에서 XML 형식의 WMQ 메시지를 읽고 추가 분석을 위해이를 Java JAXB 객체로 변환하려고합니다. 나는 이렇게 썼다.XML 형식의 WMO 메시지를 JAXB 개체로 변환하는 방법은 무엇입니까?

Flow

<wmq:connector name="WMQ" hostName="localhost" port="1414" queueManager="TestMQ" channel="MY_SVRCONN" username="[email protected]" transportType="CLIENT_MQ_TCPIP" validateConnections="true" doc:name="WMQ"/> 
<http:request-config name="HTTP_Request_Configuration" host="localhost" port="8085" doc:name="HTTP Request Configuration"/> 
<mulexml:jaxb-context name="ELIGIBITLITY" packageNames="com.test.jaxb" doc:name="JAXB Context"/> 
<flow name="mulemqclientFlow"> 
    <wmq:inbound-endpoint queue="test.queue.local.1" connector-ref="WMQ" doc:name="WMQ"/> 
    <logger message="#[message.payloadAs(java.lang.Class)]" level="INFO" doc:name="Logger"/> 
    <mulexml:jaxb-xml-to-object-transformer jaxbContext-ref="ELIGIBITLITY" doc:name="XML to JAXB Object" ignoreBadInput="true"/> 
    <logger level="DEBUG" doc:name="Logger"/> 
</flow> 

하지만

Root Exception stack trace: 
javax.jms.JMSException: Source was not of a supported type. Valid types are Message, String, Map, InputStream, List, byte[], Serializable or OutputHandler, but was ELIGIBILITY 
    at org.mule.transport.jms.JmsMessageUtils.toMessage(JmsMessageUtils.java:144) 
    at org.mule.transport.jms.transformers.AbstractJmsTransformer.transformToMessage(AbstractJmsTransformer.java:66) 
    at com.mulesoft.mule.transport.wmq.transformers.ObjectToWMQJmsMessage.transformMessage(ObjectToWMQJmsMessage.java:58) 
    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:141) 
    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:89) 
    at org.mule.DefaultMuleMessage.transformMessage(DefaultMuleMessage.java:1613) 
    at org.mule.DefaultMuleMessage.applyAllTransformers(DefaultMuleMessage.java:1516) 
    at org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java:1490) 
    at org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java:1473) 
    at org.mule.transport.jms.JmsReplyToHandler.processReplyTo(JmsReplyToHandler.java:90) 
    at org.mule.routing.requestreply.AbstractReplyToPropertyRequestReplyReplier.processReplyTo(AbstractReplyToPropertyRequestReplyReplier.java:67) 
    at org.mule.routing.requestreply.AbstractReplyToPropertyRequestReplyReplier.process(AbstractReplyToPropertyRequestReplyReplier.java:43) 
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) 
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 
    at org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:88) 
    at org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:59) 
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 
    at org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:98) 
    at org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:59) 
    at org.mule.interceptor.AbstractEnvelopeInterceptor.processBlocking(AbstractEnvelopeInterceptor.java:58) 
    at org.mule.processor.AbstractRequestResponseMessageProcessor.process(AbstractRequestResponseMessageProcessor.java:47) 
    at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:123) 
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:208) 
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:201) 
    at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:16) 
    at org.mule.execution.CommitTransactionInterceptor.execute(CommitTransactionInterceptor.java:35) 
    at org.mule.execution.CommitTransactionInterceptor.execute(CommitTransactionInterceptor.java:22) 
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:30) 
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:14) 
    at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:67) 
    at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:44) 
    at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:50) 
    at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:40) 
    at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:41) 
    at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:48) 
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:28) 
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:13) 
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:110) 
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:30) 
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:200) 
    at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:49) 
    at org.mule.work.WorkerContext.run(WorkerContext.java:286) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1... 

답변

0

는 JAXB는 XML 스키마에 바인딩 된 자바 클래스로 XML을 변환하는 구현을 제공합니다 오류처럼 얻고있다. 내 담당자는 아직 논평 할 수있는 곳이 아니지만 JAXB 컨텍스트 선언의 패키지에 JAXB Java 바인딩 객체 (클래스)가 포함되어 있는지 묻습니다. JmsMessageUtils 클래스의 toMessage() 메소드는 자바 바인딩 객체가 패키지에 존재하지 않기 때문에 객체를 가져 와서 (JMS 대기열에서 온다고 가정 함) 일련의 instanceof 검사를 수행하고 JAXB 컨텍스트 선언이이 객체에 영향을 미칠 수 있습니다. 지정된.

com.test.jaxb 패키지의 오브젝트 (Java 클래스 이름)에 대해 의견을 말하십시오. JMS 대기열이 올바르게 작동하면 JMS 메시지 (객체)가 제공되고 JmsMessageUtils가 호출되어 XML-JAXB 변환기에서 Mule 메시지를 반환합니다. JAXB 컨텍스트가 작성되지 않았으므로 바인드 된 오브젝트가 오브젝트 인수로 toMessage() 메소드에 제공되지 않았을 것으로 예상됩니다.

https://github.com/codehaus/mule-git/blob/master/tags/mule-3.0.0-M2/transports/jms/src/main/java/org/mule/transport/jms/JmsMessageUtils.java

우리에게 com.test.jaxb 패키지의 클래스 이름을 지정합니다.

관련 문제