static XARecoveryWrapper deserialize ( byte [ ] serializedWrapper ) { if ( tc . isEntryEnabled ( ) ) Tr . entry ( tc , "deserialize" ) ; XARecoveryWrapper wrapper = null ; try { final ByteArrayInputStream bis = new ByteArrayInputStream ( serializedWrapper ) ; final ObjectInputStream oin = new ObjectInputStream ( bis ) ; wrapper = ( XARecoveryWrapper ) oin . readObject ( ) ; oin . close ( ) ; } catch ( ClassNotFoundException e ) { FFDCFilter . processException ( e , "com.ibm.ws.Transaction.JTA.XARecoveryWrapper.deserialize" , "298" ) ; if ( tc . isDebugEnabled ( ) ) Tr . debug ( tc , "Unable to deserialize an object from byte stream" , e ) ; String notfound = e . getMessage ( ) ; final int index = notfound . indexOf ( ":" ) ; notfound = notfound . substring ( index + 1 ) ; Tr . error ( tc , "WTRN0002_UNABLE_TO_FIND_RESOURCE_CLASS" , notfound ) ; } catch ( Throwable t ) { FFDCFilter . processException ( t , "com.ibm.ws.Transaction.JTA.XARecoveryWrapper.deserialize" , "306" ) ; if ( tc . isDebugEnabled ( ) ) Tr . debug ( tc , "Unable to deserialize an object from byte stream" , t ) ; Tr . error ( tc , "WTRN0040_OBJECT_DESERIALIZE_FAILED" , t ) ; } if ( tc . isEntryEnabled ( ) ) Tr . exit ( tc , "deserialize" , wrapper ) ; return wrapper ; }
which classloader is passed in and which is on the thread .