JBoss's class loading architecture needs a little getting used to.
JBoss uses the concept of class loader repository. For any dynamically deployed file, such as EAR, WAR, EJB jar, RAR, and SAR files each is loaded with a new subordinate class loader. However they also register themselves with a loader repository.
These class loaders will first ask the repository and then load classes from themselves.
They may also decide to become the head of a new loader repository. Classes loaded into child loader repositories are not visible to parent loader repositories.
The order in which the class loaders are added to the repository do matter.
The Russian doll model.
Add this jboss-app.xml along side with application.xml:
<jboss-app>
<loader-repository>
hello:service=LoaderRepository
</loader-repository>
</jboss-app>