Without looking at your system it is hard to tell. In your case I would suggest using SQL Profiler to monitor the queries being sent to your SQL Server. In particular you want to look at the duration of the queries. If your SQL Server is the bottleneck you will see some queries taking a long time. Then you can go an optimize those queries.
Profiler may also reveal if your use of the api's like jdbc could use some improvement. For example if you are opening a cursor through the API and then fetching the rowset 1 row at a time then you are causing needless roundtrips to the Server.
Principal Consultant and Trainer