ObjectDB 2.x is working without any activation code



I downloaded the objectDB from the https://www.objectdb.com/download and then added the objectdb.jar in my classpath. I used the default objectdb.conf file present in the objectdb.jar file and it is working without any activation code. Is it is bug in objectdb or it works without activation code also. I am saving some information into the some.odb file and reading the informatin without any problem. What exactly is the activation code for ?

Thanks & regards,

Binit Bhaskar


ObjectDB with no activation should work with a limit of 10 entity classes and 1000000 objects, except in some environments in which these restrictions are not applied.

But since you have an OEM license you can use ObjectDB with no activation and without these limits (e.g. on end user computers,) as long as your development / build machine is activated and the classes are enhanced on that activated machine.

ObjectDB Support

what exactly activating machine means ? Cant i use this in others developes machine ? how do i activate machine ?


I did the following step

1. Put the activation code in the objectdb.conf file and again put this conf file in the objectdb.jar

2. Used other machine (other developers machine)

2. Enhannced all the persistance class using this jar file

3. Trying to run the application whichi is using Tomcat 7.0


and getting the following exception

06-Sep 14:30:01 ERROR  [ParserGroupThreadRunner.run:?] An error occured during parsing: com.objectdb.o._JdoDataStoreException: Too many persistable types (>10) - exceeds evaluation limit
[ObjectDB 2.3.7_25] javax.jdo.JDODataStoreException
Too many persistable types (>10) - exceeds evaluation limit (error 1011)
                at com.objectdb.jdo.PMImpl.makePersistent(PMImpl.java:232)
                at com.anritsu.eu.database.DatabaseImplementation.storeItem(Unknown Source)
                at com.anritsu.eu.database.DatabaseMessageStorer.newItemParsed(Unknown Source)
                at com.anritsu.eu.datalogger.parsing.RedactorMap.notifyRedactors(Unknown Source)
                at com.anritsu.eu.datalogger.parsing.MessagePrimitiveContentHandler.endElement(Unknown Source)
                at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.dtd.XMLNSDTDValidator.endNamespaceScope(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
                at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
                at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
                at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
                at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
                at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
                at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
                at com.anritsu.eu.datalogger.parsing.ParserGroupThreadRunner.run(Unknown Source)
                at java.lang.Thread.run(Unknown Source)

Can you please let me know the reason for the exceptions ?


It depends on the license type.

I see that you have an OEM license. In that case, only development machines require activation. Classes that are enhanced on an activated computer can be used on any other computer (activated or not).

But every development machine (i.e. a computer that is used for class enhancement) requires a separate activation. Use your license to activate all your development machine and include all the generated activation codes in the configuration file, so you will be able to share one configuration file for all the development machines.

ObjectDB Support

Hi ,

we are using OEM license to generate the activation code for individual build and development PC and in the past we have seen that when we don't put activation code for a machine in conf file the logs were not opening but recentely we have faced a strange issue , we have used a new build machine for which we have not generated any activation code and we built our application on this machine after installing the application on user pc we are able to open the logs without any issue , what could be the reason for this ?

Also how to find out which activation code corresponds to which machine and in case if we reimage the machine and change it's computer name do we need to generate a new activation code ?


Maybe the number of classes is less than 10 and the number of objects is less than one million? In that case, the database can be used with no activation.

With an OEM license you only have to activate development and build machines. The only way to tell which activation key belongs to which machine is to run the Activator again. However, why do you need that info? You can list all the activation keys that you have in one objectdb.conf file and share it between your machines. ObjectDB will automatically find matching activation key in the list.

ObjectDB Support