1) Not possible - the heap is shared by all deployed apps and yes one app can hog all of the space (if it has a memory leak, for example)
2) Not possible - all threads will have the same size. This is a JVM-wide setting
3) You can do this by defining different datasources for each app. Of course, if all of those datasource use the same database then you must ensure that no data is cached or you will run into issues. (For example, Hibernate/JPA cache data by default because they assume they are the only users of the database.)
Thanks for Peter help.
Almost all resource cannot be set for a web application. These resource setting are for global. For avoiding that one web application used all resources (memory, thread, database connection pool), the only solution is to set individual instance (JBoss AS server) for a web application so that these web applications won't affect each other.
Peter, what do you think?
Does anyone have good suggestion? Thanks in advance.
Multiple apps can happily share one instance of JBoss AS. But if you need really high capacity, then it is often best to separate out the apps into separate app server instances to better manage and scale them. But that all depends on your needs. And for that you need to do some capacity planning.