Problem with upgrade

21 views
Skip to first unread message

Max Giesbert

unread,
Jan 27, 2012, 9:45:59 AM1/27/12
to Jease - Java with Ease
Hi all,

right now I am trying to upgrade an installation from Jease 1.5 to 2.6.
The Problem I have, is the same as described here:
http://groups.google.com/group/jease/browse_thread/thread/77ec9f247f88cbc5

I am pretty sure that I have all the definitions I need in my
META-INF/jease/registry.xml . What I found out (thanks for the sources
Maik!) that the database seems to get opened before the init()-method in
Registry.java is being called. Therefore the definitions can't be picked
up. Hence the error message.

What am I missing here? Any help to debug the problem ist very welcome!

Thx in advance


Max

Maik Jablonski

unread,
Jan 27, 2012, 9:58:38 AM1/27/12
to je...@googlegroups.com
Hi Max,

before we dig any further into problems: Did you read and follow the
upgrade guide? An upgrade is only supported from 1.9:

http://jease.org/download/2.0/upgrade

So I would recommend to read (and follow) the release notes between
1.5 and 1.9 if there's anything mentioned about upgates, then upgrade
to 1.9 and from there to 2.0.

Cheers, Maik

Max Giesbert

unread,
Jan 27, 2012, 10:43:54 AM1/27/12
to je...@googlegroups.com
Version 1.9.2: same problem...

As it crashes immediatly on Tomcat startup I am unable to upgrade the
database as requested in
http://jease.org/download/1.x/1.8/?print&iframe=true

Anything else?

Thx

Maik Jablonski

unread,
Jan 27, 2012, 11:43:22 AM1/27/12
to je...@googlegroups.com
Hi Max,

> As it crashes immediatly on Tomcat startup I am unable to upgrade the
> database as requested in
> http://jease.org/download/1.x/1.8/?print&iframe=true

did you use any custom content types in 1.5 which you didn't deploy as
class to your new install. If so, things cannot work, because the java
classes are the "schema definitions". And without the schema, the
object database cannot be loaded.

HTH, Maik

Max Giesbert

unread,
Jan 27, 2012, 11:53:48 AM1/27/12
to je...@googlegroups.com
Yes, I have the feeling my definitions aren't read.

I work under Eclipse. In the default "src"-folder I have the META-INF/jease/registry.xml . The src-Folder is deployed to WEB-INF/classes as stated in the project properties under "Deployment Assembly"...

The definitions look like this:

<component>
    <domain>custom.Links</domain>
    <editor>custom.LinksEditor</editor>
    <icon>~./jfix/img/text-html.png</icon>
    <view>/custom/Links.jsp</view>
  </component>

I have an according package "custom"  and a folder "custom" under WebContent with the JSPs...

I will now try to have a look into the database... maybe I can see something there I am missing from looking at the Java files. Although I triple checked...

Let me know if something I am doing seems wrong...

Thx

Max


2012/1/27 Maik Jablonski <maik.ja...@gmail.com>

Maik Jablonski

unread,
Jan 27, 2012, 12:24:07 PM1/27/12
to je...@googlegroups.com
Hi,

> I work under Eclipse. In the default "src"-folder I have the
> META-INF/jease/registry.xml . The src-Folder is deployed to WEB-INF/classes
> as stated in the project properties under "Deployment Assembly"...

can you check WEB-INF/classes to see if .class-files are actually in
place? Another option would be to use the provided build.xml in
WEB-INF. Just call ant in WEB-INF.

> The definitions look like this:
>
> <component>

...
> </component>

You'll need to wrap your definition in <jease>...</jease>.

Can you post the stacktrace? Maybe it will shed some light on what
might be wrong?

Cheers, Maik

Max Giesbert

unread,
Feb 1, 2012, 9:41:38 AM2/1/12
to je...@googlegroups.com
Hi,

just ran ant in WEB-INF:
ant
Buildfile: /home/max/workspace.git/Jease192/WebContent/WEB-INF/build.xml

check:

clean:
[delete] Deleting directory
/home/max/workspace.git/Jease192/WebContent/WEB-INF/classes
[mkdir] Created dir:
/home/max/workspace.git/Jease192/WebContent/WEB-INF/classes

compile:

build:

BUILD SUCCESSFUL
Total time: 0 seconds

but nothing seems to have happened...


here is the stacktrace when I start in Eclipse:


INFO: Starting Servlet Engine: Apache Tomcat/6.0.33
java.lang.IllegalArgumentException: array element type mismatch
at java.lang.reflect.Array.set(Native Method)
at
com.db4o.reflect.core.AbstractReflectArray.set(AbstractReflectArray.java:101)
at
com.db4o.reflect.generic.GenericArrayReflector.set(GenericArrayReflector.java:85)
at
com.db4o.internal.handlers.array.ArrayHandler.readInto(ArrayHandler.java:382)
at
com.db4o.internal.handlers.array.ArrayHandler.readElements(ArrayHandler.java:363)
at
com.db4o.internal.handlers.array.ArrayHandler.read(ArrayHandler.java:355)
at com.db4o.internal.Handlers4.readValueType(Handlers4.java:313)
at
com.db4o.internal.marshall.AbstractReadContext.readAtCurrentSeekPosition(AbstractReadContext.java:48)
at
com.db4o.internal.marshall.AbstractReadContext$1.run(AbstractReadContext.java:38)
at
com.db4o.internal.marshall.SlotFormat.doWithSlotIndirection(SlotFormat.java:76)
at
com.db4o.internal.marshall.SlotFormat.doWithSlotIndirection(SlotFormat.java:66)
at
com.db4o.internal.marshall.AbstractReadContext.readObject(AbstractReadContext.java:36)
at
com.db4o.internal.marshall.AbstractReadContext.read(AbstractReadContext.java:28)
at com.db4o.internal.FieldMetadata.read(FieldMetadata.java:812)
at com.db4o.internal.FieldMetadata.activate(FieldMetadata.java:647)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler$2.processAspect(StandardReferenceTypeHandler.java:93)
at
com.db4o.internal.metadata.MarshallingInfoTraverseAspectCommand.processAspect(MarshallingInfoTraverseAspectCommand.java:52)
at
com.db4o.internal.metadata.StandardAspectTraversalStrategy.traverseAllAspects(StandardAspectTraversalStrategy.java:24)
at
com.db4o.internal.ClassMetadata.traverseAllAspects(ClassMetadata.java:2083)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler.traverseAllAspects(StandardReferenceTypeHandler.java:258)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler.activateAspects(StandardReferenceTypeHandler.java:96)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler.activate(StandardReferenceTypeHandler.java:119)
at com.db4o.internal.Handlers4.activate(Handlers4.java:304)
at
com.db4o.internal.ClassMetadata.instantiateFields(ClassMetadata.java:1318)
at com.db4o.internal.ClassMetadata.activate(ClassMetadata.java:1252)
at com.db4o.internal.ClassMetadata.instantiate(ClassMetadata.java:1210)
at
com.db4o.internal.marshall.UnmarshallingContext.read(UnmarshallingContext.java:70)
at com.db4o.internal.ObjectReference.read(ObjectReference.java:304)
at
com.db4o.internal.ObjectReference.readForActivation(ObjectReference.java:136)
at
com.db4o.internal.ObjectReference.activateInternal(ObjectReference.java:132)
at
com.db4o.internal.ObjectContainerBase.processedByImmediateActivation(ObjectContainerBase.java:1861)
at
com.db4o.internal.ObjectContainerBase.stillToActivate(ObjectContainerBase.java:1837)
at
com.db4o.internal.ObjectContainerBase$2.apply(ObjectContainerBase.java:190)
at
com.db4o.internal.ObjectContainerBase$2.apply(ObjectContainerBase.java:188)
at
com.db4o.internal.ObjectContainerBase.asTopLevelCall(ObjectContainerBase.java:428)
at
com.db4o.internal.ObjectContainerBase.activate(ObjectContainerBase.java:188)
at
com.db4o.internal.ObjectContainerBase.refreshInternal(ObjectContainerBase.java:1438)
at
com.db4o.internal.ObjectContainerBase.refresh(ObjectContainerBase.java:1433)
at
com.db4o.internal.ExternalObjectContainer.refresh(ExternalObjectContainer.java:124)
at
jfix.db4o.engine.PersistenceEngineDb4o.query(PersistenceEngineDb4o.java:77)
at
jfix.db4o.ObjectDatabase.populateObjectRepository(ObjectDatabase.java:72)
at jfix.db4o.ObjectDatabase.open(ObjectDatabase.java:63)
at jfix.db4o.Database.open(Database.java:70)
at
jease.cmf.web.servlet.JeaseServletListener.contextInitialized(JeaseServletListener.java:36)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
01.02.2012 15:38:58 org.apache.catalina.core.StandardContext listenerStart
SCHWERWIEGEND: Exception sending context initialized event to listener
instance of class jease.cmf.web.servlet.JeaseServletListener
java.lang.RuntimeException: java.lang.IllegalArgumentException: array
element type mismatch
at jfix.db4o.Database.open(Database.java:73)
at
jease.cmf.web.servlet.JeaseServletListener.contextInitialized(JeaseServletListener.java:36)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.IllegalArgumentException: array element type mismatch
at java.lang.reflect.Array.set(Native Method)
at
com.db4o.reflect.core.AbstractReflectArray.set(AbstractReflectArray.java:101)
at
com.db4o.reflect.generic.GenericArrayReflector.set(GenericArrayReflector.java:85)
at
com.db4o.internal.handlers.array.ArrayHandler.readInto(ArrayHandler.java:382)
at
com.db4o.internal.handlers.array.ArrayHandler.readElements(ArrayHandler.java:363)
at
com.db4o.internal.handlers.array.ArrayHandler.read(ArrayHandler.java:355)
at com.db4o.internal.Handlers4.readValueType(Handlers4.java:313)
at
com.db4o.internal.marshall.AbstractReadContext.readAtCurrentSeekPosition(AbstractReadContext.java:48)
at
com.db4o.internal.marshall.AbstractReadContext$1.run(AbstractReadContext.java:38)
at
com.db4o.internal.marshall.SlotFormat.doWithSlotIndirection(SlotFormat.java:76)
at
com.db4o.internal.marshall.SlotFormat.doWithSlotIndirection(SlotFormat.java:66)
at
com.db4o.internal.marshall.AbstractReadContext.readObject(AbstractReadContext.java:36)
at
com.db4o.internal.marshall.AbstractReadContext.read(AbstractReadContext.java:28)
at com.db4o.internal.FieldMetadata.read(FieldMetadata.java:812)
at com.db4o.internal.FieldMetadata.activate(FieldMetadata.java:647)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler$2.processAspect(StandardReferenceTypeHandler.java:93)
at
com.db4o.internal.metadata.MarshallingInfoTraverseAspectCommand.processAspect(MarshallingInfoTraverseAspectCommand.java:52)
at
com.db4o.internal.metadata.StandardAspectTraversalStrategy.traverseAllAspects(StandardAspectTraversalStrategy.java:24)
at
com.db4o.internal.ClassMetadata.traverseAllAspects(ClassMetadata.java:2083)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler.traverseAllAspects(StandardReferenceTypeHandler.java:258)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler.activateAspects(StandardReferenceTypeHandler.java:96)
at
com.db4o.internal.handlers.StandardReferenceTypeHandler.activate(StandardReferenceTypeHandler.java:119)
at com.db4o.internal.Handlers4.activate(Handlers4.java:304)
at
com.db4o.internal.ClassMetadata.instantiateFields(ClassMetadata.java:1318)
at com.db4o.internal.ClassMetadata.activate(ClassMetadata.java:1252)
at com.db4o.internal.ClassMetadata.instantiate(ClassMetadata.java:1210)
at
com.db4o.internal.marshall.UnmarshallingContext.read(UnmarshallingContext.java:70)
at com.db4o.internal.ObjectReference.read(ObjectReference.java:304)
at
com.db4o.internal.ObjectReference.readForActivation(ObjectReference.java:136)
at
com.db4o.internal.ObjectReference.activateInternal(ObjectReference.java:132)
at
com.db4o.internal.ObjectContainerBase.processedByImmediateActivation(ObjectContainerBase.java:1861)
at
com.db4o.internal.ObjectContainerBase.stillToActivate(ObjectContainerBase.java:1837)
at
com.db4o.internal.ObjectContainerBase$2.apply(ObjectContainerBase.java:190)
at
com.db4o.internal.ObjectContainerBase$2.apply(ObjectContainerBase.java:188)
at
com.db4o.internal.ObjectContainerBase.asTopLevelCall(ObjectContainerBase.java:428)
at
com.db4o.internal.ObjectContainerBase.activate(ObjectContainerBase.java:188)
at
com.db4o.internal.ObjectContainerBase.refreshInternal(ObjectContainerBase.java:1438)
at
com.db4o.internal.ObjectContainerBase.refresh(ObjectContainerBase.java:1433)
at
com.db4o.internal.ExternalObjectContainer.refresh(ExternalObjectContainer.java:124)
at
jfix.db4o.engine.PersistenceEngineDb4o.query(PersistenceEngineDb4o.java:77)
at
jfix.db4o.ObjectDatabase.populateObjectRepository(ObjectDatabase.java:72)
at jfix.db4o.ObjectDatabase.open(ObjectDatabase.java:63)
at jfix.db4o.Database.open(Database.java:70)
... 16 more
01.02.2012 15:38:58 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error listenerStart
01.02.2012 15:38:58 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/Jease192] startup failed due to previous errors

Thx a lot

Max

P.S. The component definitions are wrapped by <jease></jease>

Maik Jablonski

unread,
Feb 1, 2012, 10:08:13 AM2/1/12
to je...@googlegroups.com
Hi Max,

> compile:
...


> but nothing seems to have happened...

the output should be different... something more like

compile:
[copy] Copying ... files to
c:\Works\test\jease\webapps\ROOT\WEB-INF\classes

Can you double-check that you did put your classes into WEB-INF/src?
And maybe another one: can you use the build.xml from the current
release (as I'm not sure on the status of the one delivered with 1.9).

> here is the stacktrace when I start in Eclipse:

Yes, that's exactly the stacktrace when persisted classes are missing.
So we have to make sure that your compiled custom classes end up in
WEB-INF/classes.

Cheers, Maik

Max Giesbert

unread,
Feb 1, 2012, 10:53:18 AM2/1/12
to je...@googlegroups.com
$ant war
Buildfile: /home/max/workspace.git/www/WebContent/WEB-INF/build.xml

check:

clean:
[delete] Deleting directory
/home/max/workspace.git/www/WebContent/WEB-INF/classes
[mkdir] Created dir:
/home/max/workspace.git/www/WebContent/WEB-INF/classes

compile:
[javac] Compiling 26 source files to
/home/max/workspace.git/www/WebContent/WEB-INF/classes
[javac] Note: SozNavigations.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[copy] Copying 4 files to
/home/max/workspace.git/www.diakonie-moosach.de/WebContent/WEB-INF/classes

build:

war:
[war] Building war: /home/max/workspace.git/www/ROOT.war

BUILD SUCCESSFUL
Total time: 3 seconds


I deployed the war file. The class files are now in
WEB-INF/classes/custom/ but I still get same error...

Anything else I can do?

Cheers


Max

Maik Jablonski

unread,
Feb 1, 2012, 11:28:56 AM2/1/12
to je...@googlegroups.com
Hi Max,

I'm pretty sure that your problem arises from a missing class. Are you
sure you've copied all classes from your production version to the
current one? It is important that you deploy all classes for all
objects living in the database (did you check the Trash)?

> /home/max/workspace.git/www/WebContent/WEB-INF/classes
...
> /home/max/workspace.git/www.diakonie-moosach.de/WebContent/WEB-INF/classes

the difference in the above paths is strange... did you change the
build.xml? Can you peek into the ROOT.war and check that the classes
are there?

If this is no help, can you send me your db4o.yap (from 1.5) and your
class-sources, so I can give it a try?

Cheers, Maik

Max Giesbert

unread,
Feb 14, 2012, 5:06:22 AM2/14/12
to je...@googlegroups.com
Hi everyone,


together with Maik I figured out my problem: In the upgrade effort I
relocated my custom classes in new packages. Therefore the database
couldn't find them anymore and threw the mentioned exception.

Thx a lot for helping out!

Max

Maik Jablonski

unread,
Feb 14, 2012, 11:22:13 AM2/14/12
to Jease - The Java CMS with Ease
Hi,

> together with Maik I figured out my problem: In the upgrade effort I
> relocated my custom classes in new packages. Therefore the database
> couldn't find them anymore and threw the mentioned exception.

you can think of the full qualified class name (package + classname)
as some kind of unique key which db4o/Perst uses to map stored data to
classes. If there's a mismatch between the internal "key" and the
provided class names, the objectdatabase isn't able to resolve the
mapping and therefore fails with an exception.

So as a rule of thumb: never change a package or classname of a
persistent class... gives you some headaches at least. That's one of
the reasons why jfix.db4o.* is still used, although it would be better
named jfix.persistence.* or something like that. But I started with
db4o in 2004 and wasn't fully aware of the consequences back
then...;-)

Cheers, Maik

P.S.: There are means to rename packages or classes for persistent
classes. This is highly dependent on the used persistence engine,
therefore I would recommend to read the manuals of the upstream
providers.
Reply all
Reply to author
Forward
0 new messages