Reproduction steps:
1/ Install the BC SOAP and a SU provide
2/ Launch a request (it should work)
3/ Uninstall the SU provide
4/ Launch the same request (it should still work)
5/ Wait at least 30 minutes
6/ Launch the request (it should not work)
Analysis:
The service client pool is not deleted when removing a SU provide (its factory keeps a reference on the provide instance of the SU which is deleted). The service client pool is stored in a hash table, the key of the hash table of the address of the partner service, the operation and the MEP. Consequently when the same SU is reinstalled, the same pool is reused.
After reinstalling, if there is still a service client in the pool, it is used and it works. But this service client is removed from the pool by the garbage collector after 30 minutes so a new service client is created with the pool factory with the reference on the old provide instance in case of a new request. It crashes because the provide instance is used as a key of a hash table and it returns null (this hash table had been cleaned when removing the SU).
The problem should be corrected with this snapshot of the SOAP component.