Product: RFID Information Center Platform: RFID Information Center v1.1.0.3, Redhat Linux AS 4 update 6, Informix Dynamic Server v10, WebSphere Application Server Express 6.0.2 Date: 25 November 2008 APAR: JR31191 Description: ------------ PMR: 87477,499,000: In serial number management, the createTag operation, when called for sequential generation, throws a NullPointerException. Package contents: ----------------- Filename Description -------------------------------------------------------------------------------- README.txt This Readme file com.ibm.rfidic.enterprise.serialid.framework.jar JAR file NOTE: This fix will work for all the new resources created after deploying the JAR file. If you already have resources, carry out the following steps for updating the availability of existing resources: Step 1: Wait for all the requests to be confirmed or timed out. Step 2: Take a backup of the database. Step 3: Perform the following steps to get the resource_identifier: a) For SSCC resource, the resource_identifier = company prefix.extension digit For example, if the company prefix is 234234 and the extension digit is 3, the resource_identifier is 234234.3. b) For SGTIN resource, the resource_identifier = company prefix.Item reference For example, if the company prefix is 234567 and GTIN is 42345678901232, the Item reference = 4(first digit of GTIN) + 890123 The company prefix starts from the second digit of the GTIN. Hence, omit the company prefix from the GTIN and the last digit of the GTIN. Therefore, resource_identifier = 234567.4890123 Step 4: Get the resource ID and the block size of a resource. Run the following SQL statement. SELECT resource_id, block_size FROM SERIALID.sid_resource where resource_identifier=''; Provide the resource_identifier derived from the preceding step. Step 5: Get the block ID and run the following SQL statement. SELECT max(block_id) FROM SERIALID.serialid_inventory where block_type='SERIAL' AND resource_id=; Provide the resource_id resulting from the preceding statement. Step 6: Get the quantity of tags confirmed or unconfirmed for each block. SELECT sum(req.quantity) FROM SERIALID.request req, SERIALID.serialid_inventory invent where req.resource_id= AND invent.block_id= AND req.lower_limit >= invent.lower_limit AND req.upper_limit <= invent.upper_limit AND ( req.STATE=1 OR req.STATE=2 ) AND req.request_type='SERIAL'; Provide resource_id, block_id got from above. Step 7: Update the availability in inventory table for each block. update SERIALID.serialid_inventory set available= - where block_id=; Provide block_id, block_size, and quantity got from step 6. set available = 0 ; if is greater than . Step 8: Commit the database. commit; Installation instructions: -------------------------- Instructions for deploying the new JAR file 1. Log into the system as the root user. 2. Stop all the RFID Information Center components. 3. Ensure that you have the com.ibm.rfidic.enterprise.serialid.framework.jar file, which is required for the fix. 4. Change the directory to RFIDIC_HOME Directory/lib. 5. Move a backup copy of the original JAR file into a temporary directory. (Move the file instead of renaming them.) 6. Copy the new JAR file into the lib directory. 7. Restart the RFID Information Center components. Instructions for testing and using the (JAR file?) ---------------------------- Scenario to reproduce the error: Create a resource. Call the createTag operation with a quantity Q. Do not confirm this request. Call the createTag operation with same quantity Q. Confirm this request. Wait for all the requests to be timed out. Call the createTag operation with same quantity Q. It will throw NullPointerException. Perform the following steps to reproduce the error: Step 1: Create SGTIN-96 resource and enable the resource. SGTIN-96 10000 20 10 234567 62345678901236 Step 2: Call the createTag operation with the following values. Run Step 3 before this request gets timed out. S1 SGTIN-96 10 false false 234567 62345678901236 6 Step 3: Call the createTag operation with following values and confirm this request. S1 SGTIN-96 10 false false 234567 62345678901236 6 Step 4: Wait for all the requests to be timed out. Step 5: Call the createTag operation, it will throw a NullPointerException. S1 SGTIN-96 10 false false 234567 62345678901236 6 Instructions for verifying (fix or whatever is applicable): ---------------------------- 1. Run the scenario described in the previous section from Step 2 to Step 5 after adding the new JAR file. The NullPointerException will not be thrown.