<?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; OSGi côté serveur</title>
	<atom:link href="https://blog.developpez.com/djo-mos/pcategory/java/osgi/osgi-cote-serveur/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>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>Préparation de l&#8217;environnement : configuration de log4j</title>
		<link>https://blog.developpez.com/djo-mos/p7515/java/spring/spring-framework/osgi_configuration_log4j_logging</link>
		<comments>https://blog.developpez.com/djo-mos/p7515/java/spring/spring-framework/osgi_configuration_log4j_logging#comments</comments>
		<pubDate>Wed, 22 Apr 2009 14:17:34 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[OSGi côté serveur]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans ce second volet de la série de l&#8217;utilisation d&#8217;OSGi côté serveur, je vais présenter comment on peut configurer log4j pour qu&#8217;on puisse voir les logs générés par les différents bundles dans la console d&#8217;Eclipse. Dans un programme Java ordianire, log4j cherche un fichier log4j.properties (ou xml) dans le racine du classpath. Or, dans un conteneur OSGi, la notion de classpath est différente. On n&#8217;a plus de classpath unique par application, mais plutôt un classpath [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans ce second volet de la série de l&rsquo;utilisation d&rsquo;OSGi côté serveur, je vais présenter comment on peut configurer log4j pour qu&rsquo;on puisse voir les logs générés par les différents bundles dans la console d&rsquo;Eclipse.</p>
<p>Dans un programme Java ordianire, log4j cherche un fichier log4j.properties (ou xml) dans le racine du classpath. Or, dans un conteneur OSGi, la notion de classpath est différente. On n&rsquo;a plus de classpath unique par application, mais plutôt un classpath séparé par bundle.</p>
<p><span id="more-2"></span></p>
<p>Pour résoudre celà, on utilise la notion de fragments. Un fragment est un bundle spécial, qui à l&rsquo;exécution (à la pahse de resolution), se trouve attaché et mergé dans un autre bundle hôte. Après, il sera traités exactement comme faisant partie du bundle hôte.</p>
<p>Dans le cas précis de ce billet, on va créer un fragment avec le bundle de log4j comme hôte, et on va placer le fichier log4j.properties dans ce fragment.<br />
Ainsi, quand log4j va rechercher un fichier de configuration dans la racind du classpath (le classpath de son bundle), il trouvera et utilisera ce fichier</p>
<p>Eclipse PDE fournit un assistant pour la création d&rsquo;un fragment. Faites « New > Other > Plug-In Developement > Fragment Project » :</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465677734/" title="fragment-wizard-1 by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3482/3465677734_1d9710c668_o.png" width="441" height="422" alt="fragment-wizard-1" /></a></p>
<p>Saissisez un nom pour ce fragment, « ssosgi.log4j.config » dans mon cas par exemple et cochez l&rsquo;option « an OSGi framework&nbsp;&raquo; sous « Target Platform »:</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465677888/" title="fragment-wizard-2 by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3549/3465677888_6817123aeb_o.png" width="497" height="499" alt="fragment-wizard-2" /></a></p>
<p>Dans la page suivante, utilisez le bouton « Browse » pour sélectionnez le bundle de log4j comme Host Plig-In</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465677976/" title="fragment-wizard-3 by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3216/3465677976_ef36beac7d_o.png" width="497" height="522" alt="fragment-wizard-3" /></a></p>
<p>Et validez.</p>
<p>Dans le projet, créez un fichier log4.properties avec 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">log4j.rootLogger=info, con, file <br />
log4j.appender.con=org.apache.log4j.ConsoleAppender <br />
log4j.appender.con.layout=org.apache.log4j.PatternLayout <br />
log4j.appender.con.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n <br />
&nbsp;<br />
log4j.appender.file=org.apache.log4j.FileAppender <br />
log4j.appender.file.layout=org.apache.log4j.PatternLayout <br />
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F\:%L) - %m%n <br />
log4j.appender.file.File=/home/djo/ssosgi.log <br />
log4j.appender.file.append=false</div></div>

</pre>
</blockquote>
<p>Notez que vous pouvez personnaliser la configuration pour l&rsquo;adapter à vos besoins. Pensez notamment à changer le nom du fichier de log («/home/djo/ssosgi.log» dans mon cas).</p>
<p>Il faut ensuite ajouter ce fragment à la configuration de lancement. Allez dans la fnêtre de configuration de celle-ci (<a href="http://blog.developpez.com/djo-mos/p7098/java/osgi/osgi-cote-serveur/osgi-preparation-target-platform/">comme décrit dans le billet précédent</a>) et cochez le fragment qu&rsquo;on vient de créer dans la liste des plugins à inclure.</p>
<p>Appliquez et lancer la configuration. Vous devriez avoir un log plus détaillé dans la console d&rsquo;Eclipse :</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465707274/" title="console-log by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3509/3465707274_d2df4e4c19_o.png" width="446" height="384" alt="console-log" /></a></p>
]]></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>
	</channel>
</rss>
