Вы можете попробовать сделать вызов pm.login после инициализации контекста.
Я знаю, что этот вопрос старый, но я наткнулся на него после того, как столкнулся с той же ошибкой, и был бы признателен за решение.
У меня был код, сравнимый со следующим:
ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(username, pass, "file", true);
container = EJBContainer.createEJBContainer(properties);
Просто переупорядочив, как показано ниже, решил проблему:
container = EJBContainer.createEJBContainer(properties);
ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(username, pass, "file", true);
Идея заключалась в том, что, по крайней мере, насколько я понимаю, мой случай, что сервер / мое соединение с сервером еще не было инициализировано и, следовательно, не смог обработать вход в систему.