Fix (APAR): PK97370 Status: Fix Release: 7.0.0.7 Operating System: AIX,HP-UX,i5/OS,IBM i,Linux,Solaris,Windows Supersedes Fixes: CMVC Defect: PK97370 Byte size of APAR: 6948 Date: 2009-12-17 Abstract: Application Server (and EJB specifications for that matter) prohibits a method that has not "required" or "requiresNew" as transaction qualifier to mark the transaction for rollb Description/symptom of problem: PK97370 resolves the following problem: ERROR DESCRIPTION: Transaction qualifiers are missing in the following EventServer app: EventServerEjb.jarMETA-INFejb-jar.xml EventAccessEjb -> purgeEvents method "required" + "requiresNew" transaction qualifiers are missing here but necessary otherwise Application Server prohibits the access for example, via rollback of current transaction. LOCAL FIX: N/A PROBLEM SUMMARY USERS AFFECTED: All users of IBM WebSphere Application Server V6.1.0 and V7.0 that also have Common Event Infrastructure (CEI) installed in their environment. PROBLEM DESCRIPTION: Application Server (and EJB specifications for that matter) prohibits a method that has not "required" or "requiresNew" as transaction qualifier to mark the transaction for rollback. RECOMMENDATION: None The following exception: [7/30/09 16:16:04:076 CEST] 0000003c ExceptionUtil E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "purgeEvents" on bean "BeanId(EventService#DataStoreEjb.jar#DefaultDataStoreEJB, null)". Exception data: java.lang.IllegalStateException: setRollbackOnly can not be called from a TX SUPPORTS method at com.ibm.ejs.container.BeanO.setRollbackOnly(BeanO.java:1182) at com.ibm.ejs.container.StatelessBeanO.setRollbackOnly(StatelessBe anO.java:656) at com.ibm.events.datastore.impl.DefaultDataStoreEJBBean.purgeEvent s(DefaultDataStoreEJBBean.java:542) at com.ibm.events.datastore.EJSLocalStatelessDefaultDataStoreEJB_6b 454685.purgeEvents(Unknown Source) at com.ibm.events.access.impl.EventAccessHelper.purgeBySelector(Eve ntAccessHelper.java:716) at com.ibm.events.access.impl.EventAccessEjb.purgeEvents(EventAcces sEjb.java:448) at com.ibm.events.access.EJSLocalStatelessEventAccessEjb_a71165bf.p urgeEvents(Unknown Source) at de.lvm.test.export.JMSTester.purgeEvents(JMSTester.java:295) at de.lvm.test.export.JMSTester.doGet(JMSTester.java:228) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) can be seen when eventPurge is called using CEI API and the caller is not in a transaction. PROBLEM CONCLUSION: Caller of CEI event purge API method will always be in a transaction. If something goes wrong, the purge events method want to mark the transaction for rollback. The fix for this APAR is currently targeted for inclusion in fix packs 6.1.0.29 and 7.0.0.9. Please refer to the Recommended Updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980 Directions to apply fix: Fix applies to Editions: Release 7.0 _x_ Application Server (Express or BASE) _x_ Network Deployment (ND) __ Edge Components __ Developer Install Fix to all WebSphere installations unless special instructions are included below. Special Instructions: None NOTE: The user must: * Logged in with the same authority level when unpacking a fix, fix pack or refresh pack. * Be at V7.0.0.0 or newer of the Update Installer. Certain iFixes may require a newer version of the Update Installer and the Update Installer will inform you during the installation process if a newer version is required. This can be checked by reviewing the level of the Update Installer in file /updateinstaller/version.txt. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 1) If your iFix is delivered as a single file with a .pak extension, Copy the .pak file directly to the maintenance directory. If your iFix is delivered as a single file with a .zip extension, unzip the file into the maintenance directory. 2) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that maintenance is being applied to. 3) For IBM i users, use the update command to install and uninstall the interim fix. The IBM Information Center can provide additional details, if needed, on the use of this command. http://www14.software.ibm.com/webapp/wsbroker/redirect?version=compass&product=was-nd-iseries&topic=rins_update. For non-IBM i users, launch the Update Installer and click the Next button on the Welcome page. 4) Enter the directory path of the installation location of the WebSphere product you want to update, and click the Next button. 5) Select the "Install maintenance package" operation and click the Next button. 6) Enter the directory path of your maintenance directory where you have the maintenance packages (.pak files) and click the Next button. 7) The Available Maintenance Package to Install page should list all maintenance packages (.pak files) that it finds in the directory path provided in the previous step. The Update Installer will select the correct maintenance packages based on your system configuration and will not allow an invalid combination to be installed. Please keep the Update Installer recommendations and click the Next button and continue with the installation of the maintenance package. To determine why some maintenance packages have been identified as not applicable, see description in log found in /logs/tmp*/updatelogs.txt 8) For all platforms except Windows. In pre-install summary panel, use the "verify permission" feature to verify the user has permissions to apply updates to files associated with the selected maintenance. Correct any file permissions before clicking next to start the install. 9) After installing the iFix, backup the already installed ejb-jar.xml, EventServerEjb.jar and EventService.ear files from the profile where Common Event Infrastructure is deployed on to. Their location should be: a. /profiles//config/cells//applications/EventService.ear/deployments/EventService/EventServerEjb.jar/META-INF/ejb-jar.xml b. /profiles//config/cells//applications/EventService.ear c. /profiles//installedApps//EventService.ear/EventServerEjb.jar, where - The location on the disk of the WebSphere Application Server to which you want to install the iFix. - specify the WAS profile name you wish to patch. Make sure that CEI is installed on that profile! - the name of the cell in the above profile. 10) Change directory to /systemApps, where - The location on the disk of the WebSphere Application Server to which you want to install the iFix. 11) Using a zip based application unpack the EventServerEjb.jar from the location above (step 10)) to a temporary location of your choosing. 12.a) Update the already installed ejb-jar.xml from location a. step 9), by overwriting it with the same file from the temp folder you created on step 11) (EventServerEjb.jar/META-INF/ejb-jar.xml). 12.b) Using a zip based application unpack the EventService.ear - location b. from step 9) - file to a temporary location of your choosing, then using a zip based application, update EventServerEjb.jar that you just extracted, overwriting the file META-INF/ejb-jar.xml, with the same file from the temp folder you created on step 11). In the end, update the EventService.ear from the location b. of the step 9) overwriting EventServerEjb.jar that you just updated. 12.c) Using a zip based application, update EventServerEjb.jar from location c. of step 9), by overwriting the file META-INF/ejb-jar.xml, with the same file from the temp folder you created on step 11). 13) You can remove the temp folders created on step 11) and 12.b) and also the backup folder (and file) you created on step 9). 14) Restart WebSphere Directions to remove fix: NOTE: * The user must have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * FIXES MUST BE REMOVED IN THE ORDER THEY WERE APPLIED * DO NOT REMOVE A FIX UNLESS ALL FIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED * YOU MAY REAPPLY ANY REMOVED FIX Example: If your system has fix1, fix2, and fix3 applied in that order and fix2 is to be removed, fix3 must be removed first, fix2 removed, and fix3 re-applied. 1) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that uninstall is being run against. 2) Start Update Installer 3) Enter the installation location of the WebSphere product you want to remove the fix. 4) Select "Uninstall maintenance package" operation. 5) Enter the file name of the maintenance package to uninstall (PKxxxxx.pak). 6) UnInstall maintenance package. 7) Restart WebSphere Directions to re-apply fix: 1) Shutdown WebSphere. 2) Follow the Fix instructions to apply the fix. 3) Restart WebSphere. Additional Information: