The creation and subsequent usage of IpicoUtil as a bean from the res/ipicoBase.xml causes problems when other beans needs to access the IpicoUtil functionalities early on in their lifetime.
The problem is that when the call:
ipicoUtil = (IpicoUtil) ApplicationContextFactory.getBean(IpicoUtil.BEAN_NAME);
is made from another bean, then the IpicoUtil bean might not exist yet and thus raise a NullPointerException.
Something needs to enforce all the beans to wait a period before attempting the above call. A sleep of 1ms is sufficient to overcome the problem, but the problem is to know where to place this call. It cannot be expected from users to think about this all the time and should be resolved inherently by the underlying framework.