Hi to all again,
I could analyse and solve the problem.
Originally I thought that if ij findes something phony it would give a return
code as its signature suggests it.
Actually after finding out that the trouble stays somehow within ij after
minutes of processing and that I have to set another IO-Stream and put it out I
found exceptions-traces like this
2009-11-20 09:43:20,232 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
IJ ERROR: IOException: null
2009-11-20 09:43:20,241 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
org.apache.derby.impl.tools.ij.ijException: IOException: null
2009-11-20 09:43:20,251 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.derby.impl.tools.ij.ijException.iOException(Unknown Source)
2009-11-20 09:43:20,257 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.derby.impl.tools.ij.StatementFinder.peekChar(Unknown Source)
2009-11-20 09:43:20,264 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.derby.impl.tools.ij.StatementFinder.nextStatement(Unknown
Source)
2009-11-20 09:43:20,270 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
2009-11-20 09:43:20,285 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.derby.impl.tools.ij.utilMain.goScript(Unknown Source)
2009-11-20 09:43:20,293 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.derby.tools.ij.runScript(Unknown Source)
2009-11-20 09:43:20,302 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
de.equens.fed.converting.data.FieldMemory.runScript(FieldMemory.java:506)
2009-11-20 09:43:20,311 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
de.equens.fed.converting.data.FieldMemory.reorganize(FieldMemory.java:397)
2009-11-20 09:43:20,320 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
de.equens.fed.converting.pacs2swift.Pacs08ToMT103Converter.<init>(Pacs08ToMT103Converter.java:53)
2009-11-20 09:43:20,330 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at java.lang.Class.newInstanceImpl(Native Method)
2009-11-20 09:43:20,338 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at java.lang.Class.newInstance(Class.java:1243)
2009-11-20 09:43:20,344 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
de.equens.fed.converting.pacs2swift.PacsToMT103ConvFactory.newInstance(PacsToMT103ConvFactory.java:22)
2009-11-20 09:43:20,348 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
de.equens.fed.converting.pacs2swift.PacsToMT103Handler.startElement(PacsToMT103Handler.java:102)
2009-11-20 09:43:20,352 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
2009-11-20 09:43:20,357 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
2009-11-20 09:43:20,361 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
2009-11-20 09:43:20,366 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
2009-11-20 09:43:20,370 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
2009-11-20 09:43:20,374 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
2009-11-20 09:43:20,377 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
2009-11-20 09:43:20,380 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
2009-11-20 09:43:20,383 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
2009-11-20 09:43:20,385 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at javax.xml.parsers.SAXParser.parse(Unknown Source)
2009-11-20 09:43:20,387 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at de.equens.fed.converting.Pacs_MT103.run(Pacs_MT103.java:76)
2009-11-20 09:43:20,388 DEBUG [main] de.equens.fed.converting.data.FieldMemory:
at de.equens.fed.converting.Pacs_MT103.main(Pacs_MT103.java:174)
That gave me the Idea that the sql-script I am trying to play on the database
is probably not UTF-8.
And .. voilà ... after converting this script into UTF-8 all works fine,
finally.
There are 2 things to learn about.
1. IJ seems not work with problems as I would aspect it as normal user,
intuitively there should be either an exception or a returncode that tells you
that something is going wrong instead of producing 5 mb ouput for a 3 kb script
in my case.
2. here is obviously an os-specific java behaviour (or may be its just the
behaviour of the different JVM) on how to read text files since the very same
sql-script worked on Solaris and Windows with a Sun-JVM (JDK 5) that seems to
be a bit more tolerant.
In other words I would count that situation as not nice behaviour of ij, since
the return code should have been given as I would suppose it looking at the
method signature.
________________________________
Von: [email protected] [mailto:[email protected]]
Gesendet: Donnerstag, 19. November 2009 13:26
An: [email protected]
Betreff: AW: OOM with millions of weakly-referenced Derby objects
Hi to all,
I have somehow a problem using derby on AIX 5.3
Derby is used as embedded DB by a little program. The database is constructed
when it is not there using the specific driver property. That seems to work.
Then I am using ij to create the tables etc if the first statement crashes
because of having not table. This strategy works perfectly on Windows and
Sun-Solaris as well, but now I am facing trouble on an AIX-machine.
Following program method uses ij
private void runScript(String fileName) throws FileNotFoundException,
UnsupportedEncodingException, IOException, SQLException
{
BufferedInputStream iStream = null;
PrintStream pStream = null;
try
{
FileInputStream fileStream = new FileInputStream(fileName);
iStream = new BufferedInputStream(fileStream);
ByteArrayOutputStream bOut = new ByteArrayOutputStream(512);
pStream = new PrintStream(bOut);
logger.info("running Script '"+fileName+"'");
int result = ij.runScript(m_conn, iStream, "UTF-8", pStream,
"UTF-8");
logger.debug("Result code is: " + result);
pStream.flush();
if (result!=0)
{
logger.error(bOut.toString());
throw new RuntimeException("problems running "+fileName+"
rc:"+result+"\n see logs for more information");
}
}
finally
{
if (pStream!=null)
{
pStream.close();
}
if (iStream!=null)
{
iStream.close();
}
}
}
Obviously concerning the logs ij is called as in this line
int result = ij.runScript(m_conn, iStream, "UTF-8", pStream, "UTF-8");
after several minutes the program seems to crash without any exception I could
see the derby.log got following entries (I usually expect
but does not show any of ij as it does when I use it on Window or Solaris)
following JVM is used on our AIX 5.3:
$ /usr/java5_64/bin/java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64dev-20061003a
(SR3))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423-20061003
(JIT enabled)
J9VM - 20060915_08260_BHdSMr
JIT - 20060908_1811_r8
GC - 20060906_AA)
JCL - 20061003
Questions:
1. have derby and ij ever run successfully on AIX (e.g. 5.3) with Java5 (64
bit)?
2. is there a possibility to activate logs from ij so we can better see what
is happening?
3. Did anybody face a similar problem and maybe got a workaround?
Thanks in advance
Malte