IBM Support

PH19871: BO ATTRIBUTES ARE NOT WORKING CORRECTLY AFTER UPGRADING TO WEBSPHERE 8.5.5.16

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

APAR status

  • Closed as program error.

Error description

  • After applying WebSphere 8.5.5.16, the handling of BO
    attributes (@attrname) is not working correctly.
    
    After
    constructing the DataObject, child elements may be missing. The
    problem only occurs in BO Mode EMF (eager).
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V8.5.5.16 who also use IBM Business  *
    *                  Process Management                          *
    ****************************************************************
    * PROBLEM DESCRIPTION: After applying WebSphere Application    *
    *                      Server V8.5.5.16, the handling of BO    *
    *                      attributes (@attrname) is not           *
    *                      working correctly.                      *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The handling of BO attributes (@attrname) does not work when
    WebSphere Application Server V8.5.5.16 is in use.
    For example "bo.@name" might refer to the same data item as
    "bo.name". This is at least the case if there exists a BO
    element and a BO attribute with the same name.
    In our testcase, the invoked JSP (index.jsp) sets the element
    "name" of the BO "CompanyInfo" to "test1",
    and expects the Busines rules executed as "operation1" to
    return
    a value of --> "test2" for the BO element "name" and
    a value of --> "test1" for the BO attribute "name" (@name):
    Here is an excerpt of index.jsp:
    DataObject input = DataFactory.INSTANCE.create(type);
    bo =
    boFactory.create("http://www.example.org/CompanyInfo","CompanyIn
    fo");
    bo.setString("name","test1");
    input.setDataObject(0,bo);
    System.out.println("enter operation1 of BRXSD01!!!!!");
    DataObject result = (DataObject)
    service.invoke("operation1",input);
    String name_e=
    result.getDataObject("output1").getString("name");
    String name_a=
    result.getDataObject("output1").getString("@name");
    System.out.println("name_e of BRXSD01 is "+name_e);
    System.out.println("name_a of BRXSD01 is "+name_a);
    ...
    if(name_e.equals("test2")&&name_a.equals("test1")){
    target_res="BRXSD01PASSED";...
    This is the ruleset beeing executed:
    <rl:RuleSet
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:BRXSD01_I="http://TestBRXSD/BRXSD01_I"
    xmlns:CompanyInfo="http://www.example.org/CompanyInfo"
    xmlns:data="http://TestBRXSD/ibm/br/data"
    xmlns:rl="http://www.ibm.com/xmlns/prod/websphere/wbi/br/6.0.0"
    xmlns:xml.type="commonj.sdo" displayName="XSD01RS"
    name="XSD01RS" syncDisplayName="true"
    targetNamespace="http://TestBRXSD/ibm/br/data">
    <rl:interface operation="operation1">
    <rl:porttype>BRXSD01_I:BRXSD01_I</rl:porttype>
    </rl:interface>
    <rl:rulegroup>data:BRXSD01_G</rl:rulegroup>
    <rl:local dataType="CompanyInfo:CompanyInfo" varName="var1"/>
    <rl:local dataType="xml.type:string" varName="var2"/>
    <rl:property name="IBMSystemVersion" type="SystemDefined"
    value="6.1.0"/>
    <rl:RuleBlock>
    <rl:rule xsi:type="rl:AssertionRule" displayName="Rule1"
    label="Rule1" syncDisplayName="true">
    <rl:assert>
    <rl:Action value="var1.name = input1.name"/>
    <rl:Action value="var1.@name ="test2""/>
    <rl:Action value="var2 = var1.name"/>
    <rl:Action value="output1.name = var1.@name"/>
    <rl:Action value="output1.@name = var2"/>
    </rl:assert>
    </rl:rule>
    </rl:RuleBlock>
    </rl:RuleSet>
    CompanyInfo is defined like this, it has an element named
    "name" as well as an attribute named "name":
    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.org/CompanyInfo"
    xmlns:tns="http://www.example.org/CompanyInfo">
    <element name="company" type="tns:CompanyInfo"></element>
    <complexType name="CompanyInfo">
    <sequence>
    <element name="name" type="string"></element>
    </sequence>
    <attribute name="name" type="string"></attribute>
    </complexType>
    </schema>
    This is an excerpt of the trace showing that name_e as well as
    name_a finally have a value of "test2":
    89373 38:[10/22/19 20:15:14:352 CST] 00000669 SystemOut O
    [BPCGATT] Execute GET request:
    https://TAPALLINONE:9087/TestBRXSDWeb/index.jsp
    93771 38:[10/22/19 20:15:15:321 CST] 000001f2 SystemOut O
    enter operation1 of BRXSD01!!!!!
    94105 55: [0] = BusinessObject: CompanyInfo@e15972f4
    (name=test1)
    95343 55: [0] = BusinessObject: CompanyInfo@e15972f4
    (name=test1)
    96667 55: [0] = BusinessObject: CompanyInfo@e15972f4
    (name=test1)
    97424 2:<rl:RuleSet
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:BRXSD01_I="http://TestBRXSD/BRXSD01_I"
    xmlns:CompanyInfo="http://www.example.org/CompanyInfo"
    xmlns:data="http://TestBRXSD/ibm/br/data"
    xmlns:rl="http://www.ibm.com/xmlns/prod/websphere/wbi/br/6.0.0"
    xmlns:xml.type="commonj.sdo" displayName="XSD01RS"
    name="XSD01RS" syncDisplayName="true"
    targetNamespace="http://TestBRXSD/ibm/br/data">
    97425 4: <rl:interface operation="operation1">
    97426 6: <rl:porttype>BRXSD01_I:BRXSD01_I</rl:porttype>
    97426 39: <rl:porttype>BRXSD01_I:BRXSD01_I</rl:porttype>
    97427 5: </rl:interface>
    97428 4: <rl:rulegroup>data:BRXSD01_G</rl:rulegroup>
    97428 33: <rl:rulegroup>data:BRXSD01_G</rl:rulegroup>
    97429 4: <rl:local dataType="CompanyInfo:CompanyInfo"
    varName="var1"/>
    97430 4: <rl:local dataType="xml.type:string" varName="var2"/>
    97431 4: <rl:property name="IBMSystemVersion"
    type="SystemDefined" value="6.1.0"/>
    97432 4: <rl:RuleBlock>
    97433 6: <rl:rule xsi:type="rl:AssertionRule"
    displayName="Rule1" label="Rule1" syncDisplayName="true">
    97433 24: <rl:rule xsi:type="rl:AssertionRule"
    displayName="Rule1" label="Rule1" syncDisplayName="true">
    97434 8: <rl:assert>
    97435 10: <rl:Action value="var1.name = input1.name"/>
    97436 10: <rl:Action value="var1.@name ="test2""/>
    97436 44: <rl:Action value="var1.@name ="test2""/>
    97437 10: <rl:Action value="var2 = var1.name"/>
    97438 10: <rl:Action value="output1.name = var1.@name"/>
    97439 10: <rl:Action value="output1.@name = var2"/>
    97440 9: </rl:assert>
    97441 7: </rl:rule>
    97442 5: </rl:RuleBlock>
    97443 3:</rl:RuleSet>
    97830 152:[10/22/19 20:15:15:555 CST] 000001f2 BOCopy >
    com.ibm.ws.bo.service.BOCopyImpl copy(DataObject) ENTRY
    BusinessObject: CompanyInfo@4edc225a (name=test2)
    97831 153:[10/22/19 20:15:15:555 CST] 000001f2 BOCopy <
    com.ibm.ws.bo.service.BOCopyImpl copy(DataObject) RETURN
    BusinessObject: CompanyInfo@cc83dbaa (name=test2)
    98538 55: [0] = BusinessObject: CompanyInfo@cc83dbaa
    (name=test2)
    99738 55: [0] = BusinessObject: CompanyInfo@cc83dbaa
    (name=test2)
    100208 55: [0] = BusinessObject: CompanyInfo@cc83dbaa
    (name=test2)
    100234 76:[10/22/19 20:15:15:602 CST] 000001f2 SystemOut O
    name_e of BRXSD01 is test2
    100235 76:[10/22/19 20:15:15:602 CST] 000001f2 SystemOut O
    name_a of BRXSD01 is test2
    100236 38:[10/22/19 20:15:15:602 CST] 000001f2 SystemOut O
    result (DataObject):
    com.ibm.ws.sca.internal.multipart.impl.ManagedMultipartImpl@e0ff
    4e48 (eClass: BusinessObjectType:
    operation1Response_._type@40259f03
    (namespace=wsdl:http://TestBRXSD/BRXSD01_I,
    instanceClass=com.ibm.wsspi.sca.multipart.Multipart,
    schema=jar:file:/C:/IBM/BPM/profiles/Custom01/installedApps/TAPA
    LLINONECell01/TestBRXSDApp.ear/TestBRXSD.jar!/ibm/br/data/BRXSD0
    1_I.wsdl))
    100237 38:[10/22/19 20:15:15:602 CST] 000001f2 SystemOut O
    exit operation1 of BRXSD01!!!!!
    

Problem conclusion

  • In PH12669, code was added to provide some level of thread
    safety to a particular part of the EMF (Eclipse Modeling
    Framework) library included with WebSphere Application Server.
    The update in PH12669 caused the problem.  The code has been
    updated to fix the problem.
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 8.5.5.17 and 9.0.5.3.  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

    PH19871

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-12-03

  • Closed date

    2019-12-06

  • Last modified date

    2019-12-11

  • 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



Document information

More support for: WebSphere Application Server
General

Software version: 850

Reference #: PH19871

Modified date: 11 December 2019