2007-11-29

OpenBSD och /dev/urandom

Råkade igår ut för ett konstigt problem med Java på OpenBSD. Webbapplikationen jag utvecklat gick inte att starta pga följande fel (från felloggen):

java.security.ProviderException: setSeed() failed
at sun.security.provider.NativePRNG$RandomIO.implSetSeed(NativePRNG.java:223)
at sun.security.provider.NativePRNG$RandomIO.access$100(NativePRNG.java:108)
at sun.security.provider.NativePRNG.engineSetSeed(NativePRNG.java:92)
at java.security.SecureRandom.setSeed(SecureRandom.java:376)
...
Caused by: java.io.IOException: Device not configured
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:247)
at sun.security.provider.NativePRNG$RandomIO.implSetSeed(NativePRNG.java:221)
... 71 more

Efter många timmars felsökning och sökning kom jag fram till följande lösning:

  • Ändra i filen JAVA_HOME/jre/lib/security/java.security:
    Före: securerandom.source=file:/dev/urandom
    Efter: securerandom.source=file:/dev/srandom
  • Starta om Tomcat
Man lär så länge man lever...

2007-11-21

Struts2 + Spring + JPA + Hibernate + SiteMesh

Ja, ovanstående ramverk och produkter har jag de senaste dagarna pusslat ihop till något som faktiskt kan liknas vid en fungerande webbapplikation. Ok, jag utgick från den utmärkta guiden hos Apache, men ändå! Till saken hör att mina tidigare erfarenheter begränsade sig till Struts1, Hibernate och SiteMesh så det var en hel del nytt.

Som vanligt innebar Struts2 en hög inlärningströskel (trots lång erfarenhet av Struts1 sedan tidigare), och dokumentationen är minst sagt spretig - både till innehåll och struktur. Framförallt saknas best practices. Många olika tips och lösningar som inte är kompatibla med varandra blandas i en salig röra.

Det mest kraftfulla i sviten tycker jag är de annotations som definierats i JPA (Java Persistence API) och som låter oss mappa ett javaobjekt (POJO) till en databas. Jag har som sagt tidigare arbetat mycket med Hibernate men har då arbetat med hbm.xml-filer vilket både kan bli krångligt och oöverskådligt. Annotations och dokumentation så nära koden som möjligt är enligt mig det enda som håller i längden. Andra alternativ tenderar att växa sig omöjliga att underhålla.

Spring är nog det ramverk som jag har minst inblick i. Har ännu inte lärt mig behärska tänket med IoC (Inverse of Control) fullt ut, men det kommer väl...

Välkommen!

Hej! ...och välkommen till min blogg!

Här samlar jag framöver erfarenheter jag samlar på mig. Framförallt i mitt yrke som konsult, även om en och annan livserfarenhet inte är helt förbjuden. Det finns ju trots allt de som säger att det finns ett liv utanför arbetet...

Återigen - välkommen!

Mvh
Christer Engman