When it is deployed the createConnectionFactory(ConnectionManager cm) is executed by default.
Of course - that is the way the ConnectionFactory is created, and bound into JNDI.
I do some house keeping with help of ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
You should never use the thread context classloader. Use the classloader that defined your deployment:
ClassLoader cl = MyManagedConnectionFactory.class.getClassLoader();
This method is again executed when i try to access the adapter using an ejb.
Problem is initally at the time of loading the classloader is null. Later it has a value when called from ejb. Effectively my housekeeping fails.
Are you sure, that it is the same ConnectionFactory that you reference ? Post your ra.xml and <resource-adapter> subsystem. And what the EJB does...
And "housekeeping" sounds very scary to me... Post your code