upgrade to JChem 5.3

User 870ab5b546

28-02-2010 03:10:16

I've upgraded from JChem 5.2 to 5.3.  We have licenses.dat and license.cxl files in ~tomcat6/.chemaxon/ .  When I restart my Web application, I get this error:


Feb 27, 2010 9:54:43 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /epoch-plugin threw load() exception
java.security.AccessControlException: access denied (java.lang.RuntimePermission createSecurityMan
ager)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.<init>(SecurityManager.java:282)
at chemaxon.license.LicenseHandler$InternalLicenseUsageChecker.<init>(Unknown Source)
at chemaxon.license.LicenseHandler.<init>(Unknown Source)
at chemaxon.license.LicenseHandler$SingletonHolder.<clinit>(Unknown Source)
at chemaxon.license.LicenseHandler.getInstance(Unknown Source)
at chemaxon.sss.search.MolSearch.checkLicense(MolSearch.java:1990)
at chemaxon.sss.search.MolSearch.setQuery(MolSearch.java:396)
at chemaxon.reaction.ReactionUtil.areAllChangingAtomsMapped(ReactionUtil.java:436)
at chemaxon.reaction.Reaction.setReaction(Reaction.java:938)
at chemaxon.reaction.Reaction.setReaction(Reaction.java:901)
at chemaxon.reaction.Reaction.setReaction(Reaction.java:872)
at chemaxon.reaction.ReactorConfiguration.getReaction(ReactorConfiguration.java:695)
at chemaxon.reaction.ReactorConfiguration.getReaction(ReactorConfiguration.java:665)
at chemaxon.reaction.StandardizerConfiguration.read(StandardizerConfiguration.java:163)
at chemaxon.reaction.StandardizerConfiguration.readXML(StandardizerConfiguration.java:112)
at chemaxon.reaction.StandardizerConfiguration.read(StandardizerConfiguration.java:63)
at chemaxon.reaction.StandardizerConfiguration.read(StandardizerConfiguration.java:81)
at chemaxon.reaction.Standardizer.<init>(Standardizer.java:323)
at com.prenhall.epoch.servlets.GroupLoader.loadAppConfig(GroupLoader.java:110)

And the web app has failed to start properly.  On the command line:


bob@epoch:tomcat6$ license -p Standardizer
Software: Standardizer
License Term: Annual
Licensee: Academic Pacckage - Research
Number of Users: 0
Expiration Date: 2010-09-18
Support Expiration Date: 2010-09-18
Comment: 2 year license for academic research only. Commercial research is not covered in this license. Personal license and can be updated by updating application with citations
IntegratedWith: true
Server Use: Not Allowed

So, why is server use not allowed, how do I get a license that allows it, and why is this problem only occurring since I upgraded to JChem 5.3?  

User 870ab5b546

01-03-2010 15:11:23

Alex provided me with new licenses, but I am still getting errors.  Here is the entire log of the startup process:


Mar 1, 2010 9:52:53 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-9080
Mar 1, 2010 9:52:53 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1661 ms
Mar 1, 2010 9:52:53 AM org.apache.catalina.users.MemoryUserDatabase save
WARNING: User database is not persistable - no write permissions on directory
Mar 1, 2010 9:52:53 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Mar 1, 2010 9:52:53 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
Mar 1, 2010 9:52:55 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/WEB-INF/lib/servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Mar 1, 2010 9:52:58 AM org.apache.catalina.core.ApplicationContext log
INFO: GroupLoader: Entering init().
GroupLoader.initStandalone: chimp_conf_file = /home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/WEB-INF/chimp.properties
GroupLoader.loadAppConfig: appRoot = /home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/
GroupLoader.loadAppConfig: directories = [/usr/bin/, /home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/logger/, /home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/temp/]

Mar 1, 2010 9:52:58 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /epoch-plugin threw load() exception
java.security.AccessControlException: access denied (java.lang.RuntimePermission createSecurityManager)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.<init>(SecurityManager.java:282)
at chemaxon.license.LicenseHandler$InternalLicenseUsageChecker.<init>(Unknown Source)
at chemaxon.license.LicenseHandler.<init>(Unknown Source)
at chemaxon.license.LicenseHandler$SingletonHolder.<clinit>(Unknown Source)
at chemaxon.license.LicenseHandler.getInstance(Unknown Source)
at chemaxon.sss.search.MolSearch.checkLicense(MolSearch.java:1990)
at chemaxon.sss.search.MolSearch.setQuery(MolSearch.java:396)
at chemaxon.reaction.ReactionUtil.areAllChangingAtomsMapped(ReactionUtil.java:436)
at chemaxon.reaction.Reaction.setReaction(Reaction.java:938)
at chemaxon.reaction.Reaction.setReaction(Reaction.java:901)
at chemaxon.reaction.Reaction.setReaction(Reaction.java:872)
at chemaxon.reaction.ReactorConfiguration.getReaction(ReactorConfiguration.java:695)
at chemaxon.reaction.ReactorConfiguration.getReaction(ReactorConfiguration.java:665)
at chemaxon.reaction.StandardizerConfiguration.read(StandardizerConfiguration.java:163)
at chemaxon.reaction.StandardizerConfiguration.readXML(StandardizerConfiguration.java:112)
at chemaxon.reaction.StandardizerConfiguration.read(StandardizerConfiguration.java:63)
at chemaxon.reaction.StandardizerConfiguration.read(StandardizerConfiguration.java:81)
at chemaxon.reaction.Standardizer.<init>(Standardizer.java:323)
at com.prenhall.epoch.servlets.GroupLoader.loadAppConfig(GroupLoader.java:110)
at com.prenhall.epoch.servlets.GroupLoader.initStandalone(GroupLoader.java:65)
at com.prenhall.epoch.servlets.GroupLoader.init(GroupLoader.java:48)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:115)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1166)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4367)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123)
at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:177)
Mar 1, 2010 9:52:58 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-9080
Mar 1, 2010 9:52:58 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 5727 ms

BTW, /home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/WEB-INF/lib/servlet.jar is a symlink to jchem5.3.1/lib/servlet.jar.  Could this file be causing a problem?


Just as an example, the license.cxl file has this section for Standardizer:


<License>
<Field Name="Software" Value="Standardizer"/>
<Field Name="License Term" Value="VAR Developer License"/>
<Field Name="Licensee" Value="Ace Organic"/>
<Field Name="Number of Users" Value="Unlimited"/>
<Field Name="Expiration Date" Value="2010-09-01"/>
<Field Name="Support Expiration Date" Value="2010-09-01"/>
<Restriction Name="Server Use" Value="Allowed"/>
<Signature Value="[excised]"/>
</License>

User 870ab5b546

01-03-2010 16:44:09

Refoyl has this hypothesis:


My best guess, based on this message:

> java.security.AccessControlException: access denied (java.lang.RuntimePermission createSecurityManager)
>     at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
>     at java.security.AccessController.checkPermission(AccessController.java:546)
>     at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)

is that JChem is trying to establish its own security manager.   But
Tomcat6 already has established a security manager; attempting to
establish a second one fails.

I can add a permission to Tomcat6's security settings allowing JChem to
replace the security manager, but then the replacement might fail to
honor the existing security settings, such as allowing writes to the
temp directory.

He asked me to confirm the hypothesis with you.  Please respond soon; our application is completely unusable until these problems are resolved.

ChemAxon e274e1bada

01-03-2010 17:28:06

Hi,


we are trying to reproduce the situation and find the error.


Edvard

User 870ab5b546

02-03-2010 00:26:31

I managed to get rid of one error, anyway:


Mar 1, 2010 9:52:55 AM org.apache.catalina.loader.WebappClassLoader validateJarFile

INFO: validateJarFile(/home/aceorg/aceorg/DEV-2.2/epoch-plugin/web/WEB-INF/lib/servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

by removing the hyperlink to jchem/lib/servlet.jar from my webapp's WEB-INF/lib directory.


However, I'm still getting the AccessControlException, as described above.

User 870ab5b546

02-03-2010 20:15:33

We succeeded in getting rid of the AccessControlException.  We set


permission java.security.AllPermission;

in Tomcat's security settings.  Everything now compiles error-free.  However, we are wondering what security settings JChem may set that would override the Tomcat settings.  Can you enlighten us?


This also works:


permission java.lang.RuntimePermission "createSecurityManager";

ChemAxon e274e1bada

02-03-2010 22:19:15

Some things are changed in the license checker from the 5.3 and it makes an instance of Security Manager. It hasn't produced problem before your case. It may be a serious problem, we have to inspect it and change the license checker if it is needed.
We will come back with the conclusions.


Edvard