[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xmlblaster] error report in JdbcManagerCommonTable.java when using database for durable subscriptions



Hi,Marcel

	I had found something report error when I using an oracle database for 
	durable subscriptions(every message needs to be stored is about 5000k).the errors are:
	
[2003-8-23 11:19:41 WARN  JdbcManagerCommonTable-XB_-xmlBlaster_192_168_80_11_3412-msgUnitStore_i
nforMessaging_192_168_80_11_3412sblszsnsrxx-addEntry()] Could not insert entry 'org.xmlBlaster.e
ngine.MsgUnitWrapper'-'sblszsnsrxx/2003-08-23 11:19:41.353000001-1060053581353000001': java.sql.SQLE
xception: inserted value too large for column: 18998
[2003-8-23 11:19:42 ERROR org.xmlBlaster.engine.msgstore.cache.PersistenceCachePlugin-msgUnitStor
e:xmlBlaster_192_168_80_11_3412/sblszsnsrxx] put: an error occured when writing to the persisten
t queue, transient entry sblszsnsrxx/2003-08-23 11:19:41.353000001 is not swapped and will be lost.
Is the DB up and running ? xmlBlasterException errorCode=[resource.db.unknown] serverSideExcepti
on=true node=[xmlBlaster_192_168_80_11_3412] location=[JdbcManagerCommonTable.addEntry] message=
[An unknown error with the backend database using JDBC occurred : java.sql.SQLException: inserted 
value too large for column: 18998] state:
 <PersistenceCachePlugin id='msgUnitStore:xmlBlaster_192_168_80_11_3412/sblszsnsrxx' type='CACHE
' version='1.0' numOfEntries='95' numOfBytes='2094335'>
  <MapPlugin id='msgUnitStore:xmlBlaster_192_168_80_11_3412/sblszsnsrxx' type='RAM' version='1.0
' numOfEntries='95' numOfBytes='2094335'>
   <persistence relating='msgUnitStore' maxEntries='1000000' maxEntriesCache='1000000' maxBytes='209
7152'/>
  </MapPlugin>
  <JdbcQueueCommonTablePlugin id='msgUnitStore:xmlBlaster_192_168_80_11_3412/sblszsnsrxx' type='
JDBC' version='1.0' numOfEntries='0' numOfBytes='0'>
   <persistence relating='msgUnitStore' maxEntries='100000000' maxEntriesCache='1000000'/>
   <numOfPersistentsCached>0</numOfPersistentsCached>
   <sizeOfPersistentsCached>0</sizeOfPersistentsCached>
   <numOfEntriesCached>0</numOfEntriesCached>
   <numOfBytesCached>0</numOfBytesCached>
   <numOfEntries>0</numOfEntries>
   <numOfBytes>0</numOfBytes>
   <numOfPersistents>0</numOfPersistents>
   <sizeOfPersistents>0</sizeOfPersistents>
  </JdbcQueueCommonTablePlugin>
 </PersistenceCachePlugin>
	
	i had modified some codes in JdbcManagerCommonTable.java, and the problem is solved.
	the modification are:
	//preStatement.setBytes(5, blob);
	//use this bytes array to construct a InputStream  
      ByteArrayInputStream  blob_stream = new ByteArrayInputStream(blob) ;
    // preStatement.setBytes(5, blob);
      preStatement.setBinaryStream(5, blob_stream,(int)sizeInBytes);
	
	In my option,setBytes mothed is limited by length of blob object, but setBinaryStream not.
	
	Marcel, any problem in my modification?
	
regards

pikaiyuan
pi_kyuan at cvicse.com
2003-08-25