blob: 6a1e1b14b71fd3b103d7b31284b9d7875b1de71f [file] [log] [blame]
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Debugging With Eclipse</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty : The Definitive Reference"><link rel="up" href="advanced-debugging.html" title="Chapter&nbsp;25.&nbsp;Debugging"><link rel="prev" href="enable-remote-debugging.html" title="Enable remote debugging"><link rel="next" href="debugging-with-intellij.html" title="Debugging With IntelliJ"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><script type="text/javascript" src="js/shCore.js"></script><script type="text/javascript" src="js/shBrushJava.js"></script><script type="text/javascript" src="js/shBrushXml.js"></script><script type="text/javascript" src="js/shBrushBash.js"></script><script type="text/javascript" src="js/shBrushJScript.js"></script><script type="text/javascript" src="js/shBrushSql.js"></script><script type="text/javascript" src="js/shBrushProperties.js"></script><script type="text/javascript" src="js/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="css/shCore.css"><link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"><link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
Version: 9.3.0.v20150612</span></td><td style="width: 50%"><script type="text/javascript"> (function() {
var cx = '016459005284625897022:obd4lsai2ds';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script><gcse:search></gcse:search></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging With Eclipse</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="enable-remote-debugging.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;25.&nbsp;Debugging<br><a accesskey="p" href="index.html"><i class="icon-home"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="debugging-with-intellij.html">Next <i class="icon-chevron-right"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at
<span class="website">www.webtide.com</span></a></h5><p>
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ...
scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery
</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="debugging-with-eclipse"></a>Debugging With Eclipse</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="debugging-with-eclipse.html#d0e19271">Linking with Eclipse</a></span></dt><dt><span class="section"><a href="debugging-with-eclipse.html#eclipse-within-eclipse">Within Eclipse</a></span></dt></dl></div><p>
There are a number of options available to debug your application in Eclipse.
</p><p>If not done already prepare your application for remote debugging as described here:
<a class="xref" href="enable-remote-debugging.html" title="Enable remote debugging">Enable remote debugging</a>
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="d0e19271"></a>Linking with Eclipse</h3></div></div></div><p>
Next we need to link the Eclipse project with the deployed webapp.
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
Within Eclipse, right-click on the project containing the webapp deployed into jetty and select
<span class="bold"><strong>Debug -&gt; Debug Configurations</strong></span>
and create a new configuration of<span class="bold"><strong>Remote Java Application</strong></span>. Make sure
the port you choose is the same as the one you added in <a class="xref" href="enable-remote-debugging.html" title="Enable remote debugging">Enable remote debugging</a>.
</p><div class="mediaobject" align="center"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="540"><tr><td align="center"><img src="images/debug-eclipse-1.png" align="middle" width="540"></td></tr></table></div></li><li class="listitem"><p>
Next in your webapp you can set a breakpoint within a servlet which when it is tripped will halt the
remote jvm's processing thread to await for debugging commands from your Eclipse instance.
</p><div class="mediaobject" align="center"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="540"><tr><td align="center"><img src="images/debug-eclipse-2.png" align="middle" width="540"></td></tr></table></div></li><li class="listitem"><p>
Accessing that servlet within your browser, pointed at your remote debug configurated
jetty-distribution, should transition your Eclipse instance to the standard Debug view.
</p><div class="mediaobject" align="center"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="540"><tr><td align="center"><img src="images/debug-eclipse-3.png" align="middle" width="540"></td></tr></table></div></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="eclipse-within-eclipse"></a>Within Eclipse</h3></div></div></div><p>
Since Jetty can be incredibly simple to embed, many people choose to create a small
<code class="code">main</code>
method which they can launch directly within Eclipse in order to more easily debug their entire application.
The best place to get started on this approach is to look through
<a class="xref" href="embedding-jetty.html" title="Embedding Jetty">Embedding Jetty</a>
and the
<a class="xref" href="embedded-examples.html" title="Embedded Examples">Embedded Examples</a>
sections.
</p><p>
Once you have a main method defined in order to launch your application, right-click on the source file and
select<span class="bold"><strong>Debug As -&gt; Java Application</strong></span>. In your
<span class="bold"><strong>Console</strong></span>
tab within Eclipse you should see your application startup and once it has completed startup you should be
able to configure breakpoints and hit the Jetty instance as normal via your web browser.
</p><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><i class="icon-lightbulb"></i> Logging</h3><p>
You can easily configure logging through a
<code class="filename">jetty-logging.properties</code>
file. If this file is on your classpath then Jetty will use it for configuring logging, we use this
approach extensively throughout Jetty development and it makes life ever so much easier. You can see
this in action in the
<a class="xref" href="configuring-logging.html#configuring-jetty-stderrlog" title="The jetty-logging.properties file">The jetty-logging.properties file</a>
section.
</p></div></div></div><script type="text/javascript">
SyntaxHighlighter.all()
</script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="enable-remote-debugging.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="advanced-debugging.html"><i class="icon-chevron-up"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="debugging-with-intellij.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Enable remote debugging&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="icon-home"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Debugging With IntelliJ</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
See an error or something missing?
<span class="callout"><a href="http://github.com/jetty-project/jetty-documentation">Contribute to this documentation at
<span class="website"><i class="icon-github"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2015-06-15T13:18:46-05:00)</i></span></div></p><script xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1149868-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script></body></html>