在OSB(Oracle Service Bus)中,我使用了默认报告操作,但在控制台设置中禁用了默认报告提供程序,因此没有人从默认报告消息队列中读取该消息。
现在我尝试在OEP(Oracle事件处理)中使用JMS适配器从默认报告队列中获取报告消息。
我收到了消息,它是一个对象消息(com.bea.wli.reporting.jmsprovider.runtime.ReportMessage),测试时我只能通过调用objectMessage.getJMSMessageID()来显示messageId,但是当我可以调用时objectMessage.getObject()我在OEP服务器控制台中遇到此异常。 代码抛出异常对我来说是不可见的。这是我得到的例外:
java.lang.RuntimeException: java.lang.ClassCastException: cannot assign instance of org.apache.xmlbeans.impl.values.XmlAnyTypeImpl
to field com.bea.wli.reporting.jmsprovider.runtime.ReportMessage.metadata
of type org.apache.xmlbeans.XmlObject in instance of com.bea.wli.reporting.jmsprovider.runtime.ReportMessage
但是Javadoc显示了这个XmlAnyTypeImpl implements XmlOjbect
package org.apache.xmlbeans.impl.values;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.SchemaType;
public class XmlAnyTypeImpl extends XmlComplexContentImpl implements XmlObject
我对这个例外的理解是:
这是对的吗?
如果我的理解是正确的,那怎么可能发生......互联网上的一些人说可能是这些没有加载到同一个类加载器中,我不太确定有没有办法可以控制它?
我已经尝试将此getObject调用放在一个单独的OSGi包中,看看是否会强制它使用一个类加载器,但我仍然得到相同的异常。