We have a stored proc which runs pathetically when called from application (Spring - DBCP - jtds) infact timesout after 10 minutes, but runs in 30 seconds when executed from SQL
This normally indicates a parameter sniffing issue.
See Slow in the Application, Fast in SSMS? Understanding Performance Mysteries for details.