IBM Support

PI80477: JAXB FAILS TO UNMARSHAL ARRAYS WITH CUSTOM TYPE INSIDE @XMLELEMENT ANNOTATION

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Test showing the problem:
    
    The Input XML is:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BSSampleEvent><intArray>42</intArray><intArra y>13</intArray>
    </BS SamplEvent>
    
    Unmarshal snippet:
    
    public static void main(String[] args) throws
    UnsupportedEncodingException {
          BSSampleEvent result = JAXB.unmarshal(new
    ByteArrayInputStream
    ("...".getBytes("UTF8")), BSSampleEvent.class);
          System.out.println("intArray out: " +
    Arrays.toString(result.
    getIntArray()));
          if (!Arrays.equals(new int[] {42, 13},
    result.getIntArray())) {
             throw new AssertionError("Arrray not correct");
          }
       }
    
    The expected result after unmarshalling is that the field
    intArray is set to {43,13} but the actual result is null.
    

Local fix

  • Disable JAXB unmarshalling optimization by setting
    com.ibm.xml.xlxp.jaxb.opti.level to 2 or 0.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server                                      *
    ****************************************************************
    * PROBLEM DESCRIPTION: JAXB produces null value when           *
    *                      unmarshalling primitive type arrays     *
    *                      annotated with @XMLElement annotation   *
    *                      containing custom type.                 *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Problem is resolved and the to enable the fix requires a JVM
    this system property to be set. Default value is false.
    -Djaxb.fp.fallback.for.typed.arrays=true
    

Problem conclusion

Temporary fix

  • There are 2 possible fixes:
    1. Remove type attribute from @XMLElement annotation on the
    primitive array
    2. Enable com.ibm.xml.xlxp.jaxb.opti.level=2 system property
    

Comments

APAR Information

  • APAR number

    PI80477

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-04-24

  • Closed date

    2017-05-25

  • Last modified date

    2017-05-25

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

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

Fix information

  • Fixed component name

    WEBS APP SERV N

  • Fixed component ID

    5724H8800

Applicable component levels

  • R800 PSY

       UP

  • R850 PSY

       UP

  • R900 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
19 October 2021