Technical Notes |
|
This technical note describes recommendations for designers using Transaction Designer and Web Builder tools in Verastream Transaction Integrator. This information is primarily oriented to building Task Beans in Java projects, but some information is applicable to other project types as well.
This document includes the following information:
A name clash issue may occur with multiple transactions or projects using the same COBOL copybook information, and running the Web Builder-generated project JARs in the same Java VM. This issue is more likely to occur in environments with multiple designers working collaboratively in Transaction Designer.
This issue results in a runtime Java exception java.lang.NoSuchMethodError.
The .jar file contains a .class file for the copybook data structure. The first .jar file in the CLASSPATH loads successfully, but subsequent .jar files contain a duplicate class name so will not load.
To avoid this issue: In Web Builder, in the properties for each Java project, specify a unique Package Name. For example:
com.mycompany.myProject.myCicsProgramNameClient operation names should be unique across projects and business applications because Verastream Transaction Integrator generates Java class names based on the client operation name. Client operations with duplicate names cannot run in the same Java VM. Additionally, different projects that use the same client operation name (each defined differently) may create unexpected results.
To ensure uniqueness, a suggested technique is to use the CICS program name or project name in the client operation name.
If a client operation input text field value is not set, then binary zero (non-EBCDIC) 00 values are used in the input COMMAREA bytes, which may cause unexpected runtime results that vary by host program transaction. (Note: This behavior is different than that in the predecessor product, Synapta Services Builder for CICS.)
To avoid problems, initialize the input using one or more of the following methods:
xyzBean.SetAttributeValue(" ");myClientOperation.setMyField(" ");