classloading problem prevents Wildfly from running (Wildfly 10.1, LogManager, IBM JDK8, yajsw)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

classloading problem prevents Wildfly from running (Wildfly 10.1, LogManager, IBM JDK8, yajsw)

Will Milspec
Hi all,

I've run into a classloading problem that prevents wildfly 10.1 from running with the following stack:

-Wildfly 10.1
-IBM JDK 8 (the latest, 8.0-3.12)
-YAJSW ("Yet Another Java Service Wrapper")
-Ubuntu 14.04 linux AMD 64

LogManager Classloader check fails with IBMJDK8 and YAJSW
==========================================================
This stack fails because wildfly/jboss thinks the logManager is not loaded properly.

Wildfly concludes as such because this check returns true:
     if (LogManager.getLogManager().getClass() == LogManager.class) {

To clarify:  with this tech stack, the system classloader loads both LogManager.getLogManager() and LogManager.class. Thus the two classes are identical, i.e. "=="

I'll call this stack:
Stack1) IBMJDK8 and Yajsw

Log Manager Classloader check succeeds with other stacks
==========================================================
This 'class==" check succeeds (returns false) in all other stacks I've tested with Wildfly 10.1

Stack2) IBMJDK8 from the command line (no yasw)
Stack3) Oracle JDK8 with yajsw
Stack4) Oracle JDK8 from the command line (no yajsw)


With stacks 2-4, the jboss-module-classloader loads "LogManager.getLogManager()", whereas the system classloader loads "LogManager.class"

I have no idea why the difference, i.e. why "ibmjdk8 and yajsw" uses "system classloader" to load LogManager.getLogManager and why the difference for the other stacks.

Note that between "Stack1" and "Stack2", I only changed "which java command". All other configurations are identical.

Code Details: Where this check occurs
=============================
I've searched the wildfly code and found this check in two places:
   jboss-modules: Main.java
   wildfly-core: LoggingExtension.java

I may have missed something. (I checked the versions in the shipped-with-wildfly-10.1 jar, cloned the various git repos and checked out the corresponding versions for jboss-modules and wildlfy-core)

Xref, Xpost
===================
As this problem has several components, I've posted it in a few places: yajsw forums, ibm jdk forums etc.

Yeah, I know cross-posting is bad form. Mea culpa. But as user, I did not know (and still don't) if the problem lies in "yajsw code" or "wildfly/jboss code" or in the IBM JDK. This is "low-level stuff"

Other posts (same information):
https://www.ibm.com/developerworks/community/forums/html/topic?id=8e9e4ae2-53a7-42e8-8086-6208b80e2910&ps=25

https://sourceforge.net/p/yajsw/discussion/810311/thread/e730451b/?limit=25


Questions
=====================
-Any workarounds? (i've tried all sorts of tweaks, all dead end)

-Any idea why the difference, i.e. why would systemclassloader load "LogManager.getLogManager()" with "Stack1" vs "Stacks2-4"

thanks in advance!

_______________________________________________
wildfly-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/wildfly-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: classloading problem prevents Wildfly from running (Wildfly 10.1, LogManager, IBM JDK8, yajsw)

Jaikiran Pai-2
WildFly forums https://developer.jboss.org/en/wildfly would be a better place to discuss this. When you open the thread there, can you post what the startup wrapper script for YAJSW look like?

-Jaikiran

On Wednesday 26 October 2016 07:50 PM, Will Milspec wrote:
Hi all,

I've run into a classloading problem that prevents wildfly 10.1 from running with the following stack:

-Wildfly 10.1
-IBM JDK 8 (the latest, 8.0-3.12)
-YAJSW ("Yet Another Java Service Wrapper")
-Ubuntu 14.04 linux AMD 64

LogManager Classloader check fails with IBMJDK8 and YAJSW
==========================================================
This stack fails because wildfly/jboss thinks the logManager is not loaded properly.

Wildfly concludes as such because this check returns true:
     if (LogManager.getLogManager().getClass() == LogManager.class) {

To clarify:  with this tech stack, the system classloader loads both LogManager.getLogManager() and LogManager.class. Thus the two classes are identical, i.e. "=="

I'll call this stack:
Stack1) IBMJDK8 and Yajsw

Log Manager Classloader check succeeds with other stacks
==========================================================
This 'class==" check succeeds (returns false) in all other stacks I've tested with Wildfly 10.1

Stack2) IBMJDK8 from the command line (no yasw)
Stack3) Oracle JDK8 with yajsw
Stack4) Oracle JDK8 from the command line (no yajsw)


With stacks 2-4, the jboss-module-classloader loads "LogManager.getLogManager()", whereas the system classloader loads "LogManager.class"

I have no idea why the difference, i.e. why "ibmjdk8 and yajsw" uses "system classloader" to load LogManager.getLogManager and why the difference for the other stacks.

Note that between "Stack1" and "Stack2", I only changed "which java command". All other configurations are identical.

Code Details: Where this check occurs
=============================
I've searched the wildfly code and found this check in two places:
   jboss-modules: Main.java
   wildfly-core: LoggingExtension.java

I may have missed something. (I checked the versions in the shipped-with-wildfly-10.1 jar, cloned the various git repos and checked out the corresponding versions for jboss-modules and wildlfy-core)

Xref, Xpost
===================
As this problem has several components, I've posted it in a few places: yajsw forums, ibm jdk forums etc.

Yeah, I know cross-posting is bad form. Mea culpa. But as user, I did not know (and still don't) if the problem lies in "yajsw code" or "wildfly/jboss code" or in the IBM JDK. This is "low-level stuff"

Other posts (same information):
https://www.ibm.com/developerworks/community/forums/html/topic?id=8e9e4ae2-53a7-42e8-8086-6208b80e2910&ps=25

https://sourceforge.net/p/yajsw/discussion/810311/thread/e730451b/?limit=25


Questions
=====================
-Any workarounds? (i've tried all sorts of tweaks, all dead end)

-Any idea why the difference, i.e. why would systemclassloader load "LogManager.getLogManager()" with "Stack1" vs "Stacks2-4"

thanks in advance!


_______________________________________________
wildfly-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/wildfly-dev


_______________________________________________
wildfly-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/wildfly-dev
Loading...