Is it possible to use EJB in architecting a multi-user collaborative application? If so, how might it work, and what are some pitfalls to avoid?
I think the first step is to decide which EJB spec you want to design against. EJB 1.0 and EJB 1.1 have some differences that you might want to account for in your design. Collaboration implies to me that some database persistence is needed. You'll need to decide if you should use entity beans to fill that role. If you need pub-sub notification or point-to-point message queues, you'll need to verify that the JMS and EJB vendors can operate together transactionally. Although the EJB spec does "gurantee" a certain amount of standarization between vendors, you'll still find differences between containers. You might want to build an abstraction that can help isolate you from those differences. Your build process will also need to account for the different EJB tools that each vendor supplies.
If you are sure that you'll never switch EJB vendors, you can probably ignore the previous advice. If you try to be vendor agnostic, however, be aware of some of the neat things that vendors give you that isn't part of the spec, such as clustering.