<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog Espeo Software &#187; debug</title>
	<atom:link href="http://blog.espeo.pl/tag/debug/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.espeo.pl</link>
	<description>O technologii i biznesie naszym zdaniem</description>
	<lastBuildDate>Mon, 05 Jul 2010 12:16:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Debug aplikacji internetowych w środowisku Eclipse</title>
		<link>http://blog.espeo.pl/2009/04/10/debug-aplikacji-internetowych-w-srodowisku-eclipse/</link>
		<comments>http://blog.espeo.pl/2009/04/10/debug-aplikacji-internetowych-w-srodowisku-eclipse/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 12:28:43 +0000</pubDate>
		<dc:creator>robomaniac</dc:creator>
				<category><![CDATA[technologia]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=59</guid>
		<description><![CDATA[Na pewno nie jeden programista w swoim wesołym życiu miał takie chwile, kiedy przeklinał swój komputer, bił swoją klawiaturę, a w między czasie nerwowo obgryzał paznokcie. Owszem programowanie może dostarczać wiele przyjemności (serio?), ale niestety idylla kończy się w momencie, gdy zachowanie programu przekracza oczekiwania jego autora &#8211; czasem wręcz im zaprzecza. Z taką sytuacją [...]]]></description>
			<content:encoded><![CDATA[<p>Na pewno nie jeden programista w swoim wesołym życiu miał takie chwile, kiedy przeklinał swój komputer, bił swoją klawiaturę, a w między czasie nerwowo obgryzał paznokcie. Owszem programowanie może dostarczać wiele przyjemności (serio?), ale niestety idylla kończy się w momencie, gdy zachowanie programu przekracza oczekiwania jego autora &#8211; czasem wręcz im zaprzecza. Z taką sytuacją do czynienia miał z pewnością każdy nas (tak Developerzy &#8211; to o nas mowa). Przyczyn zaistniałej sytuacji może być wiele, zazwyczaj wiążą się z błędami (bugs) posianymi w kodzie źródłowym, czasem wynikają z trudności zrozumienia działania programu (zwłaszcza jeśli jesteśmy jego spadkobiercami). Owszem nawet jeśli dysponujemy takimi środkami jak testy jednostkowe, dokumentacja, przeglądy kodu &#8230; ta lista może być dłuższa &#8211; nie oszukujmy się &#8211; prześledzenie działania aplikacji, w szczególnym przypadku <a href="http://pl.wikipedia.org/wiki/Debugowanie">debugowanie</a> to jedna z bardziej przydatnych umiejętności &#8220;zdenerwowanego&#8221; programisty. W ten sposób chciałem wprowadzić Was w tematykę i przekonać, że będzie Wam towarzyszyć w wielu bardzo życiowych sytuacjach a czasem po prostu uratuje Wam &#8220;życie&#8221;.</p>
<p>W przypadku standardowych (lokalnych) programów ich uruchomienie, a tym samym debugging  nie rodzi większych trudności. W przypadku aplikacji webowych, dla których wymagana jest obecność środowiska takiego jak serwer aplikacji, sprawa ulega komplikacji. Ponieważ sam temat może być bardzo rozległy, przyjmijmy zatem pewne założenia:</p>
<ul>
<li>środowisko programistyczne (IDE) &#8211; Eclipse</li>
<li>uruchomienie aplikacji w środowisku serwerowym (serwer aplikacji, kontener) &#8211; ograniczymy się do: <a href="http://tomcat.apache.org">Apache Tomcat</a>, <a href="https://glassfish.dev.java.net">Glassfish</a>, <a href="http://www.jboss.org/jbossas">Jboss</a></li>
</ul>
<p>Ze względu na różne możliwe podejścia, dalsza część materiału pogrupowana została na 3 części, co oczywiście jest wyłącznie subiektywną decyzją autora.</p>
<p>1. <strong>Wykorzystanie wtyczek (plugins)</strong><br />
Jeśli posiadasz środowisko Eclipse dla Java EE (pierwsza pozycja na <a href="http://www.eclipse.org/downloads">liście</a>) lub co najmniej wtyczkę <em>Web Standard Tools</em>, to sprawa jest stosunkowo banalna.</p>
<ul>
<li>Otwórz widok <em>Servers</em> (<em>Window -&gt; Show View -&gt; Other -&gt; Servers</em>)</li>
<li>Zdefiniuj nowy serwer wybierając opcję <em>New-&gt; Server</em>. Jeśli na liście nie ma takiego serwera jakiego oczekujesz możesz spróbować <em>Download additional server adapters</em></li>
<p><a href="http://espeo.files.wordpress.com/2009/02/glass-wst1.png"><img class="alignnone size-medium wp-image-89" title="glass-wst1" src="http://espeo.files.wordpress.com/2009/02/glass-wst1.png?w=300" alt="glass-wst1" width="300" height="277" /></a></p>
<li>Kolejne kroki są bardzo intuicyjne: specyfikujesz środowisko uruchomienia serwera podając ścieżkę do katalogu z serwerem, podajesz parametry dla danego typu serwera (np. adres, porty, itp.)</li>
<li>Jeśli wszystko będzie w porządku to na liście serwerów pojawi się nowy wpis. Warto zauważyć, że pojawia się również nowa konfiguracja uruchomienia w menu <em>Run</em> i <em>Debug</em> zatytułowana tak samo jak serwerowy wpis.</li>
<p><a href="http://espeo.files.wordpress.com/2009/02/glass-wst2.png"><img class="alignnone size-medium wp-image-91" title="glass-wst2" src="http://espeo.files.wordpress.com/2009/02/glass-wst2.png?w=300" alt="glass-wst2" width="300" height="98" /></a></p>
<li>Istnieje również możliwość dostosowania stworzonej konfiguracji serwera, wystarczy wybrać wpis i wykonać dwuklik.<br />
W przypadku serwera Glassfish opcje konfiguracyjne wyglądają następująco:</li>
<p><a href="http://espeo.files.wordpress.com/2009/04/glass-wst-conf.png"><img class="alignnone size-medium wp-image-115" title="glass-wst-conf" src="http://espeo.files.wordpress.com/2009/04/glass-wst-conf.png?w=300" alt="glass-wst-conf" width="300" height="168" /></a></p>
<li>Jeśli szukasz szczegółowych informacji jako przykład może posłużyć<br />
<a href="https://glassfishplugins.dev.java.net/eclipse33/index.html">tutorial</a> dla Glassfisha. Analogicznie przebiega sposób konfiguracji dla innych serwerów.</li>
<li>W przypadku posługiwania się wtyczkami możemy też skorzystać z innych dostępnych rozwiązań.<br />
Bardzo popularnym pluginem dla serwera Apache Tomcat jest <a href="http://www.eclipsetotale.com/tomcatPlugin.html">Sysdeo</a><br />
Posiada wiele opcji konfiguracyjnych, jest przyjazny dla użytkownika i dodaje kolorowe Kociaki. <img title="sysdeo-cats" src="http://espeo.files.wordpress.com/2009/04/sysdeo-cats.png" alt="sysdeo-cats" width="79" height="23" /><br />
Na pewno warto wypróbować.</li>
</ul>
<p>2. <strong>Uruchomienie serwera jak zwykłej aplikacji Java.</strong><br />
Ta propozycja skierowana jest główniej dla tej części Społeczności Programistów, która sceptycznie i z dużą dozą nieufności patrzy na gotowe rozwiązania.<br />
Jeśli programowanie aplikacji zaczynasz np. od zastanawiania się nad pisaniem własnego kompilatora, to bardzo prawdopodobne, że wykorzystanie pluginów,<br />
będzie dla Ciebie zbyt ograniczające i niesatysfakcjonujące. Powodem może też być frustracja wynikająca z problemów z ich obsługą.</p>
<p>Tak czy inaczej w zaistniałej sytuacji rozwiązaniem wydaję się być utworzenie własnej konfiguracji uruchomienia serwera. Jako przykład przedstawię sposób tworzenia konfiguracji uruchomienia dla serwera Apache Tomcat. (Podpowiedź, pluginy zazwyczaj udostępniają możliwość wygenerowania takiej konfiguracji lub po prostu ją tworzą)</p>
<ul>
<li>W menu <em>Run</em> wybierz opcję <em>Run Configurations</em>. Utwórz nową konfigurację typu <em>Java Application</em>. Jako klasę startową (posiadającą metodę main) wybierz:<br />
<em>org.apache.catalina.startup.Bootstrap</em><br />
<a href="http://espeo.files.wordpress.com/2009/04/debug_main.png"><img class="alignnone size-medium wp-image-119" title="debug_main" src="http://espeo.files.wordpress.com/2009/04/debug_main.png?w=300" alt="debug_main" width="300" height="239" /></a></li>
<li>Na kolejnej zakładce możesz podać argumenty z jakimi ma zostać uruchomiony serwer. Podstawowe jakie najczęściej się używa to:
<ul>Wymagane:</p>
<li>-Dcatalina.home=&#8221;D:\apache-tomcat-5.5.26&#8243;</li>
<li>-Dcatalina.base=&#8221;D:\apache-tomcat-5.5.26&#8243;</li>
</ul>
<ul>Dodatkowe:</p>
<li>-Djava.endorsed.dirs=&#8221;D:\apache-tomcat-5.5.26\common\endorsed&#8221;</li>
<li>-Djava.io.tmpdir=&#8221;D:\apache-tomcat-5.5.26\temp&#8221;</li>
<li>-Xms256m -Xmx512m</li>
<li>-XX:MaxPermSize=128m</li>
</ul>
<p><a href="http://espeo.files.wordpress.com/2009/04/arguments.png"><img class="alignnone size-medium wp-image-120" title="arguments" src="http://espeo.files.wordpress.com/2009/04/arguments.png?w=300" alt="arguments" width="300" height="227" /></a></li>
<li>Na zakładce <em>Classpath</em> należy skonfigurować ścieżkę klas, poprzez dołączenie biblioteki <em>bootstrap.jar</em>, która znajduje się podkatalogu <em>bin</em> zainstalowanego serwera (np. D:\apache-tomcat-5.5.26\bin)</li>
<li>Kolejna zakładka <em>Source</em> służy wskazaniu jakie źródła mają być rozpoznawane przez debuggera. Czyli po prostu dodajesz te projekty, które Cię interesują. I to praktycznie tyle. Pamiętaj o zachowaniu wprowadzonych zmian (przycisk <em>Apply</em>)</li>
</ul>
<p>3. <strong>Debug zdalny (remote debug)</strong><br />
Ciekawą możliwością jest śledzenie działania serwera w sposób zdalny. Aby Eclipse był w stanie obsługiwać debug serwera potrzebne są 2 konfiguracje.<br />
Po pierwsze serwer musi być skonfigurowany tak, aby pozwalał na debug. Po drugie konieczne jest utworzenie w <em>Eclipsie</em> konfiguracji dla <em>Remote Java Application</em></p>
<ul>
<li>Konfiguracja serwera może sprowadzić się do odnalezienia pliku konfiguracyjnego i aktywacji trybu debug. Na przykład dla serwera JBoss wystarczy w pliku skryptowym <em>run</em> odkomenotwać odpowiedni wiersz:<br />
<em>set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%</em></li>
<li>W środowisku Eclipse tworzymy konfigurację <em>Remote Java Application</em> której parametry (adres, port) muszą pokrywać się z ustawieniami serwera. Na zakładace <em>Source</em> podobnie jak to omawialiśmy wyżej dołączamy projekty, których źródła chcemy prześledzić</li>
<p><a href="http://espeo.files.wordpress.com/2009/04/jboss-remote1.png"><img class="alignnone size-medium wp-image-124" title="jboss-remote" src="http://espeo.files.wordpress.com/2009/04/jboss-remote1.png?w=300" alt="jboss-remote" width="300" height="238" /></a></p>
<li>Oczywiście zdalne debugowanie działa również w przypadku, gdy serwer mamy na tej samej maszynie na której pracujemy</li>
<li>Przydatne informacje można znaleźć tutaj:
<ul>
<li><a href="http://java.sys-con.com/node/44918">Eclipse Special: Remote Debugging Tomcat &amp; JBoss Apps with Eclipse</a></li>
<li><a href="http://www-02.imixs.com:8081/roller/ralphsjavablog/entry/debugging_glassfish_with_eclipse">Debugging a servlet with tomcat and Eclipse tutorial </a></li>
<li><a href="http://www.wikijava.org/wiki/Debugging_a_servlet_with_tomcat_and_Eclipse_tutorial">Debugging Glassfish with Eclipse</a></li>
</ul>
</li>
</ul>
<p>I to by było na tyle Moi Drodzy. Obfitego Debugowania!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2009/04/10/debug-aplikacji-internetowych-w-srodowisku-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
