<?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>@Repository(&#34;djo&#34;) &#187; Eclipse</title>
	<atom:link href="https://blog.developpez.com/djo-mos/pcategory/eclipse/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/djo-mos</link>
	<description></description>
	<lastBuildDate>Sun, 27 Sep 2009 00:05:37 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Installer le support SVN dans Eclipse Ganymede</title>
		<link>https://blog.developpez.com/djo-mos/p5979/eclipse/installer_le_support_svn_dans_eclipse_ga</link>
		<comments>https://blog.developpez.com/djo-mos/p5979/eclipse/installer_le_support_svn_dans_eclipse_ga#comments</comments>
		<pubDate>Fri, 27 Jun 2008 17:09:18 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Avec la version Ganymede, Eclipse intègre d&#8217;office Subversive, un plugin permettant de manipuler un repository SVN. Dans ce billet, je vais montrer comment l&#8217;installer. Un petit détail avant de commencer : Subversive est divisé en deux modules (grossomodo) : SVN Team Provider : intégration dans Eclipse SVN Connector : manipulation du repository SVN Le premier module est un projet interne Eclipse, mais la seconde partie ne l&#8217;est pas. Il faut donc ajouter les deux update-site [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Avec la version <strong>Ganymede</strong>, Eclipse intègre d&rsquo;office <strong>Subversive</strong>, un plugin permettant de manipuler un repository <strong>SVN</strong>.</p>
<p>Dans ce billet, je vais montrer comment l&rsquo;installer.</p>
<p><span id="more-83"></span></p>
<p>Un petit détail avant de commencer : Subversive est divisé en deux modules (grossomodo) :</p>
<ul>
<li>SVN Team Provider : intégration dans Eclipse</li>
<li>SVN Connector : manipulation du repository SVN</li>
</ul>
<p>Le premier module est un projet interne Eclipse, mais la seconde partie ne l&rsquo;est pas.<br />
Il faut donc ajouter les deux <em>update-site</em> suivants dans <strong>p2</strong> (nouveau gestionnaire de plugins d&rsquo;Eclipse) :</p>
<p>=> http://download.eclipse.org/technology/subversive/0.7/update-site/<br />
<del>=> http://www.polarion.org/projects/subversive/download/eclipse/2.0/ganymede-site/</del><br />
=> http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/</p>
<p>Dans Eclipse, cliquez sur le menu [ <em>Help > Software Updates</em> ].<br />
Dans la fenêtre qui s&rsquo;affiche, activez l&rsquo;onglet &laquo;&nbsp;<em>Available Software</em>&nbsp;&raquo; et cliquez sur le bouton &laquo;&nbsp;<em>Add Site</em>&nbsp;&raquo; pour ajouter l&rsquo;<em>update-site</em> des connecteurs SVN.</p>
<p><img src="http://farm4.static.flickr.com/3280/2616300244_20b6e37ed6_o.png" alt="Add update Site" title="" /></p>
<p>Validez.<br />
Toujours dans l&rsquo;onglet &laquo;&nbsp;<em>Available Software</em>&laquo;&nbsp;, saisissez &laquo;&nbsp;svn&nbsp;&raquo; dans la zone de recherche et sélectionnez :</p>
<ul>
<li>SVN Team Provider</li>
<li>SVN Kit (ou autre implémentation)</li>
</ul>
<p><img src="http://farm4.static.flickr.com/3148/2616300250_049cc32aa6_o.png" alt="Sélectionnez les plugins SVN" title="" /></p>
<p>Cliquez enfin sur &laquo;&nbsp;<em>Install</em>&laquo;&nbsp;.</p>
<p>Après redémarrage d&rsquo;Eclipse, Subversive devrait être fonctionnel.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Préparation de l&#8217;environnement : configuration de Jetty</title>
		<link>https://blog.developpez.com/djo-mos/p7727/java/osgi_configuration_port_jetty</link>
		<comments>https://blog.developpez.com/djo-mos/p7727/java/osgi_configuration_port_jetty#comments</comments>
		<pubDate>Tue, 09 Jun 2009 23:11:07 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OSGi côté serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans ce triosième volet de la série parlant de l&#8217;utilisation d&#8217;OSGi côté serveur, je vais présenter comment on peut configurer jetty. Par défaut, Jetty utilise le port 8080, ce qui peut poser problème quand on a un autre serveur sur ce port. Pour résoudre celà, on va créer un fragment qui contient les fichiers de configuration de Jetty. J&#8217;avais présenté en détail comment céer un fragment dans le billet précédent : « Préparation de l&#8217;environnement [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans ce triosième volet de la série parlant de l&rsquo;utilisation d&rsquo;OSGi côté serveur, je vais présenter comment on peut configurer jetty.</p>
<p>Par défaut, Jetty utilise le port 8080, ce qui peut poser problème quand on a un autre serveur sur ce port.</p>
<p>Pour résoudre celà, on va créer un fragment qui contient les fichiers de configuration de Jetty. J&rsquo;avais présenté en détail comment céer un fragment dans le billet précédent : « <a href="http://blog.developpez.com/djo-mos/p7515/java/osgi/osgi-cote-serveur/osgi-configuration-log4j-logging/">Préparation de l&rsquo;environnement : configuration de log4j</a> »<br />
<span id="more-3"></span></p>
<p>Créez donc un fragment en utilisant l&rsquo;assistant offert par PDE en utilisant « sse.jetty.config » comme nom et en sélectionnant « org.springframework.osgi.jetty.start.osgi » comme host.</p>
<p>Dans ce fragment, créez un dossier « etc » à la racine du projet avec un fichier jetty.xml dedans dont voici le contenu :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;?xml version=&quot;1.0&quot;?&gt; <br />
&lt;!DOCTYPE Configure PUBLIC &quot;-//Mort Bay Consulting//DTD Configure//EN&quot; &quot;http://jetty.mortbay.org/configure.dtd&quot;&gt; <br />
&nbsp;<br />
&lt;!-- =============================================================== --&gt; <br />
&lt;!-- Configure the Jetty Server &nbsp;(OSGi specific) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&lt;!-- Documentation of this file format can be found at: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&lt;!-- http://docs.codehaus.org/display/JETTY/jetty.xml &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&lt;!-- =============================================================== --&gt; <br />
&nbsp;<br />
&nbsp;<br />
&lt;Configure id=&quot;Server&quot; class=&quot;org.mortbay.jetty.Server&quot;&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Server Thread Pool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;ThreadPool&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;!-- Default bounded blocking threadpool &nbsp;<br />
&nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.thread.BoundedThreadPool&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;minThreads&quot;&gt;10&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;maxThreads&quot;&gt;250&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;lowThreads&quot;&gt;25&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &lt;!-- Optional Java 5 bounded threadpool with job queue &nbsp;<br />
&nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.thread.concurrent.ThreadPool&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;corePoolSize&quot;&gt;250&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;maximumPoolSize&quot;&gt;250&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;/Set&gt; <br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Set connectors &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- One of each type! &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- Use this connector for many frequently idle connections <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and for threadless continuations. <br />
&nbsp; &nbsp; --&gt; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &lt;Call name=&quot;addConnector&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.jetty.nio.SelectChannelConnector&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;host&quot;&gt;&lt;SystemProperty name=&quot;jetty.host&quot; /&gt;&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;port&quot;&gt;&lt;SystemProperty name=&quot;jetty.port&quot; default=&quot;9090&quot;/&gt;&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;maxIdleTime&quot;&gt;30000&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;Acceptors&quot;&gt;2&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;statsOn&quot;&gt;false&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;confidentialPort&quot;&gt;9443&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Set name=&quot;lowResourcesConnections&quot;&gt;5000&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Set name=&quot;lowResourcesMaxIdleTime&quot;&gt;5000&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Arg&gt; <br />
&nbsp; &nbsp; &lt;/Call&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- Use this connector if NIO is not available. &nbsp;<br />
&nbsp; &nbsp; &lt;Call name=&quot;addConnector&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.jetty.bio.SocketConnector&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;port&quot;&gt;8081&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;maxIdleTime&quot;&gt;50000&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;lowResourceMaxIdleTime&quot;&gt;1500&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Arg&gt; <br />
&nbsp; &nbsp; &lt;/Call&gt; <br />
&nbsp; &nbsp; --&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --&gt; <br />
&nbsp; &nbsp; &lt;!-- To add a HTTPS SSL listener &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- see jetty-ssl.xml to add an ssl connector. use &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --&gt; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Set up global session ID manager &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- <br />
&nbsp; &nbsp; &lt;Set name=&quot;sessionIdManager&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.jetty.servlet.HashSessionIdManager&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;workerName&quot;&gt;node1&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &lt;/Set&gt; <br />
&nbsp; &nbsp; --&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Set handler Collection Structure &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; &nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;handler&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;New id=&quot;Handlers&quot; class=&quot;org.mortbay.jetty.handler.HandlerCollection&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;handlers&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Array type=&quot;org.mortbay.jetty.Handler&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;New id=&quot;Contexts&quot; class=&quot;org.mortbay.jetty.handler.ContextHandlerCollection&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;New id=&quot;DefaultHandler&quot; class=&quot;org.mortbay.jetty.handler.DefaultHandler&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;New id=&quot;RequestLog&quot; class=&quot;org.mortbay.jetty.handler.RequestLogHandler&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Array&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Configure the context deployer &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- A context deployer will deploy contexts described in &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- configuration files discovered in a directory. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- The configuration directory can be scanned for hot &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- deployments at the configured scanInterval. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- This deployer is configured to deploy contexts configured &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- in the $JETTY_HOME/contexts directory &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &lt;!-- <br />
&nbsp; &lt;Call name=&quot;addLifeCycle&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.jetty.deployer.ContextDeployer&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;contexts&quot;&gt;&lt;Ref id=&quot;Contexts&quot;/&gt;&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;configurationDir&quot;&gt;&lt;SystemProperty name=&quot;jetty.home&quot; default=&quot;.&quot;/&gt;/contexts&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;scanInterval&quot;&gt;1&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Arg&gt; <br />
&nbsp; &nbsp; &lt;/Call&gt; <br />
&nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Configure the webapp deployer. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- A webapp &nbsp;deployer will deploy standard webapps discovered &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- in a directory at startup, without the need for additional &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- configuration files. &nbsp; &nbsp;It does not support hot deploy or &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- non standard contexts (see ContextDeployer above). &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- This deployer is configured to deploy webapps from the &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- $JETTY_HOME/webapps directory &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- Normally only one type of deployer need be used. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- <br />
&nbsp; &nbsp; &lt;Call name=&quot;addLifeCycle&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.jetty.deployer.WebAppDeployer&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;contexts&quot;&gt;&lt;Ref id=&quot;Contexts&quot;/&gt;&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;webAppDir&quot;&gt;&lt;SystemProperty name=&quot;jetty.home&quot; default=&quot;.&quot;/&gt;/webapps&lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;parentLoaderPriority&quot;&gt;false&lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;extract&quot;&gt;true&lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;allowDuplicates&quot;&gt;false&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;defaultsDescriptor&quot;&gt;&lt;SystemProperty name=&quot;jetty.home&quot; default=&quot;.&quot;/&gt;/etc/webdefault.xml&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Arg&gt; <br />
&nbsp; &nbsp; &lt;/Call&gt; <br />
&nbsp; &nbsp; --&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Configure Authentication Realms &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- Realms may be configured for the entire server here, or &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- they can be configured for a specific web app in a context &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- configuration (see $(jetty.home)/contexts/test.xml for an &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- example). &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- <br />
&nbsp; &nbsp; &lt;Set name=&quot;UserRealms&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Array type=&quot;org.mortbay.jetty.security.UserRealm&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Item&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.jetty.security.HashUserRealm&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;name&quot;&gt;Test Realm&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;config&quot;&gt;&lt;SystemProperty name=&quot;jetty.home&quot; default=&quot;.&quot;/&gt;/etc/realm.properties&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;refreshInterval&quot;&gt;0&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/Item&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Array&gt; <br />
&nbsp; &nbsp; &lt;/Set&gt; <br />
&nbsp; &nbsp; --&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- Configure Request Log &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- Request logs &nbsp;may be configured for the entire server here, --&gt; <br />
&nbsp; &nbsp; &lt;!-- or they can be configured for a specific web app in a &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- contexts configuration (see $(jetty.home)/contexts/test.xml --&gt; <br />
&nbsp; &nbsp; &lt;!-- for an example). &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;Ref id=&quot;RequestLog&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Set name=&quot;requestLog&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;New id=&quot;RequestLogImpl&quot; class=&quot;org.mortbay.jetty.NCSARequestLog&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;filename&quot;&gt;&lt;SystemProperty name=&quot;jetty.logs&quot; default=&quot;./logs&quot;/&gt;/yyyy_mm_dd.request.log&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;filenameDateFormat&quot;&gt;yyyy_MM_dd&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;retainDays&quot;&gt;90&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;append&quot;&gt;true&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;extended&quot;&gt;true&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;logCookies&quot;&gt;false&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Set name=&quot;LogTimeZone&quot;&gt;GMT&lt;/Set&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;/Ref&gt; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &lt;New id=&quot;ServerLog&quot; class=&quot;java.io.PrintStream&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;New class=&quot;org.mortbay.util.RolloverFileOutputStream&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Arg&gt;&lt;SystemProperty name=&quot;jetty.logs&quot; default=&quot;./logs&quot;/&gt;/yyyy_mm_dd.stderrout.log&lt;/Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Arg type=&quot;boolean&quot;&gt;false&lt;/Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Arg type=&quot;int&quot;&gt;90&lt;/Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Arg&gt;&lt;Call class=&quot;java.util.TimeZone&quot; name=&quot;getTimeZone&quot;&gt;&lt;Arg&gt;GMT&lt;/Arg&gt;&lt;/Call&gt;&lt;/Arg&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Get id=&quot;ServerLogName&quot; name=&quot;datedFilename&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/Arg&gt; <br />
&nbsp; &nbsp; &lt;/New&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- &lt;Call class=&quot;org.mortbay.log.Log&quot; name=&quot;info&quot;&gt;&lt;Arg&gt;Redirecting stderr/stdout to &lt;Ref id=&quot;ServerLogName&quot;/&gt;&lt;/Arg&gt;&lt;/Call&gt; <br />
&nbsp; &nbsp; &lt;Call class=&quot;java.lang.System&quot; name=&quot;setErr&quot;&gt;&lt;Arg&gt;&lt;Ref id=&quot;ServerLog&quot;/&gt;&lt;/Arg&gt;&lt;/Call&gt; <br />
&nbsp; &nbsp; &lt;Call class=&quot;java.lang.System&quot; name=&quot;setOut&quot;&gt;&lt;Arg&gt;&lt;Ref id=&quot;ServerLog&quot;/&gt;&lt;/Arg&gt;&lt;/Call&gt; <br />
&nbsp; &nbsp; &nbsp;--&gt; <br />
&nbsp;<br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;!-- extra options &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt; <br />
&nbsp; &nbsp; &lt;!-- =========================================================== --&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;stopAtShutdown&quot;&gt;true&lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;sendServerVersion&quot;&gt;true&lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;sendDateHeader&quot;&gt;true&lt;/Set&gt; <br />
&nbsp; &nbsp; &lt;Set name=&quot;gracefulShutdown&quot;&gt;1000&lt;/Set&gt; <br />
&nbsp;<br />
&lt;/Configure&gt;</div></div>

</pre>
</blockquote>
<p>Notez surtout que j&rsquo;ai utilisé 9090 comme valeur pour le port, au lieu du 8080.</p>
<p>Voilà. Il suffit ensuite d&rsquo;ajouter ce fragment à votre configuration de lancement pour que Jetty utilise le port 9090.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Comment créer une nouvelle nature de projet ?</title>
		<link>https://blog.developpez.com/djo-mos/p7704/eclipse/platform/comment_creer_une_nouvelle_nature_de_pro</link>
		<comments>https://blog.developpez.com/djo-mos/p7704/eclipse/platform/comment_creer_une_nouvelle_nature_de_pro#comments</comments>
		<pubDate>Thu, 04 Jun 2009 01:06:07 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Platform]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce billet entame une série de billets de type howto que je compte rédiger autour d&#8217;Eclipse en tant que plateforme de développement et non plus comme IDE. Disons que c&#8217;est une sorte d&#8217;aide mémoire, pour moi certainement, et pour vous aussi je l&#8217;espère. Le style sera un peu minimaliste : je vais aller directement à l&#8217;essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce billet entame une série de billets de type <em>howto</em> que je compte rédiger autour d&rsquo;Eclipse en tant que plateforme de développement et non plus comme IDE.<br />
Disons que c&rsquo;est une sorte d&rsquo;aide mémoire, pour moi certainement, et pour vous aussi je l&rsquo;espère.</p>
<p>Le style sera un peu minimaliste : je vais aller directement à l&rsquo;essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas ce qu&rsquo;elle est ou à quoi elle sert.</p>
<p>Commençons par un point simple : Comment créer une nouvelle nature de projet ?</p>
<p><span id="more-194"></span></p>
<h1 style="text-align: left">1. Définir la classe de la nature</h1>
<p>Dans le plug-in qui va définir cette nature, modifier le manifest (META-INF/MANIFEST.MF) pour ajouter le bundle org.eclipse.core.resources (qui définit l&rsquo;interface IProjectNature ainsi que le point d&rsquo;extension org.eclipse.core.resources.natures) et org.eclipse.core.runtime (qui définit CoreException) :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Require-Bundle: org.eclipse.core.resources, <br />
&nbsp;org.eclipse.core.runtime</div></div>

</pre>
</blockquote>
<p>Créez ensuite une classe qui implémente org.eclipse.core.resources.IProjectNature :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package com.developpez.djo.howto.nature; <br />
&nbsp;<br />
import org.eclipse.core.resources.IProject; <br />
import org.eclipse.core.resources.IProjectNature; <br />
import org.eclipse.core.runtime.CoreException; <br />
&nbsp;<br />
public class DummyNature implements IProjectNature { <br />
&nbsp; public static final String NATURE_ID = &quot;com.developpez.djo.howto.nature.dummyNature&quot;; <br />
&nbsp;<br />
&nbsp; private IProject project; <br />
&nbsp;<br />
&nbsp; public void configure() throws CoreException { <br />
&nbsp;<br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void deconfigure() throws CoreException { <br />
&nbsp;<br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public IProject getProject() { <br />
&nbsp; &nbsp; return project; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void setProject(IProject project) { <br />
&nbsp; &nbsp; this.project = project; <br />
&nbsp; } <br />
}</div></div>

</pre>
</blockquote>
<p>Notez le champ NATURE_ID que j&rsquo;ai mis en public car ça va servir pour récupérer l&rsquo;identifiant de la nature lors de son affectation à un projet par exemple.</p>
<h1 style="text-align: left">2. Déclarer la nature dans plugin.xml</h1>
<p>Il faut ensuite déclarer la nature dans plugin.xml :<br />
 name=&nbsp;&raquo;Ma nature de projets&nbsp;&raquo;</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;extension <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;id=&quot;dummyNature&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name=&quot;Ma nature de projets&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;point=&quot;org.eclipse.core.resources.natures&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;runtime&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;run <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;class=&quot;com.developpez.djo.howto.nature.DummyNature&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/run&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/runtime&gt; <br />
&lt;/extension&gt;</div></div>

</pre>
</blockquote>
<h2 style="text-align: left">N.B. (casse gueule)</h2>
<p>Là il vous faut être attention : dans l&rsquo;attribut id, il faut mettre seulement la partie de l&rsquo;identifiant de la nature qui vient après l&rsquo;identifiant du plugin.<br />
Par exemple, dans ce cas ci, le plugin qui définit la nature a comme identifiant &laquo;&nbsp;com.developpez.djo.howto&nbsp;&raquo; (déclare dans le manifest) :</p>
<blockquote><pre><code class="codecolorer text default"><span class="text">Bundle-SymbolicName: com.developpez.djo.howto.nature;singleton:=true</span></code></pre>
</blockquote>
<p>L&rsquo;identifiant complet de la nature est calculé de cette façon :</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;nom-symbloique-du-bundle&gt; . &lt;id-de-la-nature-tel-que-saisi-dans-plugin.xml&gt; <br />
com.developpez.djo.howto.nature &nbsp;. dummyNature</div></div>

</pre>
<p>Ce qui donne : com.developpez.djo.howto.nature.dummyNature, et c&rsquo;est cette valeur là qu&rsquo;il faut mettre dans le champ NATURE_ID.</p>
<h1 style="text-align: left">3. Associer une image (overlay) à la nature</h1>
<p>Pour associer une image à la nature (c&rsquo;est un overlay qui sera affiché au dessus de l&rsquo;icône du dossier bleu d&rsquo;un projet), il faut passer par un autre point d&rsquo;extension qui est &laquo;&nbsp;org.eclipse.ui.ide.projectNatureImages&nbsp;&raquo; qui se trouve dans le plug-in &laquo;&nbsp;org.eclipse.ui.ide&nbsp;&raquo;. il vous faut donc ajouter ce plugin dans la section Require-Bundle du manifest (quoi que j&rsquo;ai remarqué que même si j&rsquo;ajoute pas une dépendance vers ce plugin, ça fonctionne quand même), et ensuite, dans plugin.xml, ajoutez :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;extension <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;point=&quot;org.eclipse.ui.ide.projectNatureImages&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;image <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; icon=&quot;icons/dummy-nature.png&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id=&quot;com.developpez.djo.howto.nature.dummyNature.img&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; natureId=&quot;com.developpez.djo.howto.nature.dummyNature&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/image&gt; <br />
&lt;/extension&gt;</div></div>

</pre>
</blockquote>
<p>Dans icon, utilisez le nom relatif d&rsquo;une icône (de petite taille de préférence, genre 8&#215;8). Dans id, renseigner n&rsquo;importe quoi du moment que ça reste unique et un identifiant valide. Personnellement, j&rsquo;ajoute &laquo;&nbsp;.img&nbsp;&raquo; à l&rsquo;id de la nature. Enfin, dans natureId, renseigner l&rsquo;identifiant complet de la nature.</p>
<h2 style="text-align: left">N.B. (casse gueule)</h2>
<p>N&rsquo;oubliez pas d&rsquo;inclure le dossier icons dans le binary build.</p>
<h1 style="text-align: left">4. Source</h1>
<p>Projet Eclipse (dans un jar) : <a href="http://ftp-developpez.com/djo-mos/data/blog/howto-eclipse-platform/com.developpez.djo.howto.nature.source_1.0.0.jar">com.developpez.djo.howto.nature.source_1.0.0.jar</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Update-site de Galileo</title>
		<link>https://blog.developpez.com/djo-mos/p7551/eclipse/update_site_de_galileo</link>
		<comments>https://blog.developpez.com/djo-mos/p7551/eclipse/update_site_de_galileo#comments</comments>
		<pubDate>Wed, 29 Apr 2009 17:50:03 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Juste pour info, voici l&#8217;update-site central de la future version d&#8217;Eclipse 3.5 Galileo : => http://download.eclipse.org/releases/galileo/ Je viens de tester rapidement avec un Eclipse RCP Galileo M6, et j&#8217;ai pu installer Subversive et le Web Page Editor à partir de cet update-site. [edit]Bon, après que j&#8217;ai installé le connecteur SVNKit du site de polarion, ça a été la cata xD &#8230; voilà, vous êtes prévenus :p]]></description>
				<content:encoded><![CDATA[<p>Juste pour info, voici l&rsquo;update-site central de la future version d&rsquo;Eclipse 3.5 Galileo :</p>
<p>=> http://download.eclipse.org/releases/galileo/</p>
<p>Je viens de tester rapidement avec un Eclipse RCP Galileo M6, et j&rsquo;ai pu installer Subversive et le Web Page Editor à partir de cet update-site.</p>
<p><ins>[edit]Bon, après que j&rsquo;ai installé le connecteur SVNKit du site de polarion, ça a été la cata xD &#8230; voilà, vous êtes prévenus</ins> :p</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Il n&#8217;est plus possible d&#8217;utiliser Scala dans un dynamic web project (dans eclipse)</title>
		<link>https://blog.developpez.com/djo-mos/p7424/hors-sujet/il_n_est_plus_possible_d_utiliser_scala_</link>
		<comments>https://blog.developpez.com/djo-mos/p7424/hors-sujet/il_n_est_plus_possible_d_utiliser_scala_#comments</comments>
		<pubDate>Tue, 31 Mar 2009 19:51:59 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Hors Sujet]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Qu&#8217;est ce que ça fait plaisir de voir que je ne suis pas seul au monde : http://vikasrao.wordpress.com/2009/02/19/scala-nature-in-eclipse/ En gros, avec le nouveau plugin Scala, bien qu&#8217;il soit beacoup plus simple d&#8217;ajouter une nature Scala à un projet Java (clic droit, &#171;&#160;Scala Tools> Add Scala Nature&#160;&#187;, ceci ne marche pas avec un projet de type &#171;&#160;Dynamic web project&#160;&#187; &#8230; exit donc ça ou ça => https://lampsvn.epfl.ch/trac/scala/ticket/1744]]></description>
				<content:encoded><![CDATA[<p>Qu&rsquo;est ce que ça fait plaisir de voir que je ne suis pas seul au  monde :</p>
<p>http://vikasrao.wordpress.com/2009/02/19/scala-nature-in-eclipse/</p>
<p>En gros, avec le nouveau plugin Scala, bien qu&rsquo;il soit beacoup plus simple d&rsquo;ajouter une nature Scala à un projet Java (clic droit, &laquo;&nbsp;Scala Tools> Add Scala Nature&nbsp;&raquo;, ceci ne marche pas avec un projet de type &laquo;&nbsp;Dynamic web project&nbsp;&raquo; &#8230; exit donc <a href="http://blog.developpez.com/djo-mos/p5399/java/scala/ajouter-le-support-scala-a-un-projet-web/">ça</a> ou <a href="http://blog.developpez.com/djo-mos/p5428/java/wicket/wicket-et-scala-voici-ce-que-ca-donne/">ça</a> <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /></p>
<p>=> https://lampsvn.epfl.ch/trac/scala/ticket/1744</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie d&#8217;Eclipse Ganymede 3.4.2 (SR2)</title>
		<link>https://blog.developpez.com/djo-mos/p7292/eclipse/sortie_eclipse_ganymede_3_4_2_sr2</link>
		<comments>https://blog.developpez.com/djo-mos/p7292/eclipse/sortie_eclipse_ganymede_3_4_2_sr2#comments</comments>
		<pubDate>Fri, 27 Feb 2009 09:41:49 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Hier, une seconde version de maintenance d&#8217;Eclipse Ganymede 3.4 sorti en Juin dernier était rendu disponible. Il s&#8217;agit de la version 3.4.2 ou Service Release 2 (SR2) qui apporte principalement des correctifs aux bugs découverts depuis la sortie d&#8217;Eclipse 3.4. A noter que tous les packages d&#8217;Eclipse Ganymede sont disponibles dans cette version. La version SDK est téléchargeable par ici : => http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/index.php A noter aussi que les packages (rcp, jee, etc.) ne sont pas [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Hier, une seconde version de maintenance d&rsquo;Eclipse Ganymede 3.4 <a href="http://blog.developpez.com/eclipse?title=eclipse_3_4_ganymede_est_sorti">sorti en Juin dernier</a> était rendu disponible. Il s&rsquo;agit de la version 3.4.2 ou Service Release 2 (SR2) qui apporte principalement des correctifs aux bugs découverts depuis la sortie d&rsquo;Eclipse 3.4.</p>
<p>A noter que tous les packages d&rsquo;Eclipse Ganymede sont disponibles dans cette version.</p>
<p>La version SDK est téléchargeable par ici :</p>
<p>=> http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/index.php</p>
<p>A noter aussi que les packages (rcp, jee, etc.) ne sont pas encore directement disponibles dans la nouvelle version, dans la mesure où la page http://www.eclipse.org/downloads/ pointe toujours vers les versions SR1.<br />
Toutefois, j&rsquo;ai pu récupérer la version RCP en SR2, moyennant la modification de l&rsquo;url de la SR1 de :</p>
<p>http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-rcp-ganymede-SR1-linux-gtk.tar.gz</p>
<p>à</p>
<p>http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR2/eclipse-rcp-ganymede-SR2-linux-gtk.tar.gz</p>
<p>:p</p>
<p>Et voici un rapport Bugzilla listant les points réglés pour la version 3.4.2 :</p>
<p>=> <a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc_type=allwordssubstr;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;classification=Eclipse;classification=RT;field-1-0-0=bug_status;field-1-1-0=classification;field-1-2-0=product;field-1-3-0=resolution;field-1-4-0=target_milestone;field0-0-0=noop;keywords_type=allwords;long_desc_type=allwordssubstr;product=Equinox;product=JDT;product=PDE;product=Platform;query_format=advanced;remaction=;resolution=FIXED;short_desc=;short_desc_type=allwordssubstr;status_whiteboard=;status_whiteboard_type=allwordssubstr;target_milestone=3.4.2;type-1-0-0=anyexact;type-1-1-0=anyexact;type-1-2-0=anyexact;type-1-3-0=anyexact;type-1-4-0=anyexact;type0-0-0=noop;value-1-0-0=RESOLVED%2CVERIFIED%2CCLOSED;value-1-1-0=Eclipse%2CRT;value-1-2-0=Equinox%2CJDT%2CPDE%2CPlatform;value-1-3-0=FIXED;value-1-4-0=3.4.2;value0-0-0=|;query_based_on=">Rapport Bugzilla</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie du cinquième Milestone du futur Eclipse Galileo (3.5)</title>
		<link>https://blog.developpez.com/djo-mos/p7169/eclipse/sortie_milestone5_eclipse_galileo_3_5</link>
		<comments>https://blog.developpez.com/djo-mos/p7169/eclipse/sortie_milestone5_eclipse_galileo_3_5#comments</comments>
		<pubDate>Wed, 04 Feb 2009 13:00:17 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le cinquième Milestone de la prochaine version d&#8217;Eclipse 3.5 du nom de code Galileo (choisi après cette discussion) est disponible (depuis Hier) : Pour ce qui est des nouveautés, en voici quelques unes (un lien vers la liste complète est fourni à la fin du billet) : Platform / Equinox Les IHMs d&#8217;installation/mise à jour de plugins continuent d&#8217;être retravaillés pour maximiser leur utilisabilité : Inclusion d&#8217;une implémentation de l&#8217;RFC 138 (Composite Bundles) du futur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le cinquième <em>Milestone</em> de la prochaine version d&rsquo;<strong>Eclipse</strong> <strong>3.5</strong> du nom de code <a href="http://wiki.eclipse.org/Galileo_Simultaneous_Release"><strong>Galileo</strong></a> (choisi après <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=235189">cette discussion</a>) est disponible (depuis Hier) :</p>
<p>Pour ce qui est des nouveautés, en voici quelques unes (un lien vers la liste complète est fourni à la fin du billet) :</p>
<p><span id="more-93"></span></p>
<ul>
<li><strong>Platform / Equinox</strong>
<ul>
<li>Les IHMs d&rsquo;installation/mise à jour de plugins continuent d&rsquo;être retravaillés pour maximiser leur utilisabilité :<br />
<img src="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/images/p2install.png" alt="p2 install" title="" />
    </li>
<li>Inclusion d&rsquo;une implémentation de l&rsquo;RFC 138 (Composite Bundles) du futur OSGi 4.2.</li>
<li>Toujours dans le cadre de l&rsquo;implémentation du futur OSGi 4.2, quelques ajouts à l&rsquo;API core d&rsquo;OSGi, comme <em>org.osgi.framework.Bundle#getVersion()</em> par exemple</li>
</ul>
</li>
<li><strong>SWT</strong>
<ul>
<li>Le binding Cocoa de SWT n&rsquo;est plus marqué comme &laquo;&nbsp;Early Access&nbsp;&raquo; et est désormais &laquo;&nbsp;Feature complete&nbsp;&raquo;</li>
<li>Le style SWT.SEARCH est désormais supporté sur toutes les plateformes</li>
<li>StyledText supporte les liens</li>
</ul>
</li>
<li><strong>Platform UI</strong>
<ul>
<li>Ajout des fonctionnalités &laquo;&nbsp;Go To&nbsp;&raquo; et &laquo;&nbsp;Go Into&nbsp;&raquo; au projct Explorer dans un effort de l&rsquo;amener à pied d&rsquo;égalité avec le Package Explorer</li>
<li>Le style SWT.SEARCH est désormais supporté sur toutes les plateformes</li>
<li>StyledText supporte les liens</li>
</ul>
</li>
<li><strong>JDT</strong>  : Le tooling de développement Java
<ul>
<li>Possibilité de faire le rename refactor depuis le quick fix</li>
<li>Le JAr Exporter peut maintenant packager les dépendances sous forms de Jars dans le jar exporté ou à côté.</li>
</ul>
</li>
<li><strong>PDE</strong> : Le tooling de développement de plug-ins Eclipse
<ul>
<li>Les préférences des target platforms ont été retravaillés</li>
<li>Là c&rsquo;est mon favori sans le moindre doute : possiblité de définir les Start level des plugins dans Eclipse application launch configuration, comme ça l&rsquo;est déjà pour OSGi framework launch configuration</li>
<li>La vue &laquo;&nbsp;Plugin Registry&nbsp;&raquo; permet désormais de requêter les services OSGi</li>
</ul>
</li>
</ul>
<p>=> <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/eclipse-news-M5.html">Liste complète des nouveautés Nouveautés</a><br />
=> <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/index.php">Télécharger (la version SDK)</a></p>
<p>=> Si vous sautez le pas et décidez de tester l&rsquo;une ou l&rsquo;autre des versions Galileo, vous êtes encouragés à parler de vos impressions dans cette discussion dans le forum Eclipse Java :</p>
<h3><a href="http://www.developpez.net/forums/d630742/environnements-developpement/eclipse/eclipse-java/vos-impressions-galileo-eclipse-3-5-a/">Vos impressions sur Galileo (Eclipse 3.5) ?</a></h3>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Préparation de l&#8217;environnement : la target platform</title>
		<link>https://blog.developpez.com/djo-mos/p7098/java/osgi_preparation_target_platform</link>
		<comments>https://blog.developpez.com/djo-mos/p7098/java/osgi_preparation_target_platform#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:58:17 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OSGi côté serveur]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce billet est le premier d&#8217;une série (que j&#8217;espère finir pour une fois) de billets à propos de l&#8217;utilisation d&#8217;OSGi du côté serveur. L&#8217;utilisation la plus populaire d&#8217;OSGi est plus du côté client, avec Eclipse qui l&#8217;utilise comme noyeau et base de son architecture de plugins, ainsi que dans le monde de l&#8217;embarqué. Dans ce premier billet, je vais présenter l&#8217;étape de préparation de l&#8217;environnement de développement,et plus particulièrement la notation de Target Platform. 1. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce billet est le premier d&rsquo;une série (que j&rsquo;espère finir pour une fois) de billets à propos de l&rsquo;utilisation d&rsquo;OSGi du côté serveur.<br />
L&rsquo;utilisation la plus populaire d&rsquo;OSGi est plus du côté client, avec Eclipse qui l&rsquo;utilise comme noyeau et base de son architecture de plugins, ainsi que dans le monde de l&rsquo;embarqué.</p>
<p>Dans ce premier billet, je vais présenter l&rsquo;étape de préparation de l&rsquo;environnement de développement,et plus particulièrement la notation de <strong><em>Target Platform</em></strong>.</p>
<p><span id="more-1"></span></p>
<h1 style="text-align: left;">1. Présentation</h1>
<p>Il s&rsquo;agit ici de définir l&rsquo;ensemble initial de plugins qui va constituer l&rsquo;environnement d&rsquo;exécution de notre serveur.</p>
<p>Il nous faut aussi configurer Eclipse pour qu&rsquo;il reconnaisse et travaille sur cet ensemble de plugins.<br />
Ca permettrait d&rsquo;une part de limiter le nombre de choix présentés dans divers endroits (lors de sélection de plugins requis et des packages importés, des plugins à inclure dans une configuration d&rsquo;exécution, etc.) mais aussi pour éviter une dépendance accidentelle à un plugin non désiré (je pense notamment aux plugins d&rsquo;Eclipse par exemple)</p>
<h1 style="text-align: left;">2. Vue d&rsquo;ensemble</h1>
<p>La target platform sera constituée de :</p>
<ul>
<li><strong>Equinox</strong> : C&rsquo;est le coeur du serveur. Il implémente les spécifications OSGi et servira comme conteneur qui charge et gère le cycle de vie des autres plugins</li>
<li><strong>Spring Dynamic Modules</strong> : C&rsquo;est une sorte de pont entre le monde OSGi (registre des services) et le monde de Spring (application context). De plus, Spring DM permet de faire tourner des applications Web Java ordinaires (Servlets, JSPs, etc.) dans un conteneur OSGi (OSGi offre un support basique pour le web à travers HttpService, mais c&rsquo;est très limité)</li>
<li><strong>Spring</strong> : Il est là car tout d&rsquo;abord il est requis par Spring DM, mais aussi pour son moteur IoC ainsi que les abstractions qu&rsquo;il offre au dessus de plusieurs technologies Java (JDBC et Remoting entre autres)</li>
<li><strong>Jetty</strong> : Comme énoncé plus tôt, le HttpService d&rsquo;OSGi est très limité parapport à la puissance dont on dispose dans une application web Java ordinaire. J&rsquo;ai donc inclus Jetty dans la configuration de base de notre serveur pour avoir toute la puissance requise sous la main</li>
<li>Quelques autre dépendances, comme des librairies de logging</li>
</ul>
<blockquote><p>Notez qu&rsquo;il est tout à fait possible (et très simple) d&rsquo;utiliser Tomcat à la place de Jetty. Ceci revient juste à remplacer les jars de Jetty par ceux de Tomcat.</p></blockquote>
<h1 style="text-align: left;">3. Récupération des fichiers nécessaires</h1>
<p>Il va nous falloir télécharger plusieurs packages pour retrouver les jars nécessaires.</p>
<ul>
<li><strong>Spring DM</strong> : récupérable à <a href="http://www.springsource.com/download/community?project=Spring%20Dynamic%20Modules">cette adresse</a> (pour cet article, j&rsquo;ai utilisé Spring DM 1.2 M2)</li>
<li><strong>Spring Framework</strong> : récupérable à <a href="http://www.springsource.com/download/community?project=Spring%20Framework">cette adresse</a> (pour cet article, j&rsquo;ai utilisé Spring Framework 2.5.6)</li>
</ul>
<p>Après avoir extrait les archives de Spring et de Spring DM, Créez quelque part sur votre disque un dossier qui servira à rassembler les jars de la target platform, par exemple &nbsp;&raquo; server-springdm-1.2.0.m2-spring-2.5.6-jetty &nbsp;&raquo; dans mon cas. </p>
<blockquote><p>Généralement, je crée la target platform en tant que projet (simple) dans mon worksapce Eclipse, histoire de pouvoir le versionner sur SVN par exemple, mais ce n&rsquo;est pas requis. </p></blockquote>
<p>Copiez les fichiers suivants depuis le dossier où vous avez extrait Spring DM vers le dossier de la target platform: </p>
<ul>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-core-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-extender-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-io-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-web-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-web-extender-1.2.0-m2.jar</li>
</ul>
<ul>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.net.sf.cglib-2.1.3.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.org.aopalliance-1.0.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.api-1.5.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.log4j-1.5.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty-6.1.9.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty.start.osgi-1.0.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty-util-6.1.9.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty.web.extender.fragment.osgi-1.0.1.jar</li>
<li>spring-osgi-1.2.0-m2/lib/log4j.osgi-1.2.15-SNAPSHOT.jar</li>
<li>spring-osgi-1.2.0-m2/lib/org.eclipse.osgi-3.2.2.jar</li>
<li>spring-osgi-1.2.0-m2/lib/servlet-api.osgi-2.5-SNAPSHOT.jar</li>
</ul>
<ul>
<li>spring-framework-2.5.6/dist/modules/spring-aop.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-beans.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-context.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-core.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-jdbc.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-tx.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-web.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-webmvc.jar</li>
</ul>
<blockquote><p>Pour vous simplifier la tache, vous pouvez télécharger <a href="http://djo-mos.ftp-developpez.com/data/blog/tp-server-springdm-1.2.0.m2-spring-2.5.6-jetty.zip">cet archive zip (5 Mo)</a> qui contient la target platform décrite plus haut)</p></blockquote>
<h1 style="text-align: left;">4. Configuration d&rsquo;Eclipse</h1>
<p>Dans Eclipse, allez au menu Window -> Preferences et localisez le noeud &laquo;&nbsp;Plug-in Development/Target Platform&nbsp;&raquo;</p>
<p><img src="http://farm4.static.flickr.com/3419/3215905144_d9bcdcc417_o.png" alt="Target Platform Preferences" title="" /></p>
<p>Cliquez sur &laquo;&nbsp;Browse&nbsp;&raquo;, localiser le dossier de la target platform et validez.</p>
<p>Il nous faut maintenant créer une configuration de lancement qui lance notre serveur.</p>
<p>Faites un clic sur le petit flêche orienté vers le bas du bouton Run et sélectionnez &laquo;&nbsp;Run configurations&nbsp;&raquo;</p>
<p><img src="http://farm4.static.flickr.com/3344/3215905482_4ee8a5fa38_o.png" alt="Run config 1" title="" /></p>
<p>Sélectionnez le noeud &laquo;&nbsp;OSGi Framework&nbsp;&raquo;, puis clic droit et &laquo;&nbsp;New&nbsp;&raquo;</p>
<p><img src="http://farm4.static.flickr.com/3506/3215905370_385a0a6058_o.png" alt="Run config 2" title="" /></p>
<p>Saisissez un nom pour cette configuration, &laquo;&nbsp;serveur&nbsp;&raquo; par exemple.<br />
Par défaut, tous les plugins de la target platform sont cochés. Faites le si ce n&rsquo;est pas le cas.</p>
<p>Assurez vous aussi que &laquo;&nbsp;Default start level&nbsp;&raquo; est positionné à 4 et que &laquo;&nbsp;Default-Autostart&nbsp;&raquo; est à true</p>
<p>Il faut maintenant modifer le start level des deux extenders de Spring DM (org.springframework.osgi.extender et org.springframework.osgi.web.extender) pour les mettre à 5 </p>
<p><img src="http://farm4.static.flickr.com/3367/3215054619_3bf7a90dd7_o.png" alt="extender-config-1" title="" /></p>
<p><img src="http://farm4.static.flickr.com/3395/3215055301_1caa38eff8_o.png" alt="extender-config-2" title="" /></p>
<p>Cliquez sur &laquo;&nbsp;Apply&nbsp;&raquo; pour valider.</p>
<h1 style="text-align: left;">5. Test</h1>
<p>Cliquez sur le bouton &laquo;&nbsp;Run&nbsp;&raquo;. La console devrait afficher : </p>
<p><img src="http://farm4.static.flickr.com/3459/3215055427_7cea5df262_o.png" alt="console" title="" /></p>
<p>Et si vous tapez l&rsquo;adresse &laquo;&nbsp;http://localhost:8080/&nbsp;&raquo; dans un navigateur, vous devriez avoir :</p>
<p><img src="http://farm4.static.flickr.com/3505/3215054547_1df10575c2_o.png" alt="Browser" title="" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie du quatrième Milestone du futur Eclipse Galileo (3.5)</title>
		<link>https://blog.developpez.com/djo-mos/p6945/eclipse/sortie_milestone4_eclipse_galileo_3_5</link>
		<comments>https://blog.developpez.com/djo-mos/p6945/eclipse/sortie_milestone4_eclipse_galileo_3_5#comments</comments>
		<pubDate>Mon, 15 Dec 2008 14:37:54 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le quatrième Milestone de la prochaine version d&#8217;Eclipse 3.5 du nom de code Galileo (choisi après cette discussion) est disponible (depuis Vendredi dernier) : Pour ce qui est des nouveautés, en voici quelques unes (un lien vers la liste complète est fourni à la fin du billet) : Platform Cocoa a été porté sur 64bits La boite de dialogue &#171;&#160;customize perspective&#160;&#187; permet désormais de configurer les éléments des menus Le composant FilteredTree (utilisé dans les [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le quatrième <em>Milestone</em> de la prochaine version d&rsquo;<strong>Eclipse</strong> <strong>3.5</strong> du nom de code <a href="http://wiki.eclipse.org/Galileo_Simultaneous_Release"><strong>Galileo</strong></a> (choisi après <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=235189">cette discussion</a>) est disponible (depuis Vendredi dernier) :</p>
<p>Pour ce qui est des nouveautés, en voici quelques unes (un lien vers la liste complète est fourni à la fin du billet) :</p>
<p><span id="more-92"></span></p>
<ul>
<li><strong>Platform</strong>
<ul>
<li>Cocoa a été porté sur 64bits</li>
<li>La boite de dialogue &laquo;&nbsp;customize perspective&nbsp;&raquo; permet désormais de configurer les éléments des menus</li>
<li>Le composant FilteredTree (utilisé dans les préférences par exemple) a été retravaillé visuellement<br />
<a href="http://www.flickr.com/photos/23820026@N06/3110741678/" title="filtered-tree by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3257/3110741678_c3c1b64aba_o.png" width="222" height="127" alt="filtered-tree" /></a>
   </li>
<li>Jetty 6.1 remplace Jetty 5.1</li>
</ul>
</li>
<li><strong>SWT</strong>
<ul>
<li>Possiblité d&rsquo;appeler du code Java à partir de JavaScript dans le widget Browser, et vice-versa</li>
<li>Le composant StyledText permet désormais la sélection par bloc</li>
</ul>
</li>
<li><strong>JDT</strong>  : Le tooling de développement Java
<ul>
<li>Possibilité de supprimer/cacher les working sets via l&rsquo;action &laquo;&nbsp;supprimer&nbsp;&raquo; à partir du Package Explorer</li>
<li>Nouvelle option lors du formatage pour garder les retours à la ligne</li>
</ul>
</li>
<li><strong>PDE</strong> : Le tooling de développement de plug-ins Eclipse
<ul>
<li>Amélioration de l&rsquo;éditeur du produit, ce qui permet de spécifier les états de démarrage des plugins</li>
</ul>
</li>
</ul>
<p>=> <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M4-200812111908/eclipse-news-M4.html">Liste complète des nouveautés Nouveautés</a><br />
=> <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M4-200812111908/index.php">Télécharger (la version SDK)</a></p>
<p>=> Si vous sautez le pas et décidez de tester l&rsquo;une ou l&rsquo;autre des versions Galileo, vous êtes encouragés à parler de vos impressions dans cette discussion dans le forum Eclipse Java :</p>
<h3><a href="http://www.developpez.net/forums/d630742/environnements-developpement/eclipse/eclipse-java/vos-impressions-galileo-eclipse-3-5-a/">Vos impressions sur Galileo (Eclipse 3.5) ?</a></h3>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Développez votre première application multi-bundles avec SpringSource Application Platform et eclipse (1)</title>
		<link>https://blog.developpez.com/djo-mos/p5922/eclipse/developpez_votre_premiere_application_mu</link>
		<comments>https://blog.developpez.com/djo-mos/p5922/eclipse/developpez_votre_premiere_application_mu#comments</comments>
		<pubDate>Thu, 19 Jun 2008 15:25:04 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[SpringSource DM Server/S2AP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Suite à ce billet : Vos premiers pas avec SpringSource Application Platform et eclipse où j&#8217;avais montré comment configurer le tooling STS avec Eclipse ainsi que la création et le déploiement d&#8217;une application exemple, je vais montrer dans ce billet comment développer une application multi-tiers s&#8217;étalant sur plusieurs bundles. 1. Vue d&#8217;ensemble L&#8217;application que je vais utiliser comme exemple est simpliste : elle ne sert qu&#8217;à afficher une liste de personnes (peu importe comment cette [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Suite à ce billet : <a href="http://blog.developpez.com/djo-mos?title=vos_premiers_pas_avec_springsource_appli">Vos premiers pas avec SpringSource Application Platform et eclipse</a> où j&rsquo;avais montré comment configurer le tooling STS avec Eclipse ainsi que la création et le déploiement d&rsquo;une application exemple, je vais montrer dans ce billet comment développer une application multi-tiers s&rsquo;étalant sur plusieurs bundles.</p>
<p><span id="more-181"></span></p>
<h2 style="text-align: left;">1. Vue d&rsquo;ensemble</h2>
<p>L&rsquo;application que je vais utiliser comme exemple est simpliste : elle ne sert qu&rsquo;à afficher une liste de personnes (peu importe comment cette liste est retrouvée) dans une page web.</p>
<p>Seulement, histoire de faire propre, je vais découper cette application en 4 bundles:</p>
<ol>
<li><strong>domain</strong>: C&rsquo;est un bundle qui définit les objets métier (un seul dans notre cas: Person)</li>
<li><strong>service-api</strong>: C&rsquo;est un bundle qui définit les interfaces (contrats) de la couche métier</li>
<li><strong>service-impl</strong>: C&rsquo;est un bundle qui définit les implémentations des services mais aussi les exporte en tant que services OSGi qui seront consommés par le dernier bundle.</li>
<li><strong>web-frontend</strong>: C&rsquo;est un bundle qui définit le front-end web de l&rsquo;application et qui consomme les services exposés par service-impl</li>
</ol>
<p><strong>N.B.: </strong>Je suppose tout au long de ce billet que le serveur S2AP ainsi que le tooling Eclipse correspondant est déjà en place <a href="http://blog.developpez.com/djo-mos?title=vos_premiers_pas_avec_springsource_appli">comme je le montre ici</a>.</p>
<h2 style="text-align: left;">2. Créer le bundle domain</h2>
<p>Dans Eclipse, lancez le wizard &laquo;&nbsp;New Bundle Project&nbsp;&raquo; :</p>
<p><img src="http://farm3.static.flickr.com/2056/2487301296_2f642edb00_o.png" alt="New Bundle Project" title="" /></p>
<p>Saisissez un nom parlant pour ce bundle (<em>djo.s2ap.demo.domain</em> pour moi) et cliquez sur Next.<br />
Là, et c&rsquo;est une nouveauté dans le tooling S2AP pour Eclipse (sur une <a href="https://issuetracker.springsource.com/browse/PLATFORM-13">suggestion de ma part</a>, merci à Christian Dupuis qui l&rsquo;a implémenté), il est possible de choisir le type du bundle (None ou Web) :</p>
<p><img src="http://farm4.static.flickr.com/3265/2587066329_2d6bf6386d_o.png" alt="Bundle Personality" title="" /></p>
<p>Choissisez None et validez.<br />
Créer un package dans le dossier src (j&rsquo;utilise habituellement le nom du projet comme package de base), et créez une classe Person (forcément, mon type de données préféré <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> )</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package djo.s2ap.demo.domain; <br />
&nbsp;<br />
public class Person { <br />
&nbsp; private String name; <br />
&nbsp; private int age; <br />
&nbsp;<br />
&nbsp; public Person(String name, int age) { <br />
&nbsp; &nbsp; super(); <br />
&nbsp; &nbsp; this.name = name; <br />
&nbsp; &nbsp; this.age = age; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public String getName() { <br />
&nbsp; &nbsp; return name; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void setName(String name) { <br />
&nbsp; &nbsp; this.name = name; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public int getAge() { <br />
&nbsp; &nbsp; return age; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void setAge(int age) { <br />
&nbsp; &nbsp; this.age = age; <br />
&nbsp; } <br />
&nbsp;<br />
}</div></div>

</pre>
</blockquote>
<p>Je vais me contenter de cette classe comme mon domaine.</p>
<p>Il faut ensuite exporter le package de cette classe pour qu&rsquo;elle soit visible aux autres bundles.<br />
Pour ce faire, localisez le fichier src/META-INF/MANIFEST.MF et double-cliquez la dessus, ce qui ouvre l&rsquo;éditeur de manifest de STS (encore une fonctionnalité <a href="https://issuetracker.springsource.com/browse/PLATFORM-17">proposé par l&rsquo;auteur de ce billet (moi)</a> et implémentée par l&rsquo;equipe STS (re-merci) !).<br />
Dans l&rsquo;éditeur multi-pages qui se lance, localisez la page &laquo;&nbsp;Runtime&nbsp;&raquo; et activer la.<br />
A gauche, vous trouverez une liste présentant les packages exportés par le bundle en question. Cliquez sur le bouton &laquo;&nbsp;Add&nbsp;&raquo; et dans la fenêtre qui s&rsquo;affiche, sélectionnez l&rsquo;unique package présent (djo.s2ap.demo.domain).</p>
<p>Sinon, il est toujours possible de travailler directement sur le manifest en utilisant le contenu suivant:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Manifest-Version: 1.0 <br />
Bundle-Version: 1.0.0 <br />
Bundle-Name: Domain Bundle <br />
Bundle-ManifestVersion: 2 <br />
Bundle-SymbolicName: djo.s2ap.demo.domain <br />
Export-Package: djo.s2ap.demo.domain</div></div>

</pre>
</blockquote>
<p>Voilà, le premier bundle est prêt.</p>
<h2 style="text-align: left;">3. Créer le bundle service-api</h2>
<p>Comme énoncé plus haut, ce bundle va juste définir les contrats des services (sous forme d&rsquo;interfaces). C&rsquo;est LE pattern OSGi à mon avis, i.e. séparer l&rsquo;interface de l&rsquo;implémentation dans des bundles différents, histoire de pouvoir changer (mettre à jour, corriger des bugs, peaufiner, etc.) l&rsquo;implémentation séparément de son interface mais aussi pour éviter que le consommateur d&rsquo;un service ne dépende de son implémentation.</p>
<p>Dans le cadre de cette application exemple, je vais me contenter d&rsquo;un seul service exposant une seule fonctionnalité qui est de récupérer une liste de personnes.</p>
<p>Commencez par créer un autre bundle nommé &laquo;&nbsp;djo.s2ap.demo.service.api&nbsp;&raquo; dans mon cas (même procédure que pour le bundle domain, choisissez &laquo;&nbsp;None&nbsp;&raquo; comme personality).<br />
Ce bundle aura besoin de voir la classe Person du bundle domain.<br />
Or, justement, j&rsquo;ai exporté le package contenant cette classe. Il ne reste plus qu&rsquo;à importer ce package dans le bundle service.api.</p>
<p>Pour ce faire, localisez et double-cliquez sur le fichier &laquo;&nbsp;src/META-INF/MANIFEST.MF&nbsp;&raquo; du bundle service.api.<br />
Dans l&rsquo;éditeur multi-pages qui s&rsquo;affiche, activez la page &laquo;&nbsp;Dependencies&nbsp;&raquo;.<br />
Dans la liste à gauche (Import Package&nbsp;&raquo;, cliquez sur Add, et localisez le package &laquo;&nbsp;djo.s2ap.demo.domain&nbsp;&raquo; contenant la classe Person (utilisez le filtre):</p>
<p><img src="http://farm4.static.flickr.com/3073/2587263779_de6f479612_o.png" alt="Import Package" title="" /></p>
<p>Sélectionnez ce package et validez.<br />
Ainsi, la classe Person devient visible dans le second bundle.</p>
<p>Créez ensuite un package &laquo;&nbsp;djo.s2ap.demo.service.api&nbsp;&raquo; avec une interface IPersonRepository dont voici le code:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package djo.s2ap.demo.service.api; <br />
&nbsp;<br />
import java.util.List; <br />
&nbsp;<br />
import djo.s2ap.demo.domain.Person; <br />
&nbsp;<br />
public interface IPersonRepository { <br />
&nbsp; List&lt;Person&gt; getPersonsList(); <br />
}</div></div>

</pre>
</blockquote>
<p>Pour finir, il faut exporter le package qui définit cette interface car l&rsquo;implémentation de ce service aura besoin d&rsquo;y accéder.<br />
Donc, comme montré plus haut, exportez le package &laquo;&nbsp;djo.s2ap.demo.service.api&nbsp;&raquo; en utilisant soit l&rsquo;editeur graphique du manifest ou en jouant directement sur le manifest.</p>
<h2 style="text-align: left;">4. to be continued</h2>
<p>Faute d&rsquo;espace et de temps, je vais m&rsquo;arrêter là pour ce billet et je finirais la chose bientôt dans un autre billet.</p>
<p><ins>Toujours faute de temps, mais aussi à cause du fait que j&rsquo;ai abandonné S2DMS, j&rsquo;arrive pas à finir le second volet <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /><br />
J&rsquo;espère au moins pouvoir parler des raisons du pourquoi j&rsquo;ai abandonné cette plateforme (1 raison plus précisément, la notion de PAR)</ins></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
