Consider a callback Session bean. When you fire up the "workhorse", pass the callback SB in and have the workhorse post progress to it. Then you can have your applet periodically query the callback SB.
That being said, I don't recommend using EJBs as long-running process entities. You can't spawn threads in them, you shouldn't do I/O in them and HTTP clients won't operate the way you want, since the HTTP request isn't resolved until you return from both the bean and from any intermediary logic (e.g. servlet/JSP).
A more effective approach is to create an "engine" process(es) that runs under its own
thread(s) and queue up requests that come in. You can use either standard JavaBeans or EJBs to track the work requests.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.