You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by tschuler <th...@opentext.com> on 2014/02/04 13:26:14 UTC

Blocked threads in URLClassLoaderFirst

Hi!

We use TomEE 1.6.0.
We are facing a serious problem in URLClassLoaderFirst as threads get
blocked:


Blocking thread:
---------------

"http-bio-28080-exec-3" - Thread t@795
   java.lang.Thread.State: RUNNABLE
	at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
	at java.io.File.exists(File.java:733)
	at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:999)
	at sun.misc.URLClassPath.getResource(URLClassPath.java:169)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at
org.apache.openejb.util.classloader.URLClassLoaderFirst.loadInternal(URLClassLoaderFirst.java:164)
	at
org.apache.openejb.util.classloader.URLClassLoaderFirst.loadClass(URLClassLoaderFirst.java:117)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at serp.util.Strings.toClass(Strings.java:162)
	at serp.util.Strings.toClass(Strings.java:108)
	at org.apache.openjpa.kernel.QueryImpl.toClass(QueryImpl.java:1691)
	at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1650)
	[...]
	at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	- locked <a0759a6> (a org.apache.tomcat.util.net.SocketWrapper)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
   JNI locked monitors:
	- locked <3916386e> (a
org.apache.openejb.util.classloader.URLClassLoaderFirst)


One of the blocked threads:
---------------------------

"http-bio-28080-exec-21" - Thread t@4374
   java.lang.Thread.State: BLOCKED
	at java.lang.Class.forName0(Native Method)
	- waiting to lock <3916386e> (a
org.apache.openejb.util.classloader.URLClassLoaderFirst) owned by
"http-bio-28080-exec-42" t@8262
	at java.lang.Class.forName(Class.java:247)
	at serp.util.Strings.toClass(Strings.java:162)
	at serp.util.Strings.toClass(Strings.java:108)
	at org.apache.openjpa.kernel.QueryImpl.toClass(QueryImpl.java:1691)
	at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1633)
	at
org.apache.openjpa.kernel.ExpressionStoreQuery$1.classForName(ExpressionStoreQuery.java:113)
	[...]
	at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	- locked <5eb38f30> (a org.apache.tomcat.util.net.SocketWrapper)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)


What can be done to avoid the blocking?

Best regards,
T



--
View this message in context: http://openejb.979440.n4.nabble.com/Blocked-threads-in-URLClassLoaderFirst-tp4667476.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Re: Blocked threads in URLClassLoaderFirst

Posted by Andy <ag...@tomitribe.com>.
Can you share a full thread dump - I think there may be an issue, but 
would like to see the full picture.

Andy.

Re: Blocked threads in URLClassLoaderFirst

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi

I think both properties are for embedded mode only. The classloader is
well done but few classes are skipped from the webapp (jvm and
container...but sometimes some name(s) can conflict)
Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau



2014-02-05 tschuler <th...@opentext.com>:
> Hi Romain!
>
> It is Microsoft Windows Server 2008 R2 Enterprise, 64 bit (Java 1.7.0_21).
>
> BTW: Which classpath is used for classloading if no changes there done to
> openejb.deployments.package settings?
>
> I think default is:
> openejb.deployments.package.include = .*
> openejb.deployments.package.exclude =
>
> Best regards,
> Thomas
>
>
>
> --
> View this message in context: http://openejb.979440.n4.nabble.com/Blocked-threads-in-URLClassLoaderFirst-tp4667476p4667499.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.

Re: Blocked threads in URLClassLoaderFirst

Posted by Andy <an...@orprovision.com>.
Thomas,

I've commited a potential fix in the TomEE trunk: 
https://svn.apache.org/repos/asf/tomee/tomee/trunk

If you could test your app on it that would help.

Andy.


Re: Blocked threads in URLClassLoaderFirst

Posted by tschuler <th...@opentext.com>.
Hi Romain!

It is Microsoft Windows Server 2008 R2 Enterprise, 64 bit (Java 1.7.0_21).

BTW: Which classpath is used for classloading if no changes there done to
openejb.deployments.package settings?

I think default is:
openejb.deployments.package.include = .*
openejb.deployments.package.exclude = 

Best regards,
Thomas



--
View this message in context: http://openejb.979440.n4.nabble.com/Blocked-threads-in-URLClassLoaderFirst-tp4667476p4667499.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Re: Blocked threads in URLClassLoaderFirst

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi

this is a windows issue. You surely have something (IDE? Console? ...)
locking the file the classloader is trying to access. Tomcat has
antiJARLocking option btw, not sure it would help that much but was
originally intended for it (I can't recall if they removed it in last
version or not but was under discussion if I'm not mistaken).

BTW which windows do you use? XP?

Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau



2014-02-04 tschuler <th...@opentext.com>:
> Hi!
>
> We use TomEE 1.6.0.
> We are facing a serious problem in URLClassLoaderFirst as threads get
> blocked:
>
>
> Blocking thread:
> ---------------
>
> "http-bio-28080-exec-3" - Thread t@795
>    java.lang.Thread.State: RUNNABLE
>         at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
>         at java.io.File.exists(File.java:733)
>         at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:999)
>         at sun.misc.URLClassPath.getResource(URLClassPath.java:169)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>         at
> org.apache.openejb.util.classloader.URLClassLoaderFirst.loadInternal(URLClassLoaderFirst.java:164)
>         at
> org.apache.openejb.util.classloader.URLClassLoaderFirst.loadClass(URLClassLoaderFirst.java:117)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:247)
>         at serp.util.Strings.toClass(Strings.java:162)
>         at serp.util.Strings.toClass(Strings.java:108)
>         at org.apache.openjpa.kernel.QueryImpl.toClass(QueryImpl.java:1691)
>         at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1650)
>         [...]
>         at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>         at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>         at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>         - locked <a0759a6> (a org.apache.tomcat.util.net.SocketWrapper)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
>    JNI locked monitors:
>         - locked <3916386e> (a
> org.apache.openejb.util.classloader.URLClassLoaderFirst)
>
>
> One of the blocked threads:
> ---------------------------
>
> "http-bio-28080-exec-21" - Thread t@4374
>    java.lang.Thread.State: BLOCKED
>         at java.lang.Class.forName0(Native Method)
>         - waiting to lock <3916386e> (a
> org.apache.openejb.util.classloader.URLClassLoaderFirst) owned by
> "http-bio-28080-exec-42" t@8262
>         at java.lang.Class.forName(Class.java:247)
>         at serp.util.Strings.toClass(Strings.java:162)
>         at serp.util.Strings.toClass(Strings.java:108)
>         at org.apache.openjpa.kernel.QueryImpl.toClass(QueryImpl.java:1691)
>         at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1633)
>         at
> org.apache.openjpa.kernel.ExpressionStoreQuery$1.classForName(ExpressionStoreQuery.java:113)
>         [...]
>         at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>         at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>         at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>         - locked <5eb38f30> (a org.apache.tomcat.util.net.SocketWrapper)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
>
>
> What can be done to avoid the blocking?
>
> Best regards,
> T
>
>
>
> --
> View this message in context: http://openejb.979440.n4.nabble.com/Blocked-threads-in-URLClassLoaderFirst-tp4667476.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.