Getting NegativeArraySizeException: allocArray [message #387450] |
Tue, 05 May 2009 11:14  |
Eclipse User |
|
|
|
Hi,
I am using EclipseLink 1.0.2 in my J2EE app. I am getting following error
randomly while accessing any page of my application. Though I am not able
to reproduce it consistently, I get it intermittently.
Can anyone please give any suggestions/feedback?
Any help is highly appreciated.
Exception [EclipseLink-7107] (Eclipse Persistence Services - 1.0.2 (Build
20081024)): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Error encountered during string decryption.
Internal Exception: java.lang.NegativeArraySizeException: allocArray
at
org.eclipse.persistence.exceptions.ValidationException.error DecryptingPassword(ValidationException.java:827)
at
org.eclipse.persistence.internal.security.JCEEncryptor.decry ptPassword(JCEEncryptor.java:102)
at
org.eclipse.persistence.sessions.DatasourceLogin.prepareProp erties(DatasourceLogin.java:324)
at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDa tasource(DatasourceLogin.java:164)
at
org.eclipse.persistence.internal.databaseaccess.DatasourceAc cessor.connectInternal(DatasourceAccessor.java:324)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.connectInternal(DatabaseAccessor.java:264)
at
org.eclipse.persistence.internal.databaseaccess.DatasourceAc cessor.reconnect(DatasourceAccessor.java:546)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.reconnect(DatabaseAccessor.java:1372)
at
org.eclipse.persistence.internal.databaseaccess.DatasourceAc cessor.incrementCallCount(DatasourceAccessor.java:300)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.basicExecuteCall(DatabaseAccessor.java:544)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.executeCall(DatabaseAccessor.java:500)
at
org.eclipse.persistence.sessions.server.ServerSession.execut eCall(ServerSession.java:522)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.executeCall(DatasourceCallQueryMechanism.java:204)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.executeCall(DatasourceCallQueryMechanism.java:190)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.executeSelectCall(DatasourceCallQueryMechanism.jav a:261)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.selectAllRows(DatasourceCallQueryMechanism.java:59 4)
at
org.eclipse.persistence.internal.queries.ExpressionQueryMech anism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2 506)
at
org.eclipse.persistence.internal.queries.ExpressionQueryMech anism.selectAllRows(ExpressionQueryMechanism.java:2464)
at
org.eclipse.persistence.queries.ReadAllQuery.executeObjectLe velReadQuery(ReadAllQuery.java:478)
at
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute DatabaseQuery(ObjectLevelReadQuery.java:879)
at
org.eclipse.persistence.queries.DatabaseQuery.execute(Databa seQuery.java:666)
at
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute (ObjectLevelReadQuery.java:840)
at
org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAll Query.java:456)
at
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute InUnitOfWork(ObjectLevelReadQuery.java:902)
at
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.int ernalExecuteQuery(UnitOfWorkImpl.java:2587)
at
org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1178)
at
org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1162)
at
org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1108)
|
|
|
|
|
|
Re: Getting NegativeArraySizeException: allocArray [message #387773 is a reply to message #387772] |
Fri, 08 May 2009 14:30   |
Eclipse User |
|
|
|
Hi,
I'm a colleague of Amod. Yes, we do have a session customizer. This is
legacy code, and we're not using the standard JPA configuration. The only
thing I can think of that might be relevant here is the code we have for
determining the DataSourcePlatform for us:
Platform datasourcePlatform =
session.getDatasourceLogin().getDatasourcePlatform();
DatabasePlatform newPlatform;
if (DBUtils.isMsSqlConnection()) {
// Use customized SQLServerPlatform to resolve Unicode issues.
newPlatform = new SQLServerPlatform();
} else if (DBUtils.isOracleConnection()) {
// Use the Oracle10Platform which is currently identical to
the Oracle9Platform.
// This is required to handle DATE fields properly.
// We no longer support Oracle8.
newPlatform = new Oracle10Platform();
// Oracle has a limit of 4000 characters for String constants.
This enables
// SQL binding for CLOBs.
newPlatform.setUsesStringBinding(true);
newPlatform.setStringBindingSize(4000);
// Byte array binding is required for persisting BLOBs
newPlatform.setUsesByteArrayBinding(true);
} else if (DBUtils.isDB2()) {
newPlatform = new DB2Platform();
} else {
throw new
DataAccessException("err.dataAccess.unsupportedDatabase",
new Object[] {""}, null);
}
newPlatform.setDefaultSequence(datasourcePlatform.getDefault Sequence());
newPlatform.setSequences(datasourcePlatform.getSequences());
newPlatform.setTableQualifier(datasourcePlatform.getTableQua lifier());
session.getDatasourceLogin().setDatasourcePlatform(newPlatfo rm);
In any case, what I found is that even though we're using a J2EE
DataSource and no password is required, the class DataSourceLogin is still
always decrypting the empty password. The decryptPassword method in
TopLink was synchronized, but now it is not. I recommended to Amod that
we simply call DataSourceLogin.setEncryptedPassword("") to circumvent the
unnecessary decryption. Does that sound plausible? If that's not
sufficient, then I would try overriding the decryptPassword method to
check for the empty string.
- Bruno
|
|
|
Re: Getting NegativeArraySizeException: allocArray [message #387776 is a reply to message #387772] |
Fri, 08 May 2009 23:12  |
Eclipse User |
|
|
|
Hi,
This is the complete stack trace
Caused by: Exception [EclipseLink-7107] (Eclipse Persistence Services -
1.0.2 (Build 20081024)):
org.eclipse.persistence.exceptions.ValidationException
Exception Description: Error encountered during string decryption.
Internal Exception: java.lang.NegativeArraySizeException: allocArray
at
org.eclipse.persistence.exceptions.ValidationException.error DecryptingPassword(ValidationException.java:827)
at
org.eclipse.persistence.internal.security.JCEEncryptor.decry ptPassword(JCEEncryptor.java:102)
at
org.eclipse.persistence.sessions.DatasourceLogin.prepareProp erties(DatasourceLogin.java:324)
at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDa tasource(DatasourceLogin.java:164)
at
org.eclipse.persistence.internal.databaseaccess.DatasourceAc cessor.connectInternal(DatasourceAccessor.java:324)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.connectInternal(DatabaseAccessor.java:264)
at
org.eclipse.persistence.internal.databaseaccess.DatasourceAc cessor.reconnect(DatasourceAccessor.java:546)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.reconnect(DatabaseAccessor.java:1372)
at
org.eclipse.persistence.internal.databaseaccess.DatasourceAc cessor.incrementCallCount(DatasourceAccessor.java:300)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.basicExecuteCall(DatabaseAccessor.java:544)
at
org.eclipse.persistence.internal.databaseaccess.DatabaseAcce ssor.executeCall(DatabaseAccessor.java:500)
at
org.eclipse.persistence.sessions.server.ServerSession.execut eCall(ServerSession.java:522)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.executeCall(DatasourceCallQueryMechanism.java:204)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.executeCall(DatasourceCallQueryMechanism.java:190)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.executeSelectCall(DatasourceCallQueryMechanism.jav a:261)
at
org.eclipse.persistence.internal.queries.DatasourceCallQuery Mechanism.selectAllRows(DatasourceCallQueryMechanism.java:59 4)
at
org.eclipse.persistence.internal.queries.ExpressionQueryMech anism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2 506)
at
org.eclipse.persistence.internal.queries.ExpressionQueryMech anism.selectAllRows(ExpressionQueryMechanism.java:2464)
at
org.eclipse.persistence.queries.ReadAllQuery.executeObjectLe velReadQuery(ReadAllQuery.java:478)
at
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute DatabaseQuery(ObjectLevelReadQuery.java:879)
at
org.eclipse.persistence.queries.DatabaseQuery.execute(Databa seQuery.java:666)
at
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute (ObjectLevelReadQuery.java:840)
at
org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAll Query.java:456)
at
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute InUnitOfWork(ObjectLevelReadQuery.java:902)
at
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.int ernalExecuteQuery(UnitOfWorkImpl.java:2587)
at
org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1178)
at
org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1162)
at
org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1108)
Caused by: java.lang.NegativeArraySizeException: allocArray
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
at javax.crypto.CipherInputStream.close(DashoA12275)
at
java.io.ObjectInputStream$PeekInputStream.close(ObjectInputS tream.java:2252)
at
java.io.ObjectInputStream$BlockDataInputStream.close(ObjectI nputStream.java:2587)
at java.io.ObjectInputStream.close(ObjectInputStream.java:853)
at
org.eclipse.persistence.internal.security.JCEEncryptor.decry ptPassword(JCEEncryptor.java:91)
Thanks for the help.
|
|
|
Powered by
FUDForum. Page generated in 0.05204 seconds