2010-12-15 69 views

回答

3

该错误指示我,它实际工作但你并没有给它一个有效负载工厂来创建队列中的对象。你在创建接收器的时候这样做。在这种情况下,我的有效载荷是XMLTYPE,所以我只是用它的有效载荷工厂:你当你想连接队列或取消排队AnyDataType或用户自定义的有效载荷提供一个JDBC类型映射

queueReceiver = ((AQjmsSession) queueSession). 
    createReceiver(queue, XMLType.getORADataFactory()); 
1

在您发布的链接中,最好的地方是在OracleAqDestinationFactoryBean.getObject中。

就我而言,我希望去排队它们的XMLType的甲骨文的LCR,所以我不得不做的的getObject

public Object getObject() throws Exception { 
    QueueConnection queueConnection = connectionFactory.createQueueConnection(); 
    AQjmsSession session = (AQjmsSession) queueConnection.createQueueSession(true, 
      Session.SESSION_TRANSACTED); 
    Map map = session.getTypeMap(); 
    map.put("SYS.XMLTYPE", Class.forName("oracle.xdb.XMLTypeFactory")); 
    return session.getQueue(queueUser, queueName); 
} 

记住,你必须使用OCI JDBC驱动程序AnyDataType载荷下,因为瘦身司机不会这样做。在这里定制的有效载荷

更多信息 http://download.oracle.com/docs/cd/B19306_01/server.102/b14257/aq_stage.htm#sthref2705