<?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>Everything is wrong &#187; XML</title>
	<atom:link href="http://everythingiswrong.free.fr/index.php/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://everythingiswrong.free.fr</link>
	<description>Un blog dédié à l&#039;informatique en général</description>
	<lastBuildDate>Wed, 06 Oct 2021 21:20:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Java EE 7 : Fichiers de déploiements (deployment descriptors)</title>
		<link>http://everythingiswrong.free.fr/index.php/2014/01/24/java-ee-7-fichiers-de-deploiements-deployment-descriptors/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2014/01/24/java-ee-7-fichiers-de-deploiements-deployment-descriptors/#comments</comments>
		<pubDate>Fri, 24 Jan 2014 21:00:43 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=2401</guid>
		<description><![CDATA[Fichier XML dans Java EE 7.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Il est toujours compliqué de savoir quelles versions il faut utiliser pour les fichiers de description des déploiements (comme le fichier web.xml par exemple). Cet article a pour but de référencer les principaux fichiers utilisés dans le cadre d&#8217;une application java J2EE 7 avec une petite explication sur leur utilité.</p>
<h2>CDI 1.1</h2>
<p style="text-align: justify;">Il s&#8217;agit du fichier beans.xml. Il est obligatoire si l&#8217;on souhaite utiliser l&#8217;injection de dépendance. Attention, il peut resté totalement vide.</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all"&gt;
&lt;/beans&gt;</pre>
<p style="text-align: justify;">Ce fichier doit être déposé dans le répertoire WEB-INF/lib ou WEB-INF/classes/META-INF pour un archive web (WAR) et META-INF/ dans une archive java (JAR)</p>
<p>Pour plus d&#8217;information : <a href="https://jcp.org/en/jsr/detail?id=346">JSR 346: Contexts and Dependency Injection for Java<sup>TM</sup> EE 1.1</a></p>
<h2>Bean Validation 1.1</h2>
<p style="text-align: justify;">Deux fichiers pour cette JSR (<a href="https://jcp.org/en/jsr/detail?id=349" target="_blank">349</a>) : validation.xml et constraints.xml</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;validation-config
        xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.1.xsd"
        version="1.1"&gt;
&lt;/validation-config&gt;</pre>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;constraint-mappings
        xmlns="http://jboss.org/xml/ns/javax/validation/mapping"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd"
        version="1.1"&gt;
&lt;/constraint-mappings&gt;</pre>
<p style="text-align: justify;">Ces fichiers doivent être déposés dans le répertoire META-INF d&#8217;une archive Java (JAR).</p>
<p>Pour plus d&#8217;information : <a href="https://jcp.org/en/jsr/detail?id=349" target="_blank">JSR 349: Bean Validation 1.1</a></p>
<h2>JPA 2.1</h2>
<p style="text-align: justify;">Pour avoir accès à la base de données, il est obligatoire de posséder le fichier persistence.xml.</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1"&gt;
&lt;/persistence&gt;</pre>
<p style="text-align: justify;">Il existe aussi un fichier de mapping des entités qui n&#8217;est pas obligatoire : orm.xml. Il permet, entre autre, de référencer des classes qui se trouvent dans une même application mais dans des librairies tierces (JAR).</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"
                 version="2.1"&gt;
&lt;/entity-mappings&gt;</pre>
<p style="text-align: justify;">Ces deux fichiers doivent être positionnés dans le répertoire META-INF/ dans une archive java (JAR). Pour rappel, seul le fichier persistence.xml est obligatoire s&#8217;il est question d&#8217;avoir des accès avec une base de données.</p>
<p>Pour plus d&#8217;information : <a href="http://jcp.org/en/jsr/detail?id=338">JSR 338: Java<span><sup>TM</sup></span> Persistence 2.1</a> :</p>
<h2>EJB 3.2</h2>
<p>Ce fichier n&#8217;est pas non plus obligatoire : ejb-jar.xml.</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;ejb-jar xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"
         version="3.2"&gt;
&lt;/ejb-jar&gt;</pre>
<p>Ce fichier doit être positionné dans le répertoire META-INF/ dans une archive java (JAR).</p>
<p>Pour plus d&#8217;information : <a href="https://jcp.org/en/jsr/detail?id=345" target="_blank">JSR 345: Enterprise JavaBeans<sup><span>TM</span></sup> 3.2</a></p>
<h2>Servlet 3.1</h2>
<p>Pour plus d&#8217;information : <a href="https://jcp.org/en/jsr/detail?id=340" target="_blank">JSR 340: Java Servlet 3.1 Specification</a></p>
<h2>JSF 2.2</h2>
<p>Pour la partie vue de J2EE7, le fichier faces-config.xml n&#8217;est plus obligatoire.</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
              version="2.2"&gt;
&lt;/faces-config&gt;</pre>
<p>Un fichier JSF est un fichier XML avec l&#8217;extention *.xhtml. Il se présente sous cette forme :</p>
<pre class="brush: xhtml; gutter: true; first-line: 1">&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"&gt;
&lt;/html&gt;</pre>
<p>Le fichier faces-config.xml doit se trouver dans le répertoire WEB-INF/ d&#8217;une archive web (WAR).</p>
<p>Pour plus d&#8217;information : <a href="https://jcp.org/en/jsr/detail?id=344" target="_blank">JSR 344: JavaServer<span><sup>TM</sup></span> Faces 2.2</a></p>
<h2>JAX-WS 2.2</h2>
<p>Pour les services web, il s&#8217;agit du fichier webservices.xml :</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;webservices xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/javaee_web_services_1_4.xsd"
             version="1.4"&gt;
&lt;/webservices&gt;</pre>
<p>Il doit être positionné dans le répertoire WEB-INF/ d&#8217;une archive web (WAR).</p>
<p>Pour plus d&#8217;information : <a href="https://jcp.org/en/jsr/detail?id=224" target="_blank">JSR 224: Java<sup><span>TM</span></sup> API for XML-Based Web Services (JAX-WS) 2.0</a>, <a href="https://jcp.org/en/jsr/detail?id=109" target="_blank">JSR 109: Implementing Enterprise Web Services</a>, <a href="https://jcp.org/en/jsr/detail?id=181" target="_blank">JSR 181: Web Services Metadata for the Java<sup><span>TM</span></sup> </a></p>
<h2>Conclusion</h2>
<p style="text-align: justify;">Pour plus d&#8217;information et connaître les autres fichiers qui permettre de réaliser d&#8217;autres types de traitements, par exemple des batchs en J2EE7 ou décrire une archives entreprises (EAR) : <a href="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html#7">http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html#7</a></p>
<p style="text-align: justify;">Cet article est fortement inspiré de ce site internet : <a href="http://antoniogoncalves.org/2013/06/04/java-ee-7-deployment-descriptors/" target="_blank">http://antoniogoncalves.org/2013/06/04/java-ee-7-deployment-descriptors/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2014/01/24/java-ee-7-fichiers-de-deploiements-deployment-descriptors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss 7 : Datasources dans un WAR</title>
		<link>http://everythingiswrong.free.fr/index.php/2012/09/28/jboss-7-datasources-dans-un-war/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2012/09/28/jboss-7-datasources-dans-un-war/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 19:17:57 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[jndi]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=1902</guid>
		<description><![CDATA[J2EE6 : Configurer une Datasource JNDI encapsulée dans une archive WAR.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Avec JBoss 7, il est possible de déclarer une datasource JNDI dans une archive WAR. Pour cela, il faut déposer un fichier <em>ma-datasource-ds.xml</em> dans le répertoire WEB-INF avec la déclaration de la source de données. Par exemple :</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;datasources xmlns="http://www.jboss.org/ironjacamar/schema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd"&gt;
   &lt;!-- The datasource is bound into JNDI at this location. We reference
      this in META-INF/persistence.xml --&gt;
   &lt;datasource jndi-name="java:jboss/datasources/maDS"
          pool-name="mysqlds"
          enabled="true"
          use-java-context="true"&gt;
      &lt;connection-url&gt;jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=UTF-8&lt;/connection-url&gt;
      &lt;driver&gt;mysql&lt;/driver&gt;
      &lt;security&gt;
         &lt;user-name&gt;root&lt;/user-name&gt;
         &lt;password&gt;123456&lt;/password&gt;
      &lt;/security&gt;
   &lt;/datasource&gt;
&lt;/datasources&gt;</pre>
<p style="text-align: justify;">La valeur de l&#8217;élément <em>driver</em>, est le nom du driver installé sur le serveur. Pour l&#8217;installer, il est possible de copier le jar dans le répertoire de déploiement du serveur (<code>cp mysql.jar &lt;as7&gt;/standalone/deployments</code>).</p>
<p style="text-align: justify;">Sources : <a href="https://community.jboss.org/thread/204245" target="_blank">https://community.jboss.org/thread/204245</a>, <a href="https://community.jboss.org/wiki/DataSourceConfigurationInAS7">https://community.jboss.org/wiki/DataSourceConfigurationInAS7</a>, <a href="https://github.com/abstractj/as-quickstarts/blob/40f8cae2ce9388151e1a07f743df74e59c7848bc/kitchensink-html5-mobile/src/test/resources/arquillian-ds.xml">https://github.com/abstractj/as-quickstarts/blob/40f8cae2ce9388151e1a07f743df74e59c7848bc/kitchensink-html5-mobile/src/test/resources/arquillian-ds.xml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2012/09/28/jboss-7-datasources-dans-un-war/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appliation J2EE6 avec JBoss 7 et Maven</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/08/03/appliation-j2ee6-avec-jboss-7-et-maven/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/08/03/appliation-j2ee6-avec-jboss-7-et-maven/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 18:57:10 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Eclipse IDE]]></category>
		<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=1535</guid>
		<description><![CDATA[Modèle d'applications J2EE6 avec JBoss 7 comportant : JSF2, JPA, EJB3, REST.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">JBoss propose un certain nombre d&#8217;archetypes dont un qui génère  une application J2EE6 pour JBoss 7 : org.jboss.spec.archetypes:jboss-javaee6-webapp. Or, par défaut, maven ne connait pas cet archetype. Voici comment réussir à l&#8217;utiliser dans Eclipse.</p>
<p style="text-align: justify;">Avant toute chose, il faut vérifier que maven est configuré pour aller chercher des librairies sur le repository JBoss : le fichier settings.xml (~/.m2/settings.xml ou $MAVEN_HOME/conf/settings.xml) doit contenir  le code XML suivant :</p>
<pre class="brush: xml; toolbar: true;">&lt;settings&gt;
 ...
  &lt;profiles&gt;
    ...
    &lt;profile&gt;
      &lt;id&gt;jboss-public-repository&lt;/id&gt;
      &lt;repositories&gt;
        &lt;repository&gt;
          &lt;id&gt;jboss-public-repository-group&lt;/id&gt;
          &lt;name&gt;JBoss Public Maven Repository Group&lt;/name&gt;
          &lt;url&gt;https://repository.jboss.org/nexus/content/groups/public-jboss/&lt;/url&gt;
          &lt;layout&gt;default&lt;/layout&gt;
          &lt;releases&gt;
            &lt;enabled&gt;true&lt;/enabled&gt;
            &lt;updatePolicy&gt;never&lt;/updatePolicy&gt;
          &lt;/releases&gt;
          &lt;snapshots&gt;
            &lt;enabled&gt;true&lt;/enabled&gt;
            &lt;updatePolicy&gt;never&lt;/updatePolicy&gt;
          &lt;/snapshots&gt;
        &lt;/repository&gt;
      &lt;/repositories&gt;
      &lt;pluginRepositories&gt;
        &lt;pluginRepository&gt;
          &lt;id&gt;jboss-public-repository-group&lt;/id&gt;
          &lt;name&gt;JBoss Public Maven Repository Group&lt;/name&gt;
          &lt;url&gt;https://repository.jboss.org/nexus/content/groups/public-jboss/&lt;/url&gt;
          &lt;layout&gt;default&lt;/layout&gt;
          &lt;releases&gt;
            &lt;enabled&gt;true&lt;/enabled&gt;
            &lt;updatePolicy&gt;never&lt;/updatePolicy&gt;
          &lt;/releases&gt;
          &lt;snapshots&gt;
            &lt;enabled&gt;true&lt;/enabled&gt;
            &lt;updatePolicy&gt;never&lt;/updatePolicy&gt;
          &lt;/snapshots&gt;
        &lt;/pluginRepository&gt;
      &lt;/pluginRepositories&gt;
    &lt;/profile&gt;

  &lt;/profiles&gt;

  &lt;activeProfiles&gt;
    &lt;activeProfile&gt;jboss-public-repository&lt;/activeProfile&gt;
  &lt;/activeProfiles&gt;
  ...
&lt;/settings&gt;
</pre>
<p style="text-align: justify;">Ensuite, pour créer le projet dans Eclipse, il faut commencer par installer le catalogue JBoss : <em>Windows -&gt; Preferences&#8230;</em> puis dans la fenêtre <em>Maven -&gt; Achetypes</em> cliquer sur le bouton  <em>Add Remote Catalog&#8230;</em> Saisir <a href="https://repository.jboss.org/nexus/content/groups/public/archetype-catalog.xml" target="_blank">https://repository.jboss.org/nexus/content/groups/public/archetype-catalog.xml</a> dans l&#8217;intitulé Catalogue File et JBoss dans Description. Après l&#8217;opération, il ne reste plus qu&#8217;à accéder au wizard de création d&#8217;un projet Maven (<em>File -&gt; New -&gt; Project&#8230;</em> puis <em>Maven project</em>) et de sélectionner l&#8217;archetype jboss-javaee6-webapp.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://yan.langlois.free.fr/wordpress/wp-content/uploads/jboss-javaee6-webapp.png" alt="" width="577" height="488" /></p>
<p style="text-align: justify;">Le squelette de l&#8217;application est celui-ci :</p>
<p class="wp-caption" style="text-align: justify;">/home/&#8230;/jboss-webapp-j2ee6<br />
|&#8211; pom.xml<br />
|&#8211; readme.html<br />
|&#8211; readme.md<br />
`&#8211; src<br />
|&#8211; main<br />
|   |&#8211; java<br />
|   |   `&#8211; test<br />
|   |       `&#8211; jboss_webapp_j2ee6<br />
|   |           |&#8211; controller<br />
|   |           |   `&#8211; MemberRegistration.java<br />
|   |           |&#8211; data<br />
|   |           |   `&#8211; MemberListProducer.java<br />
|   |           |&#8211; model<br />
|   |           |   `&#8211; Member.java<br />
|   |           |&#8211; rest<br />
|   |           |   |&#8211; JaxRsActivator.java<br />
|   |           |   `&#8211; MemberResourceRESTService.java<br />
|   |           `&#8211; util<br />
|   |               `&#8211; Resources.java<br />
|   |&#8211; resources<br />
|   |   |&#8211; import.sql<br />
|   |   `&#8211; META-INF<br />
|   |       `&#8211; persistence.xml<br />
|   `&#8211; webapp<br />
|       |&#8211; index.html<br />
|       |&#8211; index.xhtml<br />
|       |&#8211; resources<br />
|       |   |&#8211; css<br />
|       |   |   `&#8211; screen.css<br />
|       |   `&#8211; gfx<br />
|       |       |&#8211; banner.png<br />
|       |       `&#8211; logo.png<br />
|       `&#8211; WEB-INF<br />
|           |&#8211; beans.xml<br />
|           |&#8211; faces-config.xml<br />
|           `&#8211; templates<br />
|               `&#8211; default.xhtml<br />
`&#8211; test<br />
|&#8211; java<br />
|   `&#8211; test<br />
|       `&#8211; jboss_webapp_j2ee6<br />
|           `&#8211; test<br />
|               `&#8211; MemberRegistrationTest.java<br />
`&#8211; resources<br />
`&#8211; arquillian.xml</p>
<p style="text-align: justify;">Ce qui équivaut à une application de départ avec un exemple JSF2 s&#8217;appuyant sur une base de données  embarquée avec quelques classes constituant un modèle MVC, un exemple de service web REST, et un exemple de test unitaire avec Arquillian. A noter aussi, l&#8217;utilisation d&#8217;un EJB3 archivé dans un WAR et non un EAR comme il aurait fallu le faire avec J2EE5.</p>
<p style="text-align: justify;">Pour déployer l&#8217;application il faut la packager et utiliser le plugin JBoss de déploiement déjà configuré par l&#8217;archetype (<em>maven package jboss-as:deploy</em>). Attention, pour que tout se déroule correctement, il faudra avoir démarré votre serveur <a href="http://www.jboss.org/jbossas" target="_blank">JBoss7</a> au préalable.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/08/03/appliation-j2ee6-avec-jboss-7-et-maven/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fiji 2.0 : Intégration de FusionCharts et JSF</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/03/01/fiji-2-0-integration-de-fusioncharts-et-jsf/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/03/01/fiji-2-0-integration-de-fusioncharts-et-jsf/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 10:42:53 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Fiji]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[FusionCharts]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=988</guid>
		<description><![CDATA[Intégration d'un graphique FusionCharts dans une page JSF grâce à Fiji.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Après avoir parlé de Fiji il y a quelques mois, j&#8217;ai souhaité développer un petit exemple pour mettre en pratique l&#8217;intégration Flex dans une page JSF 2. Pour cela j&#8217;ai choisis d&#8217;intégrer un graphique FusionCharts dans une page JSF. Pour information, FusionCharts est une librairie graphique qui permet de développer des graphiques à partir d&#8217;un fichier XML (lignes, histogrammes, cartes du monde, etc.).</p>
<h1 style="text-align: justify;">Mise en place du projet</h1>
<p style="text-align: justify;">Pour faire simple, j&#8217;ai choisis de commencer une nouvelle application Java J2EE6 grâce au squelette de projet weld : org.jboss.weld.archetypes:weld-jsf-servlet-minimal. Je suis ensuite aller chercher les librairies tierces suivantes :</p>
<ul>
<li>Fiji 2.0 sur le site <a href="http://exadel.org/fiji" target="_blank">http://exadel.org/fiji</a></li>
<li>FusionCharts sur le site <a href="http://www.fusioncharts.com/free/Overview.asp" target="_blank">http://www.fusioncharts.com/free/Overview.asp</a> (version gratuite)</li>
</ul>
<h1>Développement</h1>
<p>Mon but est de reproduire le premier exemple de graphique proposé sur la <a href="http://www.fusioncharts.com/free/gallery/" target="_blank">gallerie</a> du site internet de FusionCharts :</p>
<p style="text-align: center;"><img class="aligncenter" src="http://yan.langlois.free.fr/wordpress/wp-content/uploads/fusionChartsFijiExample.png" alt="" width="585" height="339" /></p>
<p>Tout d&#8217;abord, il faut déposer la librairie Fiji 2.0 dans le répertoire <em>src/main/webapp/WEB-INF/lib</em> puis un graphique fusionChart (*.swf) dans un répertoire web du projet. Ensuite, deux fichiers sont nécessaires :</p>
<ul>
<li>Un fichier XHTML pour générer le XML qui décrit le graphique</li>
<li>Un fichier XHTML pour  décrire la page JSF qui va intégrer le graphique</li>
</ul>
<p style="text-align: justify;">Voici le fichier XHTML qui va décrire le graphique :</p>
<pre class="brush: xml; toolbar: true;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;f:view xmlns="http://www.w3.org/1999/xhtml"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core" contentType="text/xml"&gt;

 &lt;graph yAxisName='Sales Figure' caption='Top 5 Sales Person' numberPrefix='$'
    decimalPrecision='1' divlinedecimalPrecision='0' limitsdecimalPrecision='0'&gt;
   &lt;ui:repeat var="item" value="#{dynaGraphique.listPersonne}"&gt;
      &lt;set name='#{item.name}' value='#{item.sales}' color='#{item.color}' /&gt;
   &lt;/ui:repeat&gt;
 &lt;/graph&gt;

&lt;/f:view&gt;</pre>
<p style="text-align: justify;">On peut remarquer que j&#8217;utilise le tag <em>&lt;ui:repeat/&gt;</em> pour itérer sur une liste de données qui va représenter plusieurs séries sur mon histogramme. Ci-dessous, le fichier qui décrit le même graphique en static :</p>
<pre class="brush: xml; toolbar: true;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;f:view xmlns="http://www.w3.org/1999/xhtml"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:f="http://java.sun.com/jsf/core" contentType="text/xml"&gt;

   &lt;graph yAxisName='Sales Figure' caption='Top 5 Sales Person' numberPrefix='$'
      decimalPrecision='1' divlinedecimalPrecision='0' limitsdecimalPrecision='0'&gt;
        &lt;set name='Alex' value='25000' color='AFD8F8' /&gt;
        &lt;set name='Mark' value='35000' color='F6BD0F' /&gt;
        &lt;set name='David' value='42300' color='8BBA00' /&gt;
        &lt;set name='Graham' value='35300' color='FF8E46' /&gt;
        &lt;set name='John' value='31300' color='008E8E' /&gt;
   &lt;/graph&gt;

&lt;/f:view&gt;</pre>
<p style="text-align: justify;">Les deux classes java qui vont contenir les données pour le graphique. Vous allez retrouver les données précédentes dans la première classe :</p>
<pre class="brush: java; toolbar: true;">@Model
public class DynaGraphique {
 private List&lt;Personne&gt; listPersonne = new ArrayList&lt;Personne&gt;();

 @PostConstruct
 public void initialize() {
   listPersonne.add(new Personne("Alex", 25000, "AFD8F8"));
   listPersonne.add(new Personne("Mark", 35000, "F6BD0F"));
   listPersonne.add(new Personne("David", 42300, "8BBA00"));
   listPersonne.add(new Personne("Graham", 35300, "FF8E46"));
   listPersonne.add(new Personne("John", 31300, "008E8E"));
 }
 // Getter et Setter

}</pre>
<pre class="brush: java; toolbar: true;">public class Personne {
 private String name;
 private int sales;
 private String color;

 public Personne() {
 }

 public Personne(String name, int sales, String color) {
 super();
 this.name = name;
 this.sales = sales;
 this.color = color;
 }
//Getter et Setter ...
...
}</pre>
<p style="text-align: justify;">Le fichier XHTML qui va générer la page JSF :</p>
<pre class="brush: xml; toolbar: true;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:fiji="http://exadel.com/fiji"
   template="/WEB-INF/templates/default.xhtml"
   xmlns:a4j="http://richfaces.org/a4j"&gt;
      &lt;ui:define name="content"&gt;
         &lt;!-- static : voir le fichier fusionChart/fusion01.jsf --&gt;
         &lt;fiji:swf src="fusionChart/FCF_Column3D.swf" bgcolor="#FFFFFF" width="520" height="400"&gt;
            &lt;f:param name="dataURL" value="fusionChart/fusion01.jsf" /&gt;
         &lt;/fiji:swf&gt;
         &lt;!-- dynamique --&gt;
         &lt;fiji:swf src="fusionChart/FCF_Column3D.swf" bgcolor="#FFFFFF" width="520" height="400"&gt;
            &lt;f:param name="dataURL" value="fusionChart/fusion02.jsf" /&gt;
         &lt;/fiji:swf&gt;
      &lt;/ui:define&gt;
&lt;/ui:composition&gt;</pre>
<p style="text-align: justify;">Pour information, il ne faut pas oublier de préciser les attributs <em>bgcolor</em>, <em>width </em>et <em>height </em>pour éviter une erreur d&#8217;exécution de Fiji.</p>
<h1>Exécution du projet</h1>
<p style="text-align: justify;">Pour exécuter le projet, j&#8217;utilise la commande maven <em>mvn compile tomcat:run.</em> L&#8217;application est alors disponible à l&#8217;adresse : <a href="http://localhost:9090/jsf.servlet.minimal" target="_blank">http://localhost:9090/jsf.servlet.minimal</a>.</p>
<p style="text-align: justify;">Vous pouvez checkouter le projet à l&#8217;adresse suivante : <a href="http://subversion.assembla.com/svn/everythingiswrong/tutorial-fiji-fusionchart/" target="_blank">http://subversion.assembla.com/svn/everythingiswrong/tutorial-fiji-fusionchart/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/03/01/fiji-2-0-integration-de-fusioncharts-et-jsf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jaxb2-maven-plugin : plusieurs exécutions successives de jaxb2:xjc</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/02/11/jaxb2-maven-plugin-plusieurs-executions-successives-de-jaxb2xjc/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/02/11/jaxb2-maven-plugin-plusieurs-executions-successives-de-jaxb2xjc/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 21:13:58 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=893</guid>
		<description><![CDATA[Configuration particulière du plugin jaxb2-maven-plugin]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Dans ce ticket, je vais expliquer comment bien configurer le plugin <a href="http://mojo.codehaus.org/jaxb2-maven-plugin/">jaxb2-maven-plugin</a> dans le cas où l&#8217;on souhaite transformer des fichiers XSD en classes java vers des packages différents. Il faut savoir qu&#8217;avec ce plugin il n&#8217;est pas possible de définir plusieurs packages de destination dans une même exécution.</p>
<p style="text-align: justify;">Dans l&#8217;exemple choisi, je génère deux classes Java à partir de deux fichier XSD vers deux packages différents :</p>
<p style="text-align: justify;">
<pre class="brush: xml; toolbar: true;">&lt;plugin&gt;
  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
  &lt;artifactId&gt;jaxb2-maven-plugin&lt;/artifactId&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;id&gt;id1&lt;/id&gt;
      &lt;phase&gt;generate-sources&lt;/phase&gt;
      &lt;goals&gt;
        &lt;goal&gt;xjc&lt;/goal&gt;
      &lt;/goals&gt;
      &lt;configuration&gt;
        &lt;clearOutputDir&gt;false&lt;/clearOutputDir&gt;
        &lt;staleFile&gt;${project.build.directory}/generated-sources/jaxb/.staleFlag-id1&lt;/staleFile&gt;
        &lt;schemaDirectory&gt;${basedir}/src/main/resources/id1&lt;/schemaDirectory&gt;
        &lt;packageName&gt;id1&lt;/packageName&gt; &lt;!-- The name of your generated source package --&gt;
      &lt;/configuration&gt;
    &lt;/execution&gt;
    &lt;execution&gt;
      &lt;id&gt;id2&lt;/id&gt;
      &lt;phase&gt;generate-sources&lt;/phase&gt;
      &lt;goals&gt;
        &lt;goal&gt;xjc&lt;/goal&gt;
      &lt;/goals&gt;
      &lt;configuration&gt;
        &lt;clearOutputDir&gt;false&lt;/clearOutputDir&gt;
        &lt;staleFile&gt;${project.build.directory}/generated-sources/jaxb/.staleFlag-id2&lt;/staleFile&gt;
        &lt;schemaDirectory&gt;${basedir}/src/main/resources/id2&lt;/schemaDirectory&gt;
        &lt;packageName&gt;id2&lt;/packageName&gt; &lt;!-- The name of your generated source package --&gt;
      &lt;/configuration&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
  &lt;dependencies&gt;
     &lt;dependency&gt;
       &lt;groupId&gt;xerces&lt;/groupId&gt;
       &lt;artifactId&gt;xercesImpl&lt;/artifactId&gt;
       &lt;version&gt;2.8.1&lt;/version&gt;
     &lt;/dependency&gt;
  &lt;/dependencies&gt;
&lt;/plugin&gt;</pre>
<p style="text-align: justify;">A noter que pour chaque exécution :</p>
<ul>
<li style="text-align: justify;">Il est nécessaire d&#8217;utiliser un identifiant unique. Sinon maven n&#8217;arrivera pas à exécuter le plugin.</li>
<li style="text-align: justify;">Il faut impérativement utiliser l&#8217;option staleFile pour associer un fichier différent à chaque exécution (ce fichier sert au plugin pour savoir si les classes Java sont déjà générées). Sans cela, la seconde exécution ne génèrera pas de classe Java.</li>
<li style="text-align: justify;">Il faut indiquer au plugin de ne pas nettoyer le répertoire de génération avant l&#8217;exécution (option clearOutputDir à false) car c&#8217;est son comportement par défaut. Sans cela, la seconde exécution supprimera les classes générées pas la première.</li>
</ul>
<p style="text-align: justify;">Voici l&#8217;adresse de l&#8217;exemple associé : <a href="https://subversion.assembla.com/svn/everythingiswrong/tutorial-jaxb2-maven-plugin/" target="_blank">https://subversion.assembla.com/svn/everythingiswrong/tutorial-jaxb2-maven-plugin/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/02/11/jaxb2-maven-plugin-plusieurs-executions-successives-de-jaxb2xjc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jaxws-maven-plugin : générer des services SOAP à partir de plusieurs WSDL</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/01/03/jaxws-maven-plugin-generer-des-services-soap-a-partir-de-plusieurs-wsdl/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/01/03/jaxws-maven-plugin-generer-des-services-soap-a-partir-de-plusieurs-wsdl/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 21:09:28 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=756</guid>
		<description><![CDATA[Générer des services SAOP à partir de plusieurs WSDL dans un même package résultat grace à METRO.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Dans ce poste je vais générer des services SOAP java à partir de deux fichiers WSDL. La contrainte que je m&#8217;impose est de générer dans un même package toutes les classes java. Il faut paramétrer le plugin <a href="http://jax-ws-commons.java.net/jaxws-maven-plugin/" target="_blank">jaxws-maven-plugin</a> en lui donnant un nom de package pour l&#8217;ensemble des WSDL (ou bien utiliser le même namespace pour les deux WSDL et leurs objets associés) :</p>
<p style="text-align: justify;">
<pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
   &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
   &lt;artifactId&gt;jaxws-maven-plugin&lt;/artifactId&gt;
   &lt;executions&gt;
      &lt;execution&gt;
         &lt;goals&gt;
            &lt;goal&gt;wsimport&lt;/goal&gt;
         &lt;/goals&gt;
      &lt;/execution&gt;
   &lt;/executions&gt;
   &lt;configuration&gt;
      &lt;packageName&gt;com.example.myschema&lt;/packageName&gt;
   &lt;/configuration&gt;
...
&lt;/plugin&gt;
</pre>
<p style="text-align: justify;">Le problème c&#8217;est que le plugin génère les objets dans l&#8217;ordre de traitement des WSDL. Cela implique que la classe ObjectFactory.java qui permet d&#8217;instancier les objets issus de la génération est créée une première fois pour les objets du premier WSDL puis écrasée par la seconde génération avec les objets du second WSDL.</p>
<p style="text-align: justify;">Pour résoudre ce problème, il est possible de mutualiser les objets des deux WSDL dans un même schéma XSD qui va englober tous les objets des deux WSDL. La première génération va toujours être écrasée par la seconde mais cette fois si, les deux générations produisent exactement les mêmes objets et l&#8217;objet ObjectFactory va pouvoir instancier tous les objets des deux WSDL.</p>
<p style="text-align: justify;">Voici un exemple : <a href="https://subversion.assembla.com/svn/everythingiswrong/multiple-wsdl-same-package/" target="_blank">https://subversion.assembla.com/svn/everythingiswrong/multiple-wsdl-same-package/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/01/03/jaxws-maven-plugin-generer-des-services-soap-a-partir-de-plusieurs-wsdl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ecrire un document XML avec Facelets</title>
		<link>http://everythingiswrong.free.fr/index.php/2010/06/05/ecrire-un-document-xml-avec-facelets/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2010/06/05/ecrire-un-document-xml-avec-facelets/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 01:35:22 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[Facelets]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=135</guid>
		<description><![CDATA[Générer un document XML à partir d&#8217;un application web Java est très simple. Il suffit d&#8217;écrire une servlet qui va écrire du XML sur la réponse HTTPResponse avec le bon type de contenu. Voici un exemple : L&#8217;opération s&#8217;avère plus difficile lorsqu&#8217;il faut l&#8217;écrire à partir d&#8217;une page XHTML en utilisant Facelets. Voici une solution [...]]]></description>
			<content:encoded><![CDATA[<p>Générer un document XML à partir d&#8217;un application web Java est très simple. Il suffit d&#8217;écrire une servlet qui va écrire du XML sur la réponse HTTPResponse avec le bon type de contenu. Voici un exemple :</p>
<pre class="brush: java; title: ; notranslate">
try {
 FacesContext ctx = FacesContext.getCurrentInstance();
 final HttpServletResponse resp = (HttpServletResponse)ctx.getExternalContext().getResponse();
 String xml = &quot;&lt;settings&gt;...&lt;/settings&gt;&quot;;
 resp.setContentType(&quot;text/xml&quot;);
 resp.setContentLength(xml.length());
 resp.getOutputStream().write(xml.getBytes());
 resp.getOutputStream().flush();
 resp.getOutputStream().close();
 ctx.responseComplete();

} catch (IOException e) {
 e.printStackTrace();
}
</pre>
<p>L&#8217;opération s&#8217;avère plus difficile lorsqu&#8217;il faut l&#8217;écrire à partir d&#8217;une page XHTML en utilisant Facelets. Voici une solution possible :</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
     &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;f:view xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot; xmlns:h=&quot;http://java.sun.com/jsf/html&quot; xmlns:f=&quot;http://java.sun.com/jsf/core&quot; contentType=&quot;text/xml&quot;&gt;

&lt;settings&gt;...&lt;/settings&gt;

&lt;/f:view&gt;</pre>
</pre>
<p style="text-align: justify;">La déclaration de la dtd HTML (deuxième et troisième lignes) n'est pas nécessaire sauf si vous utilisez des caractères latins ("é", "è", etc.) car facelets les traduit automatiquement en caractères HTML du style "&amp;eacute;" et cela provoque l'erreur "Erreur d'analyse XML : entité non définie" sans ce fichier dtd.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2010/06/05/ecrire-un-document-xml-avec-facelets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
