For cas pools, getCas returns a handle to the InitialView of an empty CAS,
and stores this handle to match in releaseCas. This breaks for services that employ sofamapping. The empty CAS is filled from a serialized CAS sent to the service. It is possible that a CAS received may not contain the view, CAS.NAME_DEFAULT_SOFA, specified by sofamapping.
Then, when the service tries to return the CAS to the pool, releaseCas blows up at the first line,
CAS cas = aCas.getView(CAS.NAME_DEFAULT_SOFA);
so the CAS is not returned to the pool ==> CAS leak.
The cas pool should be storing references to the base CAS, which is independent of views.