| By Sujit Pal | Article Rating: |
|
| March 13, 2008 03:45 PM EDT | Reads: |
18,775 |
| Tab name | Property name | Property value | Description |
| - | Name | Tomcat (Pluto:8080) | Can be any name you want to give it. Mine says what and where |
| Connect | Project | hl-www | This is your project name |
| Connect | Connection Type | Standard - Socket Attach | Connect over a socket |
| Connect | Connection Properties : Host | pluto.healthline.com | DNS name of the host, could be an IP address (I think) |
| Connect | Connection Properties : Port | 8787 | Same port as specified in address above |
| Connect | Allow termination of remote VM | No | This is really your choice, I just don't want it. |
| Source | Source Lookup Path | Select your project | This is so you can see the sources as you debug |
| Source | Source Lookup Path | Select any other source jars you have | This is so you can see the sources as you debug |
| Common | Display in Favorites Menu | Yes | This adds the config as a bookmark under the debug icon. |
Deploy your app to the Tomcat container and restart Tomcat. In Eclipse, switch to the Debug perspective and a breakpoint in in your code (say a controller you want to call). In Eclipse's Debug perspective, [Alt]-[Shift]-B allows you to set (or unset) breakpoints at particular points in your code. Open up a browser and point to the page you want to debug. Bringing the page up will activate the debugger in Eclipse and you will see the code where you set the breakpoint being highlighted, with the top right corner containing the variables to be inspected. You can use [F6] through [F8] keys to step over, into and out of breakpoints. You probably know how to take it from here.
Remote Debugging with the Maven-Jetty plugin
Information for this comes from Dan Allen's blog post Remote Debugging with Jetty. Unlike Tomcat, this time you have to set the debugging parameters within MAVEN_OPTS since Maven runs its classworlds Launcher instead of Java. The MAVEN_OPTS need to be set in your configuration (either in your ~/.bash_profile or in a shell script that calls the mvn jetty6:run command). As before, if you already have other stuff in your MAVEN_OPTS, the stuff below needs to go after that.
export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE \ -Xrunjdwp:transport=dt_socket,address=8781,server=y,suspend=n"
You also need to disable the Jetty maxIdleTime interval by setting it to 0. This is done in the pom.xml file like so:
<project ...>
...
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty6-plugin</artifactId>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<connectors>
<connector implementation=
"org.mortbay.jetty.nio.BlockingChannelConnector">
<port>8081</port>
<maxIdleTime>0</maxIdleTime>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-j2ee_1.4_spec</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
On the Eclipse side, the setup is identical to the Tomcat setup described above. Simply change the name (mine is called Jetty (Pluto:8081)) and the port number of the listener to what you set it to in MAVEN_OPTS (mine is 8781).
Profiling
Recently, I needed to profile a web application I wrote. It was taking 4-8 seconds to serve a single page on a production class machine, compared to an expectation of about 40-80 milliseconds. Response times on my much less powerful development box, while not 40-80ms, were tolerable. My initial reaction was to put StopWatch calls within the handleRequest() method of the Controller, timing the blocks which I thought could do with improvement. That detected some places where it was spending more time than I thought it should, so I fixed those, but the pages were still dog slow on production. Moreover, it seemed that response times were degrading under load, and load on the database machines was spiking so as to make them almost unusable. What I needed was a profiler, but I did not know how to set one up, much less know how to run it and interpret the results.
However, good things sometimes happen to bad programmers, and our local performance guru was kind enough to set up a profiling instance on his Netbeans IDE (he is an IDEA user, but he uses Netbeans for its awesome profiling tool) and run a profile for me. It did identify several more hotspots in the code that could be optimized, and I fixed them. The performance did improve somewhat as a result, but we were still seeing spikes on the database machines.
The problem turned out to be contention for the same database resource with another web application, which I figured out by just thinking through it and looking through the code. However, the profiler output helped me weed out the unnecessary stuff quickly. So although the best way to find performance problems is still, in my opinion, just trolling through code coupled with an understanding of the program flow, a profiler makes the process much faster, because it has already told you what you are not looking for.
While I now know (thanks to the same guy who helped me out with the performance numbers before) how to do profiling with the Netbeans IDE, I wanted to do this from within Eclipse using the TPTP plugin, so what follows is my setup for doing that.
Published March 13, 2008 Reads 18,775
Copyright © 2008 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Sujit Pal
Sujit Pal is a programmer who occasionally dabbles in technical management at Healthline Networks, Inc. - primary product, a taxonomy-driven health search engine. Healthline also builds web-based health tools and generates and hosts medical and health content on its site. His programming language of choice is Java, with Spring for web development and IoC, and Lucene for building the search engine. His scripting language of choice is Python. He loves solving problems and exploring different possibilities with open source tools and frameworks.
![]() |
Jan Bartel 03/01/08 08:25:39 PM EST | |||
Hi Sujit, Glad to see you use Jetty. Just one thing, the maven-jetty6-plugin is now really really old. We renamed it some time ago to just the maven-jetty-plugin. The current version is jetty-6.1.7, very soon to be release jetty-6.1.8. cheers |
||||
- 4th International Cloud Computing Conference & Expo Starts Today
- Cloud Expo New York Call for Papers Deadline December 15
- Wave on Ulitzer: Confessions of a Google Wave Fanboy
- GovIT Expo Highlights Cloud Computing
- Google Wave
- Adaptivity & Cloud Computing: Exclusive Q&A with CEO Tony Bishop
- Cloud Computing Can Revitalize Your Career as Software Developer
- Oracle+MySQL Opponents Take to the Barricades
- Virtualization Expo Call for Papers Deadline December 15
- Vivek Kundra: "Engage the American People in their Daily Digital Lives"
- Instant Professionalism Online Despite Yourself...with Ulitzer
- Software Should Be Creative
- 4th International Cloud Computing Conference & Expo Starts Today
- Yahoo! Named “Platinum Sponsor” of Cloud Computing Expo
- Deputy CIO of the CIA to Keynote 1st Annual GovIT Expo
- Cloud Expo New York Call for Papers Deadline December 15
- Cloud Computing Expo: Exclusive Q&A with Yahoo! SVP Cloud Computing
- Wave on Ulitzer: Confessions of a Google Wave Fanboy
- GovIT Expo Highlights Cloud Computing
- Google Wave
- Live Demo of Yahoo! Query Language to be Given at 4th Cloud Computing Expo
- Adaptivity & Cloud Computing: Exclusive Q&A with CEO Tony Bishop
- Cloud Computing Can Revitalize Your Career as Software Developer
- IBM Goes After Gmail
- Where Are RIA Technologies Headed in 2008?
- Personal Branding Checklist
- The Top 250 Players in the Cloud Computing Ecosystem
- Wal-Mart To Sell $399 Ubuntu Linux-based Laptop with Google Operating System
- Google's OpenSocial: A Technical Overview and Critique
- Why Microsoft Loves Google's Android
- Web 2.0 Is Dead And It's Time To Get Out Of This Mess!
- i-Technology Blog: Google Trends on Java, McNealy, AJAX, and SOA Give Pause For Thought
- Android: Who Hates Google Over the Phone?
- Google Sales Surge 57% and Net Income 46% in Quarter 3
- i-Technology Blog: Is There Life Beyond Google?
- Social Network Wars: Google + Everyone Else vs Facebook






























