Taking and examining several thread dumps should show you where the application is spending its time. Unfortunately, you are running the app server as a service and I don't know of any way on Windows 2003 to send a SIGQUIT signal to a service (if you ran the app server from a command prompt you could type CTRL-BREAK in the command window to get the thread dump). You could try connecting JConsole to the app server, see the JConsole documentation for instructions on how to do this. JConsole provides a thread dump feature.
One more thought. JBoss AS creates an MBean for each servlet and EJB and these keep track of statistics for each method called. Perhaps accessing that data through the MBeans would help.
Thank You Peter,
unfortunately the server is a production server...
I will try to use the MBean...