First of all: I really like your articles!
"Caused by" is basically a feature since Java 1.4 (see download.oracle.com/.../Throwable.html)
In this case, the initialization of the Listener com.sssw.fw.servlet.InitListener fails, but JBoss catches the exception and wraps it into another exception. printStackTrace prints the whole chain to the log file.
The same applies to servlets, filters, etc...
If the same exception would be trown in a "normal" application, you would see the "caused by" part of the exception (except for the words "caused by") and the root of the problem should be clear.
The Permanent Generation is memory allocated by the VM for the Java classes (not the objects) and methods. I think the more different classes (not objects) your app instantiates, the bigger the PermGen should be. I also think different ClassLoaders may have influence on the PermGen space. If one would like more information about the different types of "generations", just google for "tuning garbage collection" and click the first hit :-)
Btw, tuning the garbage collection might also solve some memory issues, but beware: things may get worse :-)