Indeed you can deploy separate instances of the same application. One thing you need to consider is versioning: Will all these instances (both framework/libraries and your own code) be of the same version and upgraded uniformly, or might you be needing different versions? Will there be any customizations that make the code of some instances differ from that of others?
If all instances have one version, you want to upgrade them uniformly, there are no code customizations and no
singletons, you can even make JBoss share the framework and application classes to save some memory. Deploy application-level jars in server/CONF/lib, then use them from your EARs/WARs.
If however there may be differences between the deployed apps, you need to make certain that each app uses a different classloader. See docs for jboss-app.xml on how to do this.
I would suggest you utilize ant's filtering capabilities for customizing the configuration of each app. See ant's docs, eg search for filters in Core Tasks->Copy. Of course the EARs (or WARs) need to have different names too.
May I ask you WHY are you doing this?
I suppose that you have a SaaS scenario where each client has one schema in the database.
Am I wrong?
In this case I have a 'better'(more scalable) solution for this scenario.
Just tell me if this interests you.