For in-depth classloader discussions, you are probably better off in one of the JBoss AS
forums.
1) Yes, each deployment gets 1 UCL that covers the entire archive, including
sub-deployments
2) Every class in a deployment can see every other class in that same deployment (WAR
files are a special case)
3) WAR files are special because the servlet spec says they should be special. If you
have two WAR files in an EAR, they should not see eachothers classes. So, JBoss does not
add WEB-INF/classes or WEB-INF/lib/* to the UCL by default. You can change this behavior
by setting the UseJBossWebLoader option. When you do that, tomcat will use the deployment
UCL for web app loading, making everything visible throughout your app.
4) Every archive has it's own UCL. A scoped application has a UCL that points to
it's own repository instead of to the main repository.
5) In general, one app should be able to look up and use beans in another app on the same
server. If there aren't common class definitions between the two apps, you have to
go through serialization. This is costly, though JBoss people often make the mistake of
over-emphasizing the cost. (by comparing the cost of serialization to the cost of a
direct call without considering the amount of work being done in the call)
My general belief is that shared class definitions is a bad thing for applications and a
good thing for services. I would always scope my applications in the absence of a
compelling reason not to.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3992376#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...