IBM Support

PH19871: bo attributes are not working correctly after upgrading to WebSphere 8.5.5.16

Download


Downloadable File

File link File size File description

Abstract

bo attributes are not working correctly after upgrading to WebSphere Application Server 8.5.5.16

Download Description

PH19871 resolves the following problem:

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 might be missing. The problem only occurs in BO Mode EMF (eager).

LOCAL FIX:
none

USERS AFFECTED:
All users of IBM WebSphere Application Server V8.5.5.16 who also use IBM Business Process Manager

PROBLEM DESCRIPTION:
After applying WebSphere Application Server V8.5.5.16, the handling of BO attributes (@attrname) is not working correctly.

RECOMMENDATION:
None
 
PROBLEM SUMMARY:
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 Business 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 being 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

Prerequisites

None

Installation Instructions

Please review the readme.txt for detailed installation instructions.

URL SIZE(Bytes)
V85 Readme 9929
V90 Readme 9849

Download Package

DOWNLOAD RELEASE DATE SIZE(Bytes) DOWNLOAD Options
What is Fix Central(FC)?
8.5.5.16-WS-WASProd-IFPH19871 03 February 2020 334368 FC
9.0.5.1-WS-WASProd-IFPH19871 03 February 2020 340283 FC

Problems Solved

PH19871

On

Technical Support

Contact IBM Support by using SR (http://www.ibm.com/software/support/probsub.html), visit the support web site, or contact 1-800-IBM-SERV (US only).

Document Location

Worldwide

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Component":"General","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF012","label":"IBM i"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF035","label":"z\/OS"}],"Version":"8.5.5.16;9.0.5.1;9.0.5.2","Edition":"Base,Developer,Network Deployment","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
03 February 2020

UID

ibm11127043