Index: src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java =================================================================== --- src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java (revision 794) +++ src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java (working copy) @@ -15,8 +15,10 @@ import javax.ws.rs.core.MediaType; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author Bill Burke @@ -211,22 +213,35 @@ public static void processApplication(Application config, Registry registry, ResteasyProviderFactory factory) { logger.info("Deploying " + Application.class.getName() + ": " + config.getClass()); + Set> resources = new HashSet>(); + Set> providers = new HashSet>(); + if (config.getClasses() != null) { - for (Class clazz : config.getClasses()) + for (Class clazz : config.getClasses()) { if (clazz.isAnnotationPresent(Path.class)) { - logger.info("Adding class resource " + clazz.getName() + " from Application " + Application.class.getName()); - registry.addPerRequestResource(clazz); + resources.add(clazz); } else { - logger.info("Adding class @Provider " + clazz.getName() + " from Application " + Application.class.getName()); - factory.registerProvider(clazz); + providers.add(clazz); + } } } + + for (Class clazz : providers) { + logger.info("Adding class @Provider " + clazz.getName() + " from Application " + Application.class.getName()); + factory.registerProvider(clazz); + } + + for (Class clazz : providers) { + logger.info("Adding class resource " + clazz.getName() + " from Application " + Application.class.getName()); + registry.addPerRequestResource(clazz); + } + if (config.getSingletons() != null) { for (Object obj : config.getSingletons())