Não sei se posto aqui ou no tópico das lamentações.
Após todos esses anos, descobri que não sei programar OO. 
Não como OO foi originalmente idealizada para funcionar, pelo menos.
Aliás pelo que o pessoal que entende do assunto fala, a indústria de software como um todo "esqueceu" o que é realmente OO e não pratica OO! 
(...).
Bom, a indústria de TI não funciona assim. A abstração de uma definição de arquitetura serve para ela mesma, mas se você resolveu o problema do cliente, de uma forma reutilizável, que sofre melhoria contínua, e pode ser melhorada, é uma solução aceitável para a indústria.
Por outro lado, serviços SOA tem uma abstração de serviço que são construídos por classes de diferentes formas, alguns VOs, outros Adapters, outros DAOs, Controllers, e não deixam de ser classes. Há classes de vários tipos, e VOs ou POJOs são úteis para ajudar a uma entidade ser útil o suficiente num problema.
Classes são vistas mais independentes como serviços, mesmo que para montar eles você precise de classes utilitárias, helpers e VOs.
O que não é OO é construir um main e sair fazendo lingüiça, claro, mas daí a chamar de OO somente EJBs que pairam numa sandbos, bom, como disse a indústria não funciona assim.