<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1501"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1501/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1501/atom/feed</id>
  <updated>2008-03-09T20:29:27+01:00</updated>
  <entry>
    <title>UN classloader volatile</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1501" />
    <id>http://artisan.karma-lab.net/node/1501</id>
    <published>2008-03-09T20:29:27+01:00</published>
    <updated>2008-03-09T20:29:27+01:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="java" />
    <category term="Aucun" />
    <category term="javafr" />
    <category term="OK" />
    <category term="Snipet" />
    <summary type="html"><![CDATA[<p>Classloader permettant un rechargement à chaud des classes</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Classloader permettant un rechargement à chaud des classes</p>
<!--break-->

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw1">public</span> <span class="kw1">class</span> VolatilClassLoader <span class="kw1">extends</span> <a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3AClassLoader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ClassLoader</span></a> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; @Override <span class="kw1">public</span> Class<span class="sy0">&lt;?&gt;</span> loadClass<span class="br0">&#40;</span><a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> name, <span class="kw4">boolean</span> resolve<span class="br0">&#41;</span> <span class="kw1">throws</span> <a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3AClassNotFoundException+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ClassNotFoundException</span></a> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3ASystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Resolving &quot;</span> <span class="sy0">+</span> name<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3AFile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> file <span class="sy0">=</span> Classpath.<span class="me1">findClass</span><span class="br0">&#40;</span>name<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> data <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>file <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span> file.<span class="me1">length</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">new</span> java.<span class="me1">io</span>.<a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3AFileInputStream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">FileInputStream</span></a><span class="br0">&#40;</span>file<span class="br0">&#41;</span>.<span class="me1">read</span><span class="br0">&#40;</span>data<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">catch</span> <span class="br0">&#40;</span>java.<span class="me1">io</span>.<a target="blank" href="http://www.google.com/search?hl=en&amp;q=allinurl%3AIOException+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>data <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">super</span>.<span class="me1">loadClass</span><span class="br0">&#40;</span>name, resolve<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Class</span> klass <span class="sy0">=</span> defineClass<span class="br0">&#40;</span>name, data, <span class="nu0">0</span>, data.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>resolve<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; resolveClass<span class="br0">&#40;</span>klass<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> klass<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>    ]]></content>
  </entry>
</feed>
