Java 8 ja Glassfish 4 Raspberry Pihin

No niin, olen taas ollut Cyberhome-projektin parissa, eli tietotekniikkaa omaan kotiin. Projekti etenee laiskasti kun vapaa-ajalla ei jaksa/pysty/huvita ihan kaikkia iltoja koodailla ja säätää. Mutta eilen tuli vähän läpimurtoa taas Raspberry Pi (raspi) minitietokoneen osalta – siitä ja sen serkuksista on tarkoitus tulla autonomisen mutta tarvittaessa mobiilisti ohjattavan kodinohjausjärjestelmän aivot.

Raspberry Pi ohjaa kotia

Raspille on paljon artikkeleita pythonille, mutta päätin tapella siihen sensijaan Java-puolen kuntoon. Jotta saadaan vaikeustaso kohdalleen, uusimman release candidate version Java 8 versiosta. Siinä ei ollut sinällään mitään ihmettä, pudottelin Hard Float version JDK 1.8:sta arm prosesorille, purin sen /opt alle, fiksasin linkit ja ympäristömuuttujat, ja nyt pyörii Java 8 – ja lambdat ja streamit – täysimuotoisena.

Seuraava etappi oli Glassfish 4. Siihen oli yllättävän paljon ohjeistusta, mutta pääosin vain tiputin sen paikalleen /opt alle, ja säädin vähän muistia ja timeout arvoja, tähän tapaan:

<jvm-options>-XX:MaxPermSize=96m</jvm-options> 
 <jvm-options>-XX:PermSize=32m</jvm-options> 
 <jvm-options>-Xmx128m</jvm-options>
<thread-pool name="admin-thread-pool" max-thread-pool-size="50" max-queue-size="256" idle-thread-timeout-seconds="3600"></thread-pool> 
 <thread-pool name="http-thread-pool" idle-thread-timeout-seconds="3600"></thread-pool> 
 <thread-pool name="thread-pool-1" max-thread-pool-size="200" idle-thread-timeout-seconds="3600"></thread-pool>

Jep, se ei ole nopea, mutta se toimii. Full Java EE 7 Stack, plus uudet Java 8 piirteet.

Tämän päälle rojautin sinne MySql ajurit ja kannan. Ja asensin sen automaattikäynnistyväksi ajamalla Glassfish työkalun asadmin create-service. Tässä tulikin pikku pulma. Glassfish käynnistyi kyllä ajamalla sudo /etc/init.d/GlassFish_domain1 – kuten pitääkin. Mutta ei toiminut buutatessa automaattisesti.

Pikkasen yömyöhän kokeilemisen avulla löytyi ongelma yllättävästä päästä – tuossa Glassfish scriptissä tulisi olla oikeanlaiset headerit, ilman niitä se ei asennu palveluksi. Lisäsin sinne seuraavaa ja se alkoi toimimaan:

### BEGIN INIT INFO
# Provides: Glassfish
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO

Sitten tuunasin vielä Netbeansin lähettämään työn alla olevat softat suoraan sftp:llä Glassfishin autodeploy-kansioon. Tästä oli hyvät ohjeet ant:lle, mutta halusin tehdä saman Mavenillä – ja pikku säätelyn jälkeen sekin onnistui. Se osuus taas näyttää tältä:

<build>
 <plugins>
<plugin>
 <artifactId>maven-antrun-plugin</artifactId>
 <executions>
 <execution>
 <phase>install</phase>
 <configuration>
 <tasks>
<echo level="info" message="Copying dist directory to remote Pi"/>
<exec executable="d:/utils/pscp.exe" dir="${basedir}">
<arg value="target/${project.build.finalName}.${project.packaging}"/>
<arg value="pi@raspissh:/opt/glassfish4/glassfish/domains/domain1/autodeploy"/>
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

Ja nyt on homma aika saumatonta. Tuo ylläoleva toki vaatii lisäksi oikeat työkalut, omassa tapauksessani putty-kirjaston ohjelmistoja, ja tuo raspissh avain pitää luoda ja asentaa paikalleen raspiin jotta salasanoja ei tarvitse kirjoitella vaan autentikointi hoituu lennossa avaimilla.

Päräytin varhaiskokeiluna Java EE 7 mukaisen REST palvelun joka käyttää Pi4J kirjastoa ja kääntää releitä ja kytkimiä ja ledejä päälle ja pois. Siihen päälle HTML5+JQuery käyttöliittymä joka niitä JSON komentoja heittelee sisään ja ulos. Alkaa näyttämään hyvältä. Kiitos Mavenin voin pajautella muutoksia vaikka tekstieditorilla ja asentaa uuden softan komentoriviltä.

Jahka saan vielä paketin vahvavirta-releitä ja vähän konsultointiapua, kodin automaatio etenee taas pykälällä. Tarkoitus on mm. ajastaa lämmitystoimintoja älykkäämmin säilyttäen silti override-mahdollisuudet mm. kännykällä ja ihan vanhanaikaisella Big Red Button(tm):lla.

Tässä pari vinkkiä mistä oli itselle säätäessä apua (mikään ei tietysti toiminut heti heittämällä kuin Strömsössä):

http://www.thehecklers.org/2013/10/27/glassfish4-raspberrypi/

http://blog.c2b2.co.uk/2013/06/getting-started-with-glassfish-4.html

https://blogs.oracle.com/speakjava/entry/integrating_netbeans_for_raspberry_pi

Mainokset

One thought on “Java 8 ja Glassfish 4 Raspberry Pihin

  1. Näppärää
    Muistan muutaman vuoden päähän, kun tein AMK-opinnäytetyötäni. Se liittyi UPnP-protokollaan. Luin sitten eräästä UPnP-kirjasta oikein hienosti romantisoidun tilanteen, että kaikkien kodinkonelaitteiden huoltostaukset voi lukea etänä, valoja säätää puhekomennoilla yms yms yms . Jospa nuo raspit, arduinot ja muut tekee nuo mahdolliseksi. Olihan tuossa joku kuukausi sitten uutinenkin, että maailman ensimmäinen jääkaappi on lähettänyt roskapostia.
    Odotan innolla sitä hetkeä, jonka Kummelin Matti Näsä jo kuvaili: “Mää painan tätä telkkarin nappia, niin naapurissa sammuu jääkaappi”

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