Glassfish, domain.xml ja merkistökoodaus

Jahas, tällä kertaa vähän vähemmän helposti lähestyttävä otsikko. Törmäsin tällä viikolla metkaan ominaisuuteen Glassfish serverissä. Sen tärkein konfiguraatiotiedosto, domain.xml, sisältää oikeastaan kaikki serverin säädöt. Sitä voi editoida käsin tai sitten hallintanäyttöjen kautta. Se on siinä mielessä outo xml tiedosto että siinä ei ole alussa xml prologia, deklaraatiota, ja näin ollen myöskään merkistökoodausta.

Ongelma ilmeni kun virittelin glassfishiin Active Directory autentikoinnin LDAP moduulin avulla. Moduuli nimittäin konfiguroidaan domain.xml tiedostoon, ja yksi arvoista on ryhmä josta tunnukset löytyvät.. Ja tässä tapauksessa ryhmän nimessä oli toki skandeja, josta ongelmat alkoivat. Glassfish ei suostu hevin boottaamaan kun tiedostosta löytyy outoja merkkejä, joten ensimmäinen vaisto oli tallettaa tiedosto UTF8 koodauksella ja lisätä deklaraatio kuten XML:n pitäisi toimia. Vaan ei toimi. Glassfish ei välitä tuon taivaallista deklaraatiosta eikä edes siedä sitä.

Seuraava yritys: Käytä XML unicode merkkejä, kuten ä (pieni ä-kirjain) tiedostossa. Nyt serveri käynnistyy hienosti. Mutta jos sen admin konsolin kautta tekee muutoksia, se tallettaa tiedoston taas jollain koodauksella, ja lataa toisella, eli uudelleenkäynnistys taas epäonnistuu.

Tästä käydään parrat päristen uskonsotaa laajemminkin, mutta tulos on epävarma. Versiossa 3.1 ei ainakaan vielä ratkaisua. Jännitystarinaa voi seurata osoitteessa http://java.net/jira/browse/GLASSFISH-16304

 

Löysin potentiaalisen asian mistä voi olla apua. Kun glassfish ei halua xml deklaraatiota totella (joka on paha virhe imho), vaan käyttää ympäristön oletuskoodausta, muutetaan sitten oletuskoodausta. Löysin ympäristömuuttujat JAVA_OPTS sekä JAVA_TOOL_OPTS, joille voi asettaa lisäparametreja joita virtuaalikone sitten käyttää. Asetin JAVA_TOOL_OPTS asentoon -Dfile.encoding=UTF8 – ja Glassfish näyttäisi nyt käynnistyessään käyttävän UTF8 merkistöä, jvm.log:in perusteella. En ole vielä varmentanut workaroundin toimivuutta koska käytössä ei ole erillistä testiympäristöä ja en ole aivan kauhean innostunut vasiten rikkomaan tuotantoympäristöä uudelleen, mutta ainakin tämä on parasta mihin nyt pystyy, ja aika näyttää sitten miten toimii. Tästä voi olla apua jos joku muu tuskailee glassfishin ja skandimerkkien kanssa.

Ensi kerralla taas sitten yleisempää löpinää, odotellessa Oracle Certified Enterprise Architect Master sertifikaatin tuloksia sekä JavaOne 2011 tapahtumaa 😉

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s