IBM Support

PK26512: FINDBUGS TOOL THROWS DC_DOUBLECHECK ON JAVA FILE GENERATED BY WSDL2JAVA.

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • FindBugs tool throws DC_DOUBLECHECK on java file generated by
    WSDL2java.  The java file shows:
    
     if (!_equals) { return false; }
     if (__history == null) {
         synchronized (this) {
             if (__history == null) {
                 __history = new java.lang.ThreadLocal();
             }
         }
     }
    
    This could cause some performance issue.
    

Local fix

  • n/a
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: WebSphere Application Server version 6       *
    *                 users of web services.                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: WSDL2Java Issue:                        *
    *                      FindBugs tool throws DC_DOUBLECHECK     *
    *                      on java file generated by WSDL2Java.    *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The WSDL2Java tool, when used with the "-genEquals yes"
    option, generates java code that demonstrates the undesireable
    version of the double-checked locking technique.
    
    An example of the generated java code is as follows:
    
    private transient java.lang.ThreadLocal __history;
    
    public boolean equals(java.lang.Object obj) {
    
        if (obj == null) { return false; }
    
        if (obj.getClass() != this.getClass()) { return false;}
    
        ....other code.....
        if (__history == null) {
    
            synchronized (this) {       <========================
    double-checked locking
    
                if (__history == null) {
    
                    __history = new java.lang.ThreadLocal();
    
                }
    
            }
    
        }
        ...other code....
    
    }
    
    
    
    private transient java.lang.ThreadLocal __hashHistory;
    
    public int hashCode() {
    
        if (__hashHistory == null) {
    
            synchronized (this) {       <========================
    double-checked locking
    
                if (__hashHistory == null) {
    
                    __hashHistory = new java.lang.ThreadLocal();
    
                }
    
            }
    
        }
    
        ....other code....
    }
    

Problem conclusion

  • The fix is to change the code that the WSDL2Java facility
    generates for the -genEquals option.  This code cannot use the
    double-checked locking technique.  Instead, the code must use
    a synchronized  accessor/initializer method.
    
    The fix for this APAR is currently targeted for inclusion
    in cumulative fix 6.0.2.13 and 6.1.0.1.
    Please refer to the recommended updates page for delivery
    information:
    http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
    

Temporary fix

Comments

APAR Information

  • APAR number

    PK26512

  • Reported component name

    WEBSPH APP SERV

  • Reported component ID

    5724J0800

  • Reported release

    60A

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2006-06-14

  • Closed date

    2006-06-23

  • Last modified date

    2006-07-20

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Modules/Macros

  • WEBSRVC
    

Fix information

  • Fixed component name

    WEBSPH APP SERV

  • Fixed component ID

    5724J0800

Applicable component levels

  • R60A PSY

       UP

  • R60H PSY

       UP

  • R60I PSY

       UP

  • R60P PSY

       UP

  • R60S PSY

       UP

  • R60W PSY

       UP

  • R60Z PSY

       UP

  • R61A PSY

       UP

  • R61H PSY

       UP

  • R61I PSY

       UP

  • R61P PSY

       UP

  • R61S PSY

       UP

  • R61W PSY

       UP

  • R61Z PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
18 October 2021