ORA-13019: coordinates out of bounds (9i only, not 8.1.7)
hi there,
In my application, I face an error when using a 9i DB
that I didn't have in 8.1.6 or 8.1.7. The error is the following:
ORA-29902: error in executing ODCIIndexStart() routine
ORA-13213: failed to generate spatial index for window object
ORA-13019: coordinates out of bounds
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_9I", line 232
ORA-06512: at line 1
My feeling is that Spatial generates this error when I post an
sdo_filter query that is near the frontiers of my layer's real
extent (not the extent in USER_SDO_GEOM_METADATA that I have
grown in order to avoid the error, without success).
any idea ?
Thanks in advance,
Ali
As far as I don't have any SRID, I guess Spatial in 9i consider that
I'm in the case of a geodetic layer right ? No. If you have no SRID in user_sdo_geom_metadata and no SDO_SRID
set in the geometry, then Oracle Spatial will assume you are in cartesian space.
Is there any limit like this if I use an SRID ? The only time there is a limit is when you use a geodetic SRID. Then the bounds
of the coordinate system have to be -180, 180 and -90, 90
I guess the only solution I have in the case of geodetic layers
is to change my queries in order to fit -180 180 -90 90, right ? If you are using geodetic layers then the bounds are -180, 180 and -90, 90.
That would be the correct way to use this layer if in fact the data is geodetic.
If it isn't geodetic, then you could adjust the bounds of the coordinate system
in user_sdo_geom_metadata. If you do that and have a quadtree index you
will need to reindex the data.
If you are using 9i, you should seriously consider using r-tree indexes (especially
if you've applied patch set 9.0.1.3). There are very few cases where r-trees aren't
at least as performant as quadtrees, and also use of r-tree indexes gets you use
of additional functionality that isn't available with quadtrees (like geodetic indexing
and use of sdo_batch_size with nearest neighbor queries for incremental nearest
neighbor processing).
Hope this helps,
Dan
thanks a lot in advance,
ALI
Similar Messages
-
ORA-13019: coordinates out of bounds
Hi, I have the follow problem when I try to insert a shape with many coordinates in a shape column of a table:
SQLException: insert strokeORA-29875: failed in the execution of the ODCIINDEXINSERT routine
ORA-13019: coordinates out of bounds
ORA-06512: at "MDSYS.SDO_IDX", line 161
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I", line 332
I haven't the problem when I don't create the index with parameters sdo_numtiles and sdo_level.
Can anyone help me?Oracle recommends that people use R-tree indexes in Oracle versions higher than 9i. In your 10g instance, R-tree indexes should (in almost every situation) have as good or better performance characteristics as the quadtree indexed you are trying to use.
Oracle has gone so far as to remove quadtree indexing information from the standard documentation, because quadtree indexes require in-depth knowledge and understanding in order to tune and use them properly.
In your case, you've set the bounds in your user_sdo_geom_metadata too small - the bounds do not encompass the data in your data set. This is only an issue for quadtree indexes, so you will not get this error when creating an R-tree index.
There are many other potential issues when using quadtree indexes as well. While quadtree indexes work and perform well, R-tree indexes work as well or better, with almost none of the learning curve. If you want to continue using quadtree indexes, i'd suggest you do a detailed reading of the quadtree indexing manual. -
Coordinate out of bound error in getting rgb value of a pixel
hi
in my motion detection algorithm i am using BufferedImage.getRGB(pixel) method to get integer pixel value of the rgb color model. I get the series of images from the web cam and create BufferedImage from it. But there is a error saying that coordinate out of bound exception. So please let me know how to over come this problem asap. i mentioned code segment below.
for (int i = 0; i < objbufimg.getHeight(null) - 1; i++)
for (int j =0; j < objbufimg.getWidth(null) - 1; j++)
int rgb = 0;
try
rgb = objbufimg.getRGB(i, j);
catch(Exception ex)
System.out.println(ex.getMessage());
if (objmodel != null)
current[i][j] = (objmodel.getBlue(rgb) + objmodel.getRed(rgb) +
objmodel.getGreen(rgb)) / 3;
}inputListOfValues(Magnifier LOV where we will be loading thousand of row in search results table).
If you load and scroll over thousands of VO rows, then the VO will load all these rows in memory if the VO has not been configured to do Range Paging, which may cause out of memory. By default, VOs are not configured to do Range Paging. Please, try with VO Range Paging in order to minimize VO's memory footprint. (When a VO is configured to do Range Paging, it will keep in memory only a couple of ranges of rows. The default range size is 25, so it will keep in memory a few tens of rows). UI does not need to be changed and the user will scroll over the rows in an <af:table> in the normal way as he/she used to.
Right now Our JDev is configured with a Heap Space of 512MB.
JDev's heap size does not matter. The heap that you should check (and maybe increase) is the Java heap of the Integrated Weblogic Server, where the application is deployed and run. The heap size of the Integrated WLS is configured in the file <JDev_Home>/jdeveloper/system.xx.xx.xx.xx/DefaultDomain/bin/setDomainEnv.cmd (or .sh).
Please suggest any tools through which we can track the objects causing the Memory leak.
You can try Java Mission Control + Flight Recorder (former Oracle JRockit Mission Control), which is an awesome tool.
Dimitar -
Array out of bounds - in Windows not in Mac
I have an applet on my website which behaves perfectly when I view the page using my home Mac (iBook running Panther).
When I view the same page with a Windows machine at my local library I get an Array Bounds error.
'Advanced options' is disabled (and anyway I am not familiar with Windows) so I can't get any more specific information.
Can anyone suggest what I should do next?
To see the error go to www.hrat.btinternet.co.uk
then click on Interactive EEG Atlas
then click on Currently available EEG records
finally pick any record eg. male age 58
the Mac shows an 8 channel EEG record (wiggly lines)
the Windows shows a grey rectangle and a brief flash of the error message
HRT
PS "Sources" is not quite up to date.Thanks for a really helpful reply!
The relevant code is as follows:-
First in the init() method of the main applet code
i.e. public class dEEGDisplay extends Applet
implements Runnable, ActionListener, ItemListener
we have the following :-
theEvents = new Events();
theMontage = new Montage();
theEvents.initialise();
theMontage.initialise();
I thought I might have a race condition with new threads being started (in some compilers)
for the init() methods of the Events and Montage classes
so I moved the extensive initialising code out of the built in init methods
to a separate initialise() method to make sure it was executed by the main thread.
now in the theMontage.initialise() method we have :-
mNames = new String [N]; // N has been initialised to 0 and incremented in a loop
mArrays = new Object [N];
for (int j=0; j<N; j++)
mNames[j]=montageNames[j];
mArrays[j]=montageArrays[j];
setBackupArrays();
setupCurrentMontage(0);
setupBaselines();
and the error occurs in the first line of setupCurrentMontage(0) :-
void setupCurrentMontage(int indx)
Line 1053 > currentMontageArrays= (Object[]) mArrays[indx];
displayNChans= ((Integer)currentMontageArrays[0]).intValue();
blackLeadsArray= (int[]) currentMontageArrays[1];
whiteLeadsArray= (int[]) currentMontageArrays[2];
tagsArray= (boolean[]) currentMontageArrays[3];
gainsArray= (int[]) currentMontageArrays[4];
TCsArray= (int[]) currentMontageArrays[5];
HFsArray= (int[]) currentMontageArrays[6];
pagePlotter.baselineArray= (int[]) currentMontageArrays[7];
thePagePlotter.displayNChans= displayNChans;
// printMontageDetails();
It seems unlikely that 'index' is the trouble since it is here called as an explicit (0) parameter.
It is possible that N might still be 0 in which case mArrays[0] would be undefined.
This could happen (I think only happen) if the following method did not function
i.e. no word was found and the method exited with eof=true :-
public void findWord(String theWord)
do // skip until the parameter word is found
tok=readToken();
if (tok==theFileTokenizer.TT_EOF)
// System.out.println("eof in findword "+theWord);
eof=true;
return;
} while (((tok!=theFileTokenizer.TT_WORD)
& (theFileTokenizer.sval!=theWord)));
// System.out.println("Find "+theWord+" Tok "+tok+" word="+theFileTokenizer.sval);
Class theFileTokenizer is set up on opening the file
public void openMontagefile()
URL url = null;
try // sets up the Tokenizer
url = new URL (getCodeBase()+"EEGfolder/"+theMontagefolder+"/montages.txt");
URLConnection uc = url.openConnection();
uc.connect();
is = uc.getInputStream();
theFileTokenizer = new StreamTokenizer(is);
theFileTokenizer.eolIsSignificant(true);
theFileTokenizer.slashStarComments(true);
catch (Exception e)
System.out.println("Can't read Montage data " + e);
// System.out.println("Montage file opened");
and my best guess so far is that in some Java VM implementations StreamTokenizer is wrongly
(or differently) implemented.
Does all this make sense?
HRT -
Hi,
I have spent quite sometime testing this but the result I am getting is not right and weird.
I have an array of classes of size 5
Table myTable = new Table[5];
I then use a for loop to initialize myTable class as:
for(int i=1; i<=myTable.length; i++)
myTable[i] = new myTable(i);
Is there anything wrong with that? For some reason I am getting array out of bound exception complaining that 5 is out of bound which is not.
Can anybody tell me what is wrong with this?
This is very simple and I am not even sure why I am getting this out of bound exception.
Thanks.Abu_Muhammad wrote:
Can you try to run this?
int [] intarray = new int[6];
for(int i=1; i<6; i++)
System.out.println("value of i is " + i);
intarray[i] = i;
System.out.println("value of array is " + intarray);
This doesnt give an exception nor does the index start from 0. Then why doesnt the other loop work or why this works?
i < 6 means the loop will continue executing as long as i is less than 6. Once i reaches 5, the loop will break. If you used intarray.length there wouldn't be an ArrayIndexOutOfBounds exception, but nothing would happen to index 0, as you've missed it.
Edited by: xcd on Mar 23, 2010 3:11 PM -
Scrollview only releasing image data when scrolled out of bounds
Hi all,
I cannot understand why my memory isn't released.
On my iPhone program I have a tableview with an image in each cell. When the images are loaded the I can see a thread in Instruments with ObjectAlloc, that calls CALayerPrepareCommit about 10 times -> CGContextDrawImage->some more stuff->ripc_AcquireImage->more stuff ->imgdatalock. I assume this is where the OS actually draws the Image on the screen. But the memory is never released! Only when I scroll the tableview out of bound is the memory released. Visually the tableview is the same and the images are still there after the scrolling. This is a lot of memory and I need to know why it isn't released.
I set the image in the tableview here:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = self.showDisclosureIndicators ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone;
//Clear previous content
NSArray *subviews = cell.contentView.subviews;
for (UIView *subview in subviews)
[subview removeFromSuperview];
//Set Image
[cell.contentView addSubview:[thumbnails objectAtIndex:indexPath.row]];
return cell;
thumbnails is an array of views:
while (thumbnailsRemaining && getThumbnails) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIView *containerView = [thumbnails objectAtIndex:nextThumbnail];
UIImageView *imageView = [[containerView subviews] objectAtIndex:0];
NSInvocationOperation* imageOp = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getImageForImageView:) object:imageView];
[imageQueue addOperation:imageOp];
[imageOp release];
[imageQueue waitUntilAllOperationsAreFinished];
nextThumbnail++;
[pool drain];
and each image is loaded here:
- (void) getImageForImageView:(UIImageView *)imageView {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage *image = [UIImage imageWithData:imageData];
[imageView setImage:image];
thumbnailsRemaining--;
[pool drain];
I also have a scrollview with images and behaving exactly in the same way when scrolling out of bounds.
I am really lost, so any help is appreciated.When a cell is scrolled out of the visible area, UITableView normally adds it to the reusable cell queue, so that's why you aren't seeing that memory released. I think the queued cells might get released under low memory conditions. You might want to try Hardware->Simulate Memory Warning on the Simulator.
In any case, see if this link is helpful: [http://idevkit.com/forums/tutorials-code-samples-sdk/2-dynamic-content-loading -uitableview.html].
\- Ray -
I am using Elements 9 in a quad core computer 8gig memory and everytime I try to use Out of Bounds in the Guided section my whole computer freezes after I click in Add a Frame. Hope someone can help, thank you.
I found the answer on another forum somewhere. I am assuming you have Windows 7, but if you don't try this anyway:
Go to the computers Control Panel, then to Appearance & Personalisation, choosing Change Theme. Then change the theme to 'Windows 7 Basic'. Go back to PSE 9 and try again.
The forum I read suggested that if there's more than one user that as Adminstrator you may also have to temporarily disable other user's access, but as I'm the only user on my computer this hasn't proven necessary.
Of course we shouldn't have to do this but until Adobe get off their backsides and do something about it .......
Hope this helps.
PS. Just found the other forum entry. Follow this link http://forums.adobe.com/thread/846633?tstart=30
Message was edited by: outonalymm -
Java.sql.SQLException: ORA-01002: fetch out of sequence
We are getting 'Fetch out of sequence' error whrn we try to execute a 'for update' query.
We are first inserting values into the DLX_ASSET table and if there is image to be inserted the particualr row is fetched using the query. The insert query inserts values into the database.
'SELECT HIGH_RES_IMAGE FROM DLX_ASSET WHERE ASSET_ID ="+assetId+ " FOR UPDATE'. While executing this query we are getting this exception. This is not happening when we are trying it from our local machine. But its happening everywhere else where its deployed.
We are using Websphere Application Server 6 and Oracle 9i. We have set autommit to false before the method is called and are commiting the transaction only after the whole set of queries are executed.
Please see below the code snippet,
/* UPDATE HIGH RESOLUTION IMAGE INTO DLX_ASSET TABLE */
logger.logInfo("inside IF condition ,,,,,,,,,,,"+assetId);
String query ="SELECT HIGH_RES_IMAGE FROM DLX_ASSET WHERE ASSET_ID ="+assetId+ " FOR UPDATE ";
logger.logInfo("QUERY is...."+query);
logger.logInfo("Connection closed:"+ con.isClosed());
psHighResObj =(OraclePreparedStatement) con.prepareStatement(query);
logger.logInfo("inside updating high res AFTER prepare statement"+psHighResObj);
rsHighRes = (OracleResultSet) psHighResObj.executeQuery(); logger.logInfo("inside updating high res image 1");
while (rsHighRes.next()) {
logger.logInfo("inside while high res image 2");
highResImg =(OrdImage)rsHighRes.getCustomDatum(1,OrdImage.getFactory());
highResImg.loadDataFromInputStream(assetCustomTo.getHighResolutionImageIn());
assetCustomTo.getHighResolutionImageIn().close();
logger.logInfo("before update high res");
UPDATE_QRY = "UPDATE DLX_ASSET SET HIGH_RES_IMAGE = ? WHERE ASSET_ID=" + assetId;
stmt1 =(OraclePreparedStatement) con.prepareCall(UPDATE_QRY);
highResImg.setSource(assetCustomTo.getHighresFileType(),"",assetCustomTo.getSys_file_name1());
highResImg.setContentLength(Integer.parseInt(assetCustomTo.getHighresFileSize()));
highResImg.setProperties();
logger.logInfo(" after update query asset id: " + assetId);
logger.logInfo(" query high res:: " + UPDATE_QRY);
stmt1.setCustomDatum(1, highResImg);
stmt1.execute();
logger.logInfo("after update high res");
//checking if thumbnail is present: if bulk upload thumb nail won't be present
the exception is occuring in the line 'rsHighRes = (OracleResultSet) psHighResObj.executeQuery();'
This is exception trace
java.sql.SQLException: ORA-01002: fetch out of sequence
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java(Inlined Compiled Code))
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java(Compiled Code))
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java(Compiled Code))
at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:1198)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2400)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
at com.deluxe.imax.dataaccess.impl.extended.TelevisionAssetCustomDAOImpl.createWebElectronicTrailersAsset(Unknown Source)
at com.deluxe.imax.business.television.ejb.TelevisionFacadeJBean.createWebElectronicTrailersAsset(Unknown Source)
at com.deluxe.imax.business.television.handler.TelevisionHandler.createWebElectronicTrailersAsset(Unknown Source)
at com.deluxe.imax.business.television.action.WebNewAction.processExecute(Unknown Source)
at com.deluxe.imax.business.framework.BaseAction.execute(Unknown Source)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1284)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1241)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:136)
at com.deluxe.imax.business.framework.security.SecurityFilter.doFilter(Unknown Source)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:142)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:121)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:82)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:671)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3003)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:221)
at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:210)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1958)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:88)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:472)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.ja
Please share your feedback.
Thanks in advance!
Edited by: Sanu Sasidharan on May 11, 2011 4:26 AMHi Peter,
We tried pointing to the same database from local as well as QA. Works from local but not from QA.
assetId is the generated primary key in the same method.
Yes the exception is thrown from execute statement itself. the logger put just after the execute is not coming.
This is the method
public boolean createWebElectronicTrailersAsset(TelevisionResultDTO[] teleResultDTO, OracleConnection con) throws DAOException {
methodName ="createWebElectronicTrailersAsset(TelevisionResultDTO[] teleResultDTO,OracleConnection con) :: ";
//Value to be returned by method
boolean createInd = false;
OraclePreparedStatement psHighResObj = null;
OraclePreparedStatement psThumbnailObj = null;
OracleResultSet rsHighRes = null;
OracleResultSet rsThumbnail = null;
PreparedStatement psmt = null;
OraclePreparedStatement stmt1 = null;
OraclePreparedStatement stmt2 = null;
OrdImage highResImg = null;
OrdImage thumbnailImg = null;
ImaxGroupsTO groupsTO = null;
try {
long tvAssetId = 0;
long assetId = 0;
long cst_dwnld_asset_id = 0;
AssetCustomTO assetCustomTo = null;
AssetCustomDownloadTO assetCustDwnldTO = null;
CustomTVAssetTO tvAssetTo = null;
String DLX_ASSET_QRY = "";
String UPDATE_QRY = "";
String DLX_ASSET_TV_QRY = "";
String DLX_CUSTOM_DOWNLOAD_ASSET = "";
int k = 1;
for (int iCount = 0; iCount < teleResultDTO.length; iCount++) {
tvAssetId = (int) OraclePKGenerator.getInstance().getKey(InternalConstants.TV_ASSET_SEQUENCE);
assetId =(long) OraclePKGenerator.getInstance().getKey(InternalConstants.ASSET_SEQUENCE);
assetCustomTo = teleResultDTO[iCount].getAssetCustomTO();
tvAssetTo = teleResultDTO[iCount].getTv_Asset();
groupsTO= teleResultDTO[iCount].getGroupsTO();
if (assetCustomTo.getHighResolutionImageIn() != null) {
DLX_ASSET_QRY ="INSERT INTO DLX_ASSET("
+ "ASSET_ID,"
+ "CREATED_BY,"
+ "CREATED_DATE,"
+ "REVISED_BY,"
+ "REVISED_DATE,"
+ "FILE_NAME,"
+ "FILE_SIZE,"
+ "FILE_TYPE,"
+ "SYS_FILE_NAME,"
+ "HIGH_RES_IMAGE,"
+ "THUMBNAIL_IMAGE,"
+ "ASSET_STATUS_ID,"
+ "DMX_PART1_REF,"
+ "DMX_PRODUCT_ID_REF,"
+ "DMX_PRODUCT_DESC_REF,"
+ "ASSET_AVAIL_1_IND,"
+ "DMX_PART_2,"
+ "DMX_PRODUCT_2,"
+ "DMX_PRODUCT_DESC_2,"
+ "ASSET_AVAIL_2_IND,"
+ "EFFECTIVE_DATE,"
+ "EXPIRATION_DATE,"
+ "FILE_NAME1,"
+ "SYS_FILE_NAME1,"
+ "ASSET_TYPE_ID,"
+ "MATERIALS_CATEGORY,"
+ "PART_1_NOTES,"
+ "PART_2_NOTES,"
+ "PHY_ORDER_STATUS)"
+ "VALUES (?,?,SYSDATE,?,SYSDATE,?,?,?,?,ORDSYS.ORDImage.init(),"
+" ORDSYS.ORDImage.init(),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
}else if(){
// condition if images are not uploaded
psmt = con.prepareStatement(DLX_ASSET_QRY);
k=1;
psmt.setLong(k++, assetId);
psmt.setString(k++, assetCustomTo.getCreated_by());
psmt.setString(k++, assetCustomTo.getRevised_by());
if(assetCustomTo.getAssetTextIn()!=null ){
psmt.setString(k++, assetCustomTo.getFile_name());
psmt.setString(k++, assetCustomTo.getFile_size());
psmt.setString(k++, assetCustomTo.getFile_type());
psmt.setString(k++, assetCustomTo.getSys_file_name());
/* UPLOAD PREVIEW VIDEO FILE INTO FILE SYSTEM .....*/
Util.upLoadFile(assetCustomTo.getAssetTextIn(),assetCustomTo.getSys_file_name());
}else if(assetCustomTo.getAssetTextIn()==null && assetCustomTo.getSys_file_name() != null
&& assetCustomTo.getSys_file_name().trim().length() != 0){
psmt.setString(k++, assetCustomTo.getFile_name());
psmt.setString(k++, assetCustomTo.getFile_size());
psmt.setString(k++, assetCustomTo.getFile_type());
psmt.setString(k++, assetCustomTo.getSys_file_name());
} else{
psmt.setNull(k++,Types.VARCHAR);
psmt.setNull(k++,Types.VARCHAR);
psmt.setNull(k++,Types.VARCHAR);
psmt.setNull(k++,Types.VARCHAR);
psmt.setLong(k++, assetCustomTo.getAsset_status_id());
if(assetCustomTo.getDmx_product_desc_1()!=null && assetCustomTo.getDmx_product_desc_1().trim().length()!=0){
psmt.setLong(k++, assetCustomTo.getDmx_part_1());
psmt.setLong(k++, assetCustomTo.getDmx_productId_1());
psmt.setString(k++, assetCustomTo.getDmx_product_desc_1());
psmt.setString(k++, assetCustomTo.getAsset_order_status_1());
}else{
psmt.setNull(k++,Types.INTEGER);
psmt.setNull(k++,Types.INTEGER);
psmt.setNull(k++,Types.VARCHAR);
psmt.setNull(k++,Types.VARCHAR);
if(assetCustomTo.getDmx_product_desc_2()!=null && assetCustomTo.getDmx_product_desc_2().trim().length()!=0){
psmt.setLong(k++, assetCustomTo.getDmx_part_2());
psmt.setLong(k++, assetCustomTo.getDmx_productId_2());
psmt.setString(k++, assetCustomTo.getDmx_product_desc_2());
psmt.setString(k++, assetCustomTo.getAsset_order_status_2());
}else{
psmt.setNull(k++,Types.INTEGER);
psmt.setNull(k++,Types.INTEGER);
psmt.setNull(k++,Types.VARCHAR);
psmt.setNull(k++,Types.VARCHAR);
if(assetCustomTo.getEffectiveDate()!=null){
psmt.setTimestamp(k++, assetCustomTo.getEffectiveDate());
}else{
psmt.setNull(k++,Types.TIMESTAMP);
if(assetCustomTo.getExpirationDate()!=null){
psmt.setTimestamp(k++, assetCustomTo.getExpirationDate());
}else{
psmt.setNull(k++,Types.TIMESTAMP);
psmt.setString(k++, assetCustomTo.getHighresFileName());
if(assetCustomTo.getSys_file_name1()!=null && assetCustomTo.getSys_file_name1().trim().length()!=0){
psmt.setString(k++, assetCustomTo.getSys_file_name1());
}else{
psmt.setNull(k++, Types.VARCHAR);
psmt.setLong(k++, assetCustomTo.getAsset_type_id());
psmt.setLong(k++, assetCustomTo.getMaterialCategory());
if(assetCustomTo.getPart_notes_1()!=null && assetCustomTo.getPart_notes_1().trim().length()!=0){
psmt.setString(k++, assetCustomTo.getPart_notes_1());
}else{
psmt.setNull(k++,Types.VARCHAR);
if(assetCustomTo.getPart_notes_2()!=null && assetCustomTo.getPart_notes_2().trim().length()!=0){
psmt.setString(k++, assetCustomTo.getPart_notes_2());
}else{
psmt.setNull(k++,Types.VARCHAR);
if(assetCustomTo.getDmx_product_desc_1()!=null){
psmt.setLong(k++,assetCustomTo.getPhy_asset_status());
}else{
psmt.setNull(k++,Types.INTEGER);
psmt.execute();
if (assetCustomTo.getHighResolutionImageIn() != null) {
/* UPDATE HIGH RESOLUTION IMAGE INTO DLX_ASSET TABLE */
logger.logInfo("inside IF condition ,,,,,,,,,,,"+assetId);
String query ="SELECT HIGH_RES_IMAGE FROM DLX_ASSET WHERE ASSET_ID ="+assetId+ " FOR UPDATE ";
psHighResObj =(OraclePreparedStatement) con.prepareStatement(query);
logger.logInfo("inside updating high res AFTER prepare statement"+psHighResObj);
rsHighRes = (OracleResultSet) psHighResObj.executeQuery();
while (rsHighRes.next()) {
highResImg =(OrdImage)rsHighRes.getCustomDatum(1,OrdImage.getFactory());
highResImg.loadDataFromInputStream(assetCustomTo.getHighResolutionImageIn());
assetCustomTo.getHighResolutionImageIn().close();
UPDATE_QRY = "UPDATE DLX_ASSET SET HIGH_RES_IMAGE = ? WHERE ASSET_ID=" + assetId;
stmt1 =(OraclePreparedStatement) con.prepareCall(UPDATE_QRY);
highResImg.setSource(assetCustomTo.getHighresFileType(),"",assetCustomTo.getSys_file_name1());
highResImg.setContentLength(Integer.parseInt(assetCustomTo.getHighresFileSize()));
highResImg.setProperties();
stmt1.setCustomDatum(1, highResImg);
stmt1.execute();
The connection in the method is passed from the service layer.
Thanks
Edited by: Sanu Sasidharan on May 12, 2011 2:30 AM -
ORA-01002/ Fetch out of sequence on lazy loading
Hello,
We are facing an oracle SQLException (ORA-01002: fetch out of sequence)
while we are trying to get a field (retrieved via lazy loading) from an
object that was retrieved using a kodoquery.
This error only occurs during performance testing under a heavy load.
(100 concurrent users). For each thread we get a new persistencemanager
from the factory. And we have put the multithreaded option to true.
Can anyone help us with this problem?
Thanks in advance,
Kind Regards,
Niels Soeffers
Caused by: java.sql.SQLException: ORA-01002: fetch out of sequence
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at
oracle.jdbc.driver.T4CPreparedStatement.fetch(T4CPreparedStatement.java:1027)
at
oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:291)
at
oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:213)
at
com.solarmetric.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:97)
at kodo.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:151)
at kodo.jdbc.sql.AbstractResult.next(AbstractResult.java:123)
at kodo.jdbc.sql.Select$SelectResult.next(Select.java:2236)
at
kodo.jdbc.meta.AbstractCollectionFieldMapping.load(AbstractCollectionFieldMapping.java:592)
at kodo.jdbc.runtime.JDBCStoreManager.load(JDBCStoreManager.java:521)
at
kodo.runtime.DelegatingStoreManager.load(DelegatingStoreManager.java:133)
at kodo.runtime.ROPStoreManager.load(ROPStoreManager.java:79)
at kodo.runtime.StateManagerImpl.loadFields(StateManagerImpl.java:3166)
at kodo.runtime.StateManagerImpl.loadField(StateManagerImpl.java:3265)
at kodo.runtime.StateManagerImpl.isLoaded(StateManagerImpl.java:1386)
at
com.ardatis.ventouris.domain.OntvangstReeks.jdoGetontvangstTransacties(OntvangstReeks.java)
at
com.ardatis.ventouris.domain.OntvangstReeks.getStatus(OntvangstReeks.java:72)
at
com.ardatis.ventouris.service.financien.transfer.FinancienTOAssembler.getOntvangstReeksBaseTO(FinancienTOAssembler.java:71)
at
com.ardatis.ventouris.service.financien.transfer.FinancienTOAssembler.getOntvangstReeksBaseTOs(FinancienTOAssembler.java:84)
at
com.ardatis.ventouris.service.financien.FinancienManagerImpl.getOntvangstReeksBaseTOs(FinancienManagerImpl.java:241)
at
com.ardatis.ventouris.service.financien.ejb.FinancienManagerBean.getOntvangstReeksBaseTOs(FinancienManagerBean.java:62)
at sun.reflect.GeneratedMethodAccessor181.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.SecurityUtil$2.run(SecurityUtil.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at
com.sun.enterprise.security.application.EJBSecurityManager.doAsPrivileged(EJBSecurityManager.java:950)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:158)
at
com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:128)
at $Proxy31.getOntvangstReeksBaseTOs(Unknown Source)
at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:123)We are using Oracle 10g and have tried multiple dirvers. (classes12.jar,
ojdbc14.jar)
Our kodo.properties ( actually the ra.xml we supply with the kodo.rar )
<connector>
<display-name>KodoJDO</display-name>
<description>Resource Adapter for integration of the Kodo Java Data
Objects (JDO) implementation with J2EE 1.3 compliant managed
environments</description>
<vendor-name>Solarmetric, Inc.</vendor-name>
<spec-version>1.0</spec-version>
<eis-type>jdo</eis-type>
<version>1.0</version>
<license>
<description>
See http://www.solarmetric.com for terms and license conditions.
</description>
<license-required>true</license-required>
</license>
<resourceadapter>
<managedconnectionfactory-class>kodo.jdbc.ee.JDBCManagedConnectionFactory</managedconnectionfactory-class>
<connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
<connectionfactory-impl-class>kodo.jdbc.ee.JDBCConnectionFactory</connectionfactory-impl-class>
<connection-interface>javax.resource.cci.Connection</connection-interface>
<connection-impl-class>kodo.runtime.PersistenceManagerImpl</connection-impl-class>
<transaction-support>XATransaction</transaction-support>
<config-property>
<description>A comma-separated list of query aggregate listeners
to add to the default list of extensions. Each listener must implement
the kodo.jdbc.query.JDBCAggregateListener interface.</description>
<config-property-name>AggregateListeners</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The kodo.jdbc.meta.ClassIndicator to use by default
for new mappings. The class indicator is responsible for tracking the
concrete class or subclass implemented by the object stored in each row of
a table.</description>
<config-property-name>ClassIndicator</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>in-class-name</config-property-value>
</config-property>
<config-property>
<description>The kodo.util.ClassResolver implementation that
should be used for JDO class resolution. Defaults to a JDO spec-compliant
resolver.</description>
<config-property-name>ClassResolver</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>spec</config-property-value>
</config-property>
<config-property>
<description>Details about various compatibiity levels for the
current environment.</description>
<config-property-name>Compatibility</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>The class name of either the JDBC java.sql.Driver, or
an instance of a javax.sql.DataSource to use to connect to the non-XA data
source.</description>
<config-property-name>Connection2DriverName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The password for the user specified in
Connection2UserName</description>
<config-property-name>Connection2Password</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of properties to be passed to
the non-XA JDBC Driver when obtaining a Connection. Properties are of the
form "key=value". If the given JDBC Driver class is a DataSource, these
properties will be used to configure the bean properties of the
DataSource. </description>
<config-property-name>Connection2Properties</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The URL for the non-XA data source.</description>
<config-property-name>Connection2URL</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The username for the connection listed in
Connection2URL.</description>
<config-property-name>Connection2UserName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of
com.solarmetric.jdbc.ConnectionDecorator implementations to install on all
connection pools.</description>
<config-property-name>ConnectionDecorators</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The class name of either the JDBC java.sql.Driver, or
an instance of a javax.sql.DataSource to use to connect to the data
source.</description>
<config-property-name>ConnectionDriverName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The JNDI name of the connection factory to use for
finding non-XA connections. If specified, this is the connection that
will be used for obtaining sequence numbers.</description>
<config-property-name>ConnectionFactory2Name</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>jdbc/VentourisNonXA</config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of properties used to
configure the javax.sql.DataSource used as the non-XA ConnectionFactory.
Each property should be of the form "key=value", where "key" is the name
of some bean-like property of the data source.</description>
<config-property-name>ConnectionFactory2Properties</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The JNDI name of the connection factory to use for
obtaining connections.</description>
<config-property-name>ConnectionFactoryName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>jdbc/Ventouris</config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of properties used to
configure the javax.sql.DataSource used as the ConnectionFactory. Each
property should be of the form "key=value", where "key" is the name of
some bean-like property of the data source.</description>
<config-property-name>ConnectionFactoryProperties</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The password for the user specified in
ConnectionUserName</description>
<config-property-name>ConnectionPassword</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of properties to be passed to
the JDBC Driver when obtaining a Connection. Properties are of the form
"key=value". If the given JDBC Driver class is a DataSource, these
properties will be used to configure the bean properties of the
DataSource. </description>
<config-property-name>ConnectionProperties</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>This property dictates when PersistenceManagers will
retain and release data store connections. Available options are
"on-demand" for retaining a connection only during pessimistic
transactions and data store operations, "transaction" for retaining a
connection for the life of each transaction, or "persistence-manager" to
indicate that a persistence manager should retain and reuse a single
connection for its entire lifespan.</description>
<config-property-name>ConnectionRetainMode</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>transaction</config-property-value>
</config-property>
<config-property>
<description>The URL for the data source.</description>
<config-property-name>ConnectionURL</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The username for the connection listed in
ConnectionURL.</description>
<config-property-name>ConnectionUserName</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>Set to true if you''d like Kodo to copy all object
ids before returning them to your code. If you do not plan on modifying
identity objects, you can set this property to false to avoid the copying
overhead.</description>
<config-property-name>CopyObjectIds</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<config-property>
<description>Plugin used to cache data loaded from the data store.
Must implement kodo.datacache.DataCache.</description>
<config-property-name>DataCache</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The number of milliseconds that data in the data
cache is valid for. A value of 0 or less means that by default, cached
data does not time out.</description>
<config-property-name>DataCacheTimeout</config-property-name>
<config-property-type>java.lang.Integer</config-property-type>
<config-property-value>-1</config-property-value>
</config-property>
<config-property>
<description>The type of data source in use. Available options
are "local" for a standard data source under Kodo''s control, or
"enlisted" for a data source managed by an application server and
automatically enlisted in global transactions.</description>
<config-property-name>DataSourceMode</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>enlisted</config-property-value>
</config-property>
<config-property>
<description>The kodo.jdbc.sql.DBDictionary to use for database
interaction. This is auto-detected based on the setting of
javax.jdo.option.ConnectionURL, so you need only set this to override the
default with your own custom dictionary or if you are using an
unrecognized driver.</description>
<config-property-name>DBDictionary</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>Whether to dynamically create custom structs to hold
and transfer persistent state in the Kodo data cache and remote
persistence manager frameworks. Dynamic structs can reduce data cache
memory consumption, reduce the amount of data serialized back and forth
under remote persistence managers, and improve the overall performance of
these systems. However, they increase application warm-up time while the
custom classes are generated and loaded into the JVM. Set to true to
enable dynamic data structs.</description>
<config-property-name>DynamicDataStructs</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<config-property>
<description>Specifies the default eager fetch mode to use.
Either "none" to never eagerly-load relations, "join" for selecting 1-1
relations along with the target object using inner or outer joins, or
"parallel" for selecting 1-1 relations via joins, and collections
(including to-many relations) along with the target object using separate
select statements executed in parallel.</description>
<config-property-name>EagerFetchMode</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>parallel</config-property-value>
</config-property>
<config-property>
<description>The number of rows that will be pre-fetched when an
element in a Query result is accessed. Use -1 to pre-fetch all
results.</description>
<config-property-name>FetchBatchSize</config-property-name>
<config-property-type>java.lang.Integer</config-property-type>
<config-property-value>-1</config-property-value>
</config-property>
<config-property>
<description>The name of the JDBC fetch direction to use.
Standard values are "forward", "reverse", and "unknown".</description>
<config-property-name>FetchDirection</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>forward</config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of fetch group names that
PersistenceManagers will load by default when loading data from the data
store.</description>
<config-property-name>FetchGroups</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of query filter listeners to
add to the default list of extensions. Each listener must implement the
kodo.jdbc.query.JDBCFilterListener interface.</description>
<config-property-name>FilterListeners</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>Whether or not Kodo should automatically flush
modifications to the data store before executing queries.</description>
<config-property-name>FlushBeforeQueries</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>with-connection</config-property-value>
</config-property>
<config-property>
<description>If true, Kodo will order all SQL inserts, updates,
and deletes to meet your schema''s foreign key constraints. Defaults to
false.</description>
<config-property-name>ForeignKeyConstraints</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<config-property>
<description>If false, then the JDO implementation must consider
modifications, deletions, and additions in the PersistenceManager
transaction cache when executing a query inside a transaction. Else, the
implementation is free to ignore the cache and execute the query directly
against the data store.</description>
<config-property-name>IgnoreCache</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>Plugin used to manage inverse relations during flush.
Set to true to use the default inverse manager. Custom inverse managers
must extend kodo.runtime.InverseManager.</description>
<config-property-name>InverseManager</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of
com.solarmetric.jdbc.JDBCListener implementations to install on all
connection pools.</description>
<config-property-name>JDBCListeners</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>The license key provided to you by SolarMetric. Keys
are available at www.solarmetric.com</description>
<config-property-name>LicenseKey</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value><KEY-REMOVED></config-property-value>
</config-property>
<config-property>
<description>Plugin used to handle acquiring locks on persistent
instances. Must implement kodo.runtime.LockManager.</description>
<config-property-name>LockManager</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>pessimistic</config-property-value>
</config-property>
<config-property>
<description>The number of milliseconds to wait for an object lock
before throwing an exception, or -1 for no limit.</description>
<config-property-name>LockTimeout</config-property-name>
<config-property-type>java.lang.Integer</config-property-type>
<config-property-value>-1</config-property-value>
</config-property>
<config-property>
<description>LogFactory and configuration for Kodo''s logging
needs.</description>
<config-property-name>Log</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>kodo(DefaultLevel=WARN, Tool=WARN,
Runtime=WARN, SQL=WARN)</config-property-value>
</config-property>
<config-property>
<description>The mode to use for calculating the size of large
result sets. Legal values are "unknown", "last", and "query".</description>
<config-property-name>LRSSize</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>query</config-property-value>
</config-property>
<config-property>
<description>Plugin used to integrate with an external transaction
manager. Must implement kodo.runtime.ManagedRuntime.</description>
<config-property-name>ManagedRuntime</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>auto</config-property-value>
</config-property>
<config-property>
<description>Plugin used to configure management and profiling
capabilities.</description>
<config-property-name>ManagementConfiguration</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>none</config-property-value>
</config-property>
<config-property>
<description>The kodo.jdbc.meta.MappingFactory that will provide
the object-relational mapping information needed to map each persistent
class to the database.</description>
<config-property-name>MappingFactory</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>file</config-property-value>
</config-property>
<config-property>
<description>Plugin used to create metadata about persistent
types. Must implement kodo.meta.MetaDataLoader</description>
<config-property-name>MetaDataLoader</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>jdo</config-property-value>
</config-property>
<config-property>
<description>If true, then the application plans to have multiple
threads simultaneously accessing a single PersistenceManager, so measures
must be taken to ensure that the implementation is thread-safe. Otherwise,
the implementation need not address thread safety.</description>
<config-property-name>Multithreaded</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>If true, then it is possible to read persistent data
outside the context of a transaction. Otherwise, a transaction must be in
progress in order read data.</description>
<config-property-name>NontransactionalRead</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>If true, then it is possible to write to fields of a
persistent-nontransactional object when a transaction is not in progress.
If false, such a write will result in a JDOUserException.</description>
<config-property-name>NontransactionalWrite</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<config-property>
<description>Determines the persistence manager's behavior in
calls to getObjectById with a validate parameter of false. Use "check" to
check that a database record exists for the object and load its fetch
group fields. Use "hollow" to return a hollow instance.</description>
<config-property-name>ObjectLookupMode</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>check</config-property-value>
</config-property>
<config-property>
<description>Selects between optimistic and pessimistic (data
store) transactional modes.</description>
<config-property-name>Optimistic</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>Action to take when Kodo discovers an orphaned key in
the database. May be a custom action implementing
kodo.event.OrphanedKeyAction.</description>
<config-property-name>OrphanedKeyAction</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>log</config-property-value>
</config-property>
<config-property>
<description>The name of the concrete implementation of
javax.jdo.PersistenceManagerFactory that
javax.jdo.JDOHelper.getPersistenceManagerFactory () should create. For
Kodo JDO, this should be kodo.jdbc.runtime.JDBCPersistenceManagerFactory
or a custom extension of this type.</description>
<config-property-name>PersistenceManagerFactoryClass</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>kodo.jdbc.runtime.JDBCPersistenceManagerFactory</config-property-value>
</config-property>
<config-property>
<description>Persistence manager plugin and properties. If you
use a custom class, it must extend
kodo.runtime.PersistenceManagerImpl.</description>
<config-property-name>PersistenceManagerImpl</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>default</config-property-value>
</config-property>
<config-property>
<description>Configure this persistence manager factory to service
remote persistence managers.</description>
<config-property-name>PersistenceManagerServer</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>false</config-property-value>
</config-property>
<config-property>
<description>A comma-separated list of the class names of all
persistent classes to register whenever a persistence manager is
obtained.</description>
<config-property-name>PersistentClasses</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>com.ardatis.ventouris.domain.KwartaalVerhoging,
com.ardatis.ventouris.domain.Land, com.ardatis.ventouris.domain.Gemeente,
com.ardatis.ventouris.domain.Adres,
com.ardatis.ventouris.domain.ContactGegeven,
com.ardatis.ventouris.domain.AdresContactGegeven,
com.ardatis.ventouris.common.type.AdresType,
com.ardatis.ventouris.domain.OntvangstTransactie,
com.ardatis.ventouris.domain.OntvangstReeks,
com.ardatis.ventouris.domain.Ontvangst,
com.ardatis.ventouris.domain.Inkomen,
com.ardatis.ventouris.domain.loopbaan.LoopbaanPeriode,
com.ardatis.ventouris.common.type.InkomenSoort,
com.ardatis.ventouris.common.type.INSZ,
com.ardatis.ventouris.domain.Aangeslotene,
com.ardatis.ventouris.domain.NatuurlijkePersoon,
com.ardatis.ventouris.domain.Persoon, com.ardatis.ventouris.domain.Rol,
com.ardatis.ventouris.domain.Dossier,
com.ardatis.ventouris.common.type.Geslacht,
com.ardatis.ventouris.common.type.Taal,
com.ardatis.ventouris.common.type.Nationaliteit,
com.ardatis.ventouris.common.type.KostType,
com.ardatis.ventouris.domain.Verhoging,
com.ardatis.ventouris.domain.Aanvraag,
com.ardatis.ventouris.domain.AanvraagAansluitingSS,
com.ardatis.ventouris.domain.AanvraagToestand,
com.ardatis.ventouris.common.type.AanvraagToestandType,
com.ardatis.ventouris.domain.Factuur,
com.ardatis.ventouris.domain.TaakType, com.ardatis.ventouris.domain.Taak,
com.ardatis.ventouris.domain.BijdrageBerekening,
com.ardatis.ventouris.domain.calculationparameters.HerwaarderingsIndex,
com.ardatis.ventouris.domain.integration.asis.TempInterneOntvangst,
com.ardatis.ventouris.domain.calculationparameters.InkomenGrens,
com.ardatis.ventouris.domain.calculationparameters.BijdrageCategorie,
com.ardatis.ventouris.domain.calculationparameters.BijdrageCategorieGroep,
com.ardatis.ventouris.domain.integration.asis.TempOntvangstKinderbijslag,
com.ardatis.ventouris.domain.calculationparameters.JaarVerhogingParameter,
com.ardatis.ventouris.domain.calculationparameters.KwartaalVerhogingParameter,
com.ardatis.ventouris.domain.UitgaveReeks,
com.ardatis.ventouris.domain.Uitgave,
com.ardatis.ventouris.domain.Terugbetaling,
com.ardatis.ventouris.domain.BedragTerugbetaald,
com.ardatis.ventouris.domain.BijdrageSS</config-property-value>
</config-property>
<config-property>
<description>Plugin used to proxy second class object fields of
managed instances. Must implement kodo.util.ProxyManager.</description>
<config-property-name>ProxyManager</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>default</config-property-value>
</config-property>
<config-property>
<description>Plugin used to cache query results loaded from the
data store. Must implement kodo.datacache.QueryCache.</description>
<config-property-name>QueryCache</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>Plugin used to cache query compilation data. Must
implement java.util.Map. Does not need to be thread-safe -- it will be
wrapped via the Collections.synchronizedMap() method if it does not extend
kodo.util.CacheMap.</description>
<config-property-name>QueryCompilationCache</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<description>The default lock level to use when loading objects
within non-optimistic transactions. Set to none, read, write, or the
numeric value of the desired lock level for your lock
manager.</description>
<config-property-name>ReadLockLevel</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>read</config-property-value>
</config-property>
<config-property>
<description>Plugin used to communicate commit information among
JVMs. Must implement kodo.event.RemoteCommitProvider.</description>
<config-property-name>RemoteCommitProvider</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<description>Whether or not RemoteCommitEvents will include the
object Ids of objects added during the transaction.</description>
<config-property-name>RemoteCommitTransmitAddObjectIds</config-property-na -
ORA-01461: can bind a LONG value only for insert into a LONG colu
Hello - I have a variable defined in a package as VARCHAR2(32720). This is not a table column. I am building a string inside the vairable, loading in invoice data in sections one at a time. It seems that once I get a larger number of invoices (say 100+) to load in, I get the "ORA-01461: can bind a LONG value only for insert into a LONG column" error. I am not trying to insert into a table column; just stringing together data in this large variable.
Why would I be getting this error ? And is there a workaround ? The variable is read back out iin 80 byte strings which are then loaded to a table column that is varchar2(80).
Thanks !!
Jim Ernst
Invacare CorporationHere is the definition of the field:
l_EDI820_Data VARCHAR2(32720);
And here is the loop used to populate the field. As i mentioned, it seems that once the process gets over 100 invoices coming in that the field hits the error; seems as if we are hitting say 4000 characters or near it at that point...
FOR r_INVOICE_DETAIL IN cr_INVOICE_DETAILS LOOP
l_EDI820_Data := l_EDI820_Data
||l_RMR_Statement
||r_INVOICE_DETAIL.INVOICE_NUM
||'*PI*'
||LTRIM(TO_CHAR(NVL(r_INVOICE_DETAIL.PAYMENT_AMOUNT,0))) -- Net Amount to be applied
||'*'
||LTRIM(TO_CHAR(r_INVOICE_DETAIL.INVOICE_AMOUNT,'999999.99')) -- Gross Amount
||l_Delimiter;
l_TOTAL_SEGMENTS := l_TOTAL_SEGMENTS + 1;
END LOOP; -- r_INVOICE_DETAIL
There are some other statements that are adding additional data onto l_EDI820_Data ; this one is the loop that is basedon the invoices coming in.
This code writes it to the table (field EDI820_DATA in the table is VARCHAR2(94)):
l_EDI820_String_Length := LENGTH(RTRIM(l_EDI820_Data));
l_EDI820_SUBSTR_START := 1;
l_RECORD_SEQ_NO := 1;
WHILE SUBSTR(l_EDI820_Data, l_EDI820_SUBSTR_START, 80) <> ' ' LOOP
INSERT INTO XXAP_NACHA_EDI820_GTEMP_TBL
SELECTED_CHECK_ID
,EDI820_SEQ
,EDI820_DATA
VALUES (
r_CHECK_IDS.SELECTED_CHECK_ID
,l_RECORD_SEQ_NO
,'705'||SUBSTR(l_EDI820_Data, l_EDI820_SUBSTR_START, 80)
-- * Increment starting point for substring and also record sequence number
l_EDI820_SUBSTR_START := l_EDI820_SUBSTR_START + 80;
l_RECORD_SEQ_NO := l_RECORD_SEQ_NO + 1;
END LOOP; -- WHILE Loop -
this code :
public void clearAroundTile (int row, int col) {
//Checks if a tile is visited, has a hint and hintvalue == adjacent flagged tiles
if(tiles[row][col].isVisited() && tiles[row][col].isHint() && tiles[row][col].getHint()<= getNumFlagsAround(tiles[row][col])){
if(!tileAt(tiles[row][col], Direction.N).isFlagged()){
visitTile(tileAt(tiles[row][col], Direction.N));
if(!tileAt(tiles[row][col], Direction.NE).isFlagged()){
visitTile(tileAt(tiles[row][col], Direction.NE));
if(!tileAt(tiles[row][col], Direction.E).isFlagged()){
visitTile(tileAt(tiles[row][col], Direction.E));visits all the tiles on a board, around a base tile, now the problem is that sometimes, when if checks aorund a tile that is near the edge of a board i get an out of bounds exeption, i know why this happens, but i dont know what type of if statments i should use to correct it, i was thinking.. do if(row-1)>0) then it does not go out of the board, but then how would i do it for the edge of the board that does not relate to zero? any ideas.
thanksif(row > 0 && tiles[row][col].isBlank() )
if(!tiles[row-1][col].isVisited()){
clearAroundTile(row-1, col);
visitTile(tileAt(tiles[row][col], Direction.N));
if(row -1 > 0 && col + 1 < cols && tiles[row][col].isBlank() )
if(!tiles[row-1][col+1].isVisited()){
clearAroundTile(row-1, col+1);
visitTile(tileAt(tiles[row][col], Direction.NE));
}i am using this to automatically clear the tiles that are blank, that is only for 2 directions, i did it for all, and for some reason i keep getting a stack overflow, damn -
String index out of bounds... issue regarding checking for non-integers
okay. i have been racking my brain about this for the last couple of days. i looks like everything is alright, but i keep getting string index out of bounds exception: string index out of range 1.
heres the code.
for(int x=0; x<size; ++x)
count=x+1;
System.out.println("Please enter value #"+count+(":"));
numnum=console.nextLine();
if(Character.isDigit(numnum.charAt(x)))
goodInput=true;
if(!goodInput)
System.out.print("Please Enter Only Integers!");
else
values[x]=Integer.parseInt(numnum);
its probably something really stupid, but if someone can figure this out, id be most grateful.
-thanksBe sure values contains data.
Then make sure that size = values.length
Either you don't have any data to iterate through, or the size variable is too big. So it's trying to search in parts of the array that don't exist. -
Out of Bounds Memory Exception in Open JMS
Hi Friends,
I am currently using Open JMS version openjms-0.7.6.1 for a Java Swing based application for communication. But I got a memory out of bounds exception if I start the open JMS server for a long period of time and need to restart the open JMS server again. I tried increasing the Memory allocated in Open JMS configuration file but of no use( Only a few minutes more added to raised the exception)
I have heard of Java Service Wrapper and can use it in the Open JMS server. Can any one help me out or provide me a solution or any link?Is Java Service Wrapper really helpful?If yes, how(Please post some code or an example)? I like to mention that if I go for JSW , I want it to work for both windows as well as Unix or Linux.
Thanks in advance...java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.substring(Unknown Source)
at ImportOSTableModel.initVectors(ImportOSTableModel.java:49)
at ImportOSTableModel.<init>(ImportOSTableModel.java:15)
at ImportOSTable.<init>(ImportOSTable.java:19)
at Main.main(Main.java:53)
It printed 3 rows of data, and then runs into a null string. Shouldn't it just exit out of the while loop before hitting the exception? In any case, I'll input a check so that the loop doesn't exit if there is only one row of data missing, since there are empty lines in the report. -
Java Array Out Of Bounds Problem
In order to conduct an experiment in java array sorting algorithm efficiency, i am attempting to create and populate an empty array of 1000 elements with random, unique integers for sorting. I've been able to generate and populate an array with random integers but the problem is - for whatever size array I create, it only allows the range of numbers to populate it to be the size of the array, for instance, an array of size 3000 allows only the integer range of 0-3000 to populate it with or I get an out of bounds exception during runtime. How can you specify an integer range of say 0-5000 for an array of size < 5000? Any help is appreciated.
Another approach is to fill the array with an
arithmetic sequence, maybe plus some random noise:
array[i] = i * k + rand(k);or some such, so they are unique,
and then permute the array (put the elements
s in random order)
for (i : array.length) {
transpose(array, array[rand(i..length)]); }
Along those lines, java.util.Collections.shuffle can be used to randomly shuffle a List (such as an ArrayList). Create an ArrayList with numbers in whatever range is needed. Then call java.util.Collections.shuffle(myArrayList). [It is static in Collections--you don't need to [and can't] create a Collections object.] -
ORA-00257: archiver error. Connect internal only
Hello everyone,
On 10gR2, if we face the above error, the system would hang for some time. During this time no one will be able to connect. SYSDBA session will hang and wont give you SQL prompt quickly.
I want to know if there is any way to remove this time gap.
thanksHello,
The ORA-00257 is likely due to a lack of space which prevent generating Archived redologs:
ORA-00257: archiver error. Connect internal only, until freed.
Cause: The archiver process received an error while trying to archive a redo log. If the problem
is not resolved soon, the database will stop executing transactions. The most likely cause of this
message is the destination device is out of space to store the redo log file.
Action: Check archiver trace file for a detailed description of the problem. Also verify that the
device specified in the initialization parameter ARCHIVE_LOG_DEST is set up properly for archiving.So check for a File System full and the use of the Flash Recovery Area (FRA).
The following Note from MOS explains how to check the FRA and how to free space in it:
How to Resolve ORA-00257: Archiver is Stuck Error in 10g? [ID 278308.1]
The database hungs for some time even after clearing the archive log destination. And it is this time that I want to reduce.I think that the best way is to monitore the Archive destination so that you can clear the space before the Database hang.
If you use EM Database Control, you may set some Alert Notification. More over, you have the specific Archive Full Metric:
http://download.oracle.com/docs/cd/B19306_01/em.102/b25986/oracle_database.htm#sthref540
Hope this help.
Best regards,
Jean-Valentin
Edited by: Lubiez Jean-Valentin on Jul 24, 2011 10:46 PM
Maybe you are looking for
-
It seems that none of the techniques described in the Apple iTunes troubleshooting tutorial have worked. I have spent hours on this. I think that when I downloaded DVD converter and burner program that some preference got tweaked. or When I ran a 'd
-
Need help in source determination.
Hi There is a source list maintained for a material and plant comibination. This list contains the Agrements along with the vendors. Now the quesion is how the system will use this for source determination? IS there any T-Code to analyze the source l
-
HT204150 can you share icloud contacts between 2 icloud accounts?
Can you share your address book/contacts between 2 icloud accounts? My wife and i have seperate icloud accounts but want to be able to update and access all the same contacts. How can we do it?
-
my facebook and tumblr apps kept logging out. soo ii deleted them. then tried to re instal them. but midway through installing them they stop and now both say waiting and ii cant delete them. what do ii do?
-
Hi again all, I get a status 64 in we05 when I'm checking some of the statuses of my IDOCS. The text is 'Immediate Processing in Job '0000000000100741 ' '.I thought status 64 are for IDOCS that are still being processed? in this case, it got stuck o