JPPF Issue Tracker
star_faded.png
Please log in to bookmark issues
bug_report_small.png
CLOSED  Bug report JPPF-180  -  Client class loading issues when using Weblogic 10.3.6 remote JDBC
Posted Aug 14, 2013 - updated Aug 19, 2013
icon_info.png This issue has been closed with status "Closed" and resolution "RESOLVED".
Issue details
  • Type of issue
    Bug report
  • Status
     
    Closed
  • Assigned to
     lolo4j
  • Progress
       
  • Type of bug
    Not triaged
  • Likelihood
    Not triaged
  • Effect
    Not triaged
  • Posted by
     lolo4j
  • Owned by
    Not owned by anyone
  • Category
    Client
  • Resolution
    RESOLVED
  • Priority
    Normal
  • Reproducability
    Always
  • Severity
    Normal
  • Targetted for
    icon_milestones.png JPPF 3.3.6
Issue description
Full explanation in this forum topic: http://www.jppf.org/forums/index.php/topic,3095.0.html
Steps to reproduce this issue

#3
Comment posted by
 lolo4j
Aug 14, 08:41
Full explanation of the problem:
  • when the node sends a class loading request for the jdbc connection wrapper class (weblogic/jdbc/rmi/internal/..._oracle_jdbc_driver_LogicalConnection_RemoteInterface.class), the JPPF code looks it up using the Weblogic class loader for the JCA connector (a weblogic.utils.classloaders.ChangeAwareClassLoader), using the getResource() method, which returns a single URL pointing to the class file.
  • for this connection class, getResource() actually returns "file:/<WL_HOME>/modules/com.bea.core.utils.wrapper_1.4.0.0.jar". So this is what was returned to the node. It also explains both the ClassFormatError and the "Incompatible magic value 1347093252" message, since 1347093252 is the 4-bytes signature of a zip (or jar) file.
  • however, when using the getResources() method to lookup the same class, this returns an empty Enumeration of URLs, which is the expected behavior. This will cause the node class loader to throw a ClassNotFoundException, which is caught by the Weblogic code in wlfullclient.jar, and then the Weblogic code will actually generate this class.
The fix is to use cl.getResources() instead of cl.getResource() in org.jppf.classloader.ResourceProvider.getResource(String resName, ClassLoader classLoader).