i found the problem, but it's very strange. jboss has a version (not sure which) of castor in [JBOSS]/server/default/lib, and i was also including the latest version of castor in my .war inside the .ear. i deleted the jboss version from the lib directory and it worked. if it was a conflict with the castor versions, i would have expected a different error than not being able to find one of my domain classes... maybe this could be a future feature of java or jboss (detecting if 2 of the same exact classes are in the classpath at runtime and somehow displaying an alert)...
This problem is due to the classloader hierarchy and is not a castor version problem. The jboss lib castor.jar resides in a classloader that is a parent of your webapp classloader. Castor relies on introspection and attempts to resolve the mapped classes using its classloader context, not the webapp or thread context. Your mapped application classes are therefore not found.
You can supply a classloader argument to the Mapping constructor. That might solve your problem. Castor should use the current thread context classloader by default but it doesn't. This is a failing common to other open source middleware projects that rely on introspection, e.g. cactus.