jeudi 27 septembre 2012

Spring 3.1.1 and ehcache demo application



Je viens juste de commiter une nouvelle version d'une application démo
qui fonctionne sous JBoss 7 avec Spring 3.1.1 et Ehcache.
Autre chose, cette application fonctionne avec Crash (a shell to extend the JVM)
Allez voir http://julienviet.com/crash/ pour plus d'information.

All source code is available at https://github.com/drieu/sandbox

Spring cache

Voici un lien sur les annotations Spring : :http://www.dzone.com/links/r/spring_31_caching_and_cacheevict.html
C’est bien expliqué avec des petits exemples pratiques.

dimanche 23 septembre 2012

Moteur de recherche dans la javadoc ?


Vous voulez effectuer une recherche dans la javadoc rapidement ?
Voici un moteur de recherche dans la javadoc :

http://javasearch.developpez.com/index.php?cat=1

Pourquoi le site javasearch.developpez.com
Comme tout programmeur en Java, j'ai régulièrement besoin de me plonger dans la documentation.La javadoc est bien faite et plutôt claire. Par contre, il n'existe aucun moteur de recherche simple permettant de trouver facilement les classes ou les méthodes recherchées.Lassé d'utiliser le "CTRL+F" de mon explorateur pour trouver le bon mot dans la liste des 2700 classes,j'ai décidé d'indexer la totalité de la documentation java (plus de 200 Mo de fichiers html !!!) pour créer un moteur de recherche rapide et simple.


Remarque : Un seul hic, il n’y a pas la javadocs de Java 7.

samedi 22 septembre 2012

Vous voulez apprendre groovy ?



Si vous voulez apprendre Groovy sans acheter de livre et d'une manière un peu fun,
voici un lien qui va vous y aider : http://groovykoans.org/

En faite, vous téléchargez une archive qui contient qui contient des exercises.
Ses exercises se présentent sous la forme de test unitaires qui sont en échec.
A vous de corriger.Pour cela chaque méthode de test contient toutes les explications
pour résoudre l'exercise.L'apprentissage se fait progressivement.

Pour ma part, je connais un peu Groovy mais sans plus.J'avais un peu du mal à m'y mettre
et cette méthode m'aide bien.
Bon ... Je sais que j'ai mes exercices à faire !




mercredi 19 septembre 2012

Crash Spring et ehcache


Voici un petit retour d'expérience sur l'utilisation de Crash.
J'ai testé Crash avec une application Spring qui met des valeurs en Cache.Cette application
est déployée sur un serveur Jboss 7.1.1.A l'aide de Crash, j'accède à l'appli en ligne
de commande et j'exécute un script d'affichage du cache.Cela fonctionne très bien.
Pour ceux que ça intéresse, j'ai mis le code source sur GitHub.(https://github.com/drieu/sandbox)

mardi 18 septembre 2012

java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V

 Problème :

Au déploiement de mon war dans JBoss, j’avais l’erreur suivante :


14:11:53,425 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/sandbox-0.0.1-SNAPSHOT]] (MSC service thread 1-1) Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) fr.dr.sandbox.listener.CacheListener: java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
       at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.<init>(AbstractBeanDefinitionReader.java:57) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.<init>(XmlBeanDefinitionReader.java:135) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:83) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
       at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
       at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
       at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
       at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
       at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
       at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_18]
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_18]
       at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_18]


Solution :

En regardant de près dans le message d’erreur, il s’avère que j’avais des versions de spring différentes (3.0.5.RELEASE et 3.1.1.RELEASE).
En fait, j'utilise la version 3.0.5.RELEASE dans mon pom.xml et j’ai introduit une librairie qui utilisent la version 3.1.1.RELEASE.
J’ai donc upgradé toutes les version de spring de mon pom.xml à 1.1.1.RELASE pour résoudre mon problème.

lundi 17 septembre 2012

Podcast Java


Voici un podcast que je connaissais pas : http://javapubhouse.libsyn.com/
A voir si il est bien ...
N'hésitez pas à mettre des commentaires sur les podcast que vous connaissez.

jk's blog: Duck typing in Java ?

Je suis tombé sur un article intéressant.En effet, je ne connaissais pas le duck typing.Cet article m'a permis de découvrir cette notion :
jk's blog: Duck typing in Java ? Well, not exactly:

vendredi 14 septembre 2012

ScriptRoom: Creating and configuring a MySQL DataSource in GlassFish Application Server.

ScriptRoom: Creating and configuring a MySQL DataSource in GlassFish Application Server.: http://dev.mysql.com/downloads/connector/j/3.1.html

Glassfish reminder


./asadmin start-domain domain1
./asadmin list-jndi-entries
./asadmin stop-domain

crash Could not start CRaSSHD Failed to register BouncyCastle as the defaut JCE provider

Problème :

J’ai déployé crash.war dans JBoss et au démarrrage, j’avais l’erreur suivante : Could not start CRaSSHD

10:22:31,335 INFO  [SSHPlugin] Booting SSHD
10:22:32,826 INFO  [SecurityUtils] Trying to register BouncyCastle as a JCE provider
10:22:36,861 SEVERE [SecurityUtils] Failed to register BouncyCastle as the defaut JCE provider
10:22:36,862 SEVERE [SSHLifeCycle] Could not start CRaSSHD

java.lang.RuntimeException: Failed to register BouncyCastle as the defaut JCE provider


Caused by: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
       at javax.crypto.SunJCE_b.a(DashoA13*..)
       at javax.crypto.KeyAgreement.getInstance(DashoA13*..)
       at org.apache.sshd.common.util.SecurityUtils$BouncyCastleRegistration.run(SecurityUtils.java:97)
       at org.apache.sshd.common.util.SecurityUtils.register(SecurityUtils.java:77)
       ... 79 more
Caused by: java.util.jar.JarException: Cannot parse jar:file:/opt/jboss/jboss-eap-5.1/jboss-as/server/all/deploy/crash.war!/WEB-INF/lib/bcprov-jdk16-1.46.jar


Solution :

- Récupérer les fichiers (Dans mon cas bcprov-jdk15on-147.jar et bcprov-ext-jdk15on-147.jar).
http://www.bouncycastle.org/latest_releases.html
- Copier ses fichiers (e.g:bcprov-jdk15on-147.jar et bcprov-ext-jdk15on-147.jar) dans /opt/jdk/jdk1.6.0_18/jre/lib/ext
- vi /path_to_your_jvm/jre/lib/security/java.security et ajouter la ligne security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

- Redémarrer jboss.

http://www.randombugs.com/java/javalangsecurityexception-jce-authenticate-provider-bc.html
http://nyal.developpez.com/tutoriel/java/bouncycastle/#L1

http://julienviet.com/crash/

mardi 11 septembre 2012

vendredi 7 septembre 2012

Creating a tar.gz file in Java

Voici un lien vers un blog pour créer des archives (tar.gz dans cet exemple) en Java : Creating a tar.gz file in Java

Java Puzzle

Si vous cherchez des exercices Java pour vous faire réfléchir.Voici un blog qui devrait vous plaire :
http://wouter.coekaerts.be/2012/puzzle-dreams-solution

Les exercices sont pas faciles et intéressant.