2010-12-15 70 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