ChemAxon 5433b8e56b
29-07-2010 12:36:59
Hi,
One of our customers has noticed the following issue: if you have separate applets in one html page, then the clipboard communication can run into an error, and the problem can only be solved with the restarting of the applet.
This issue is based on the fact that the applets are sharing the classloader, and some static references can be ruined.
The following stack trace on the java console when the clipboard is being disabled due to this problem:
Exception in thread "pool-4-thread-1" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown Source)
at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-3" java.lang.IllegalThreadStateException
at java.lang.ThreadGroup.addUnstarted(Unknown Source)
at java.lang.Thread.init(Unknown Source)
at java.lang.Thread.<init>(Unknown Source)
at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.addThread(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.execute(Unknown Source)
at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at java.util.concurrent.Executors$DelegatedExecutorService.submit(Unknown Source)
at chemaxon.marvin.modules.datatransfer.ClipboardHandler.c(Unknown Source)
at chemaxon.marvin.modules.datatransfer.ClipboardHandler.putMoleculeToClipboard(Unknown Source)
at chemaxon.marvin.common.swing.MolPanel.setMClipboardMol(Unknown Source)
at chemaxon.marvin.view.swing.ViewPanel.a(Unknown Source)
at chemaxon.marvin.view.swing.ViewPanel.doCopy(Unknown Source)
at chemaxon.marvin.swing.action.CopyAction.doAction(Unknown Source)
at chemaxon.marvin.swing.MAction.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
We are wokring on to fix this issue, meanwhile if you are facing this problem, you can use the separate_jvm applet parameter to force the java plugin to allocate separate jvm-s for the applets. This solution is working in java 1.6.0_10 and above java versions.
Thank you for your patience, we will notify you in this topic when the fix is ready.
Best whishes,
Istvan