Hello,
We have re-deployed our web application (ear) and have run across the
following problem:
Probably because of the forced shutdown and even though we use
transactional PM (SimpleDBPersistenceManager)
with <param name="externalBLOBs" value="false"/>
and jackrabbit as RAR (using the JCA package)--all these in order to
enforce transactional behaviour which will be handled by the
application-server and not the application explicitly, the resource
nodes(nt:resource) we had under certain files seem to be corrupted.
When we try to access a file with such a resource we get an exception
Caused by: javax.jcr.RepositoryException: file backing binary value not
found: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\1\bin14955.tmp (The system
cannot find the file specified):
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\1\bin14955.tmp (The system cannot
find the file specified)
at
org.apache.jackrabbit.core.value.BLOBFileValue.getStream(BLOBFileValue.j
ava:453)
at
org.apache.jackrabbit.core.value.InternalValue.toJCRValue(InternalValue.
java:325)
at
org.apache.jackrabbit.core.PropertyImpl.getValue(PropertyImpl.java:500)
at
org.apache.jackrabbit.core.PropertyImpl.getStream(PropertyImpl.java:540)
.
Indeed this tmp file that the application is referring to, does not
exist.
I can fix this situation for the time being by cleaning up the
repository however this could never be done in a production environment.
Could someone please provide me with some more insight on how the binary
values are exactly stored and what could go wrong with forced shutdown?
Why does jackrabbit search for this temp file when it has already stored
the binary value in DEFAULT_BINVAL table? Is there any way to overcome a
problem such as the described one?
regards
Giota