Zobrazují se příspěvky se štítkemJava. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemJava. Zobrazit všechny příspěvky

čtvrtek 26. února 2015

JasperReports a plugin ElasticJasperServer


V práci jsem seznamoval s produkty Jasper Reports od společnosti Jaspersoft, která je vlastněná společností TIBCO Software.  Hlavním důvodem je generování reportů např. v PDF získaných z ElasticSearch nebo Zabbix.

Nejprve jsem instaloval JasperReports Server, což je Java aplikace běžící pod Apache Tomcat. Defaultní instalace využívá databázi PostgreSQL, ale můj požadavek byl JR Server provozovat s MySQL. Volil jsem tedy instalaci WAR využívající js-install script. Stáhnul jsem si tedy jasperreports-server-cp-5.6.1-bin.zip. Volil jsem starší verzi, protože mým cílem bylo zprovoznit rozšíření od Wedjja - https://github.com/WedjaaOpen. Které umožňuje JR Serveru komunikovat a dotazovat se pomoci JSON ElasticSearch. Aktualní verze ElasticJasperServer nepodporuje poslední verzi JR Serveru 6.x. Projekt je velmi dobře dokumentován, proto instalace JR Serveru i pluginu ElasticJasperServer není nikterak složitá.

Pro vytvoření samotných reportů se používá aplikace JasperReports Studio, která je postavena na základech vývojového prostředí Eclipse. JR Studio a JR Server spolu komunikují a vytvořené reporty je možno snadno publikovat na serveru, kde se patřičný report nechá vykonávat pravidelně a může zasílat výsledné reporty emailem nebo je uploadovat na FTP server.

JR Studio se též neobejde bez pluginu do ElasticSearch. Je třeba doinstalovat ElasticJasper. Podrobný popis jak na to je pěkně popsán na blogu Wedjja.

Samotná tvorba reportů JRXML není úplně jednoduchou disciplínou, ale výsledky mohou být velmi zajímavé.

JasperReports je v Java světě zjevně hodně znám. Čistě náhodou jsem si všiml, že účetnictví FlexiBee používá pro tisk právě JasperReports Library.

středa 24. července 2013

WebSphere 7 + OSGi/JPA 2.0 Feature Pack

Řešil jsem v práci opět takovej bombónek s WAS 7. Ve WebSphere 7 je verze
Java Persistence API (JPA)  1.x. Zmíněný framework je implementován např. pomocí OpenJPA. Ale pokud vyžadujeme APJ 2.x je nutno do WebSphere instalovat Feature Pack (FeP). Seznam známých FeP je na stránkach IBM WebSphere Application Server Feature Packs Family.

Instaloval jsem tedy FeP

WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API 2.0

Při snaze rozšíření stáhnout od IBM dostavám krásnou hlášku :-)

The link which brought you here is invalid. Please reload the previous page and try again.

message code: 57e

Po době pátrání a laborování se vydávám cestou instalace FeP pomocí IBM Instalation Managera což je Java GUI SW pro instalaci a aktualizaci IBM produktů. Po instalaci a aktualizaci samotného IBM IM na aktuální verzi  1.6.3.1, dle instrukcí přidávám repositáře pro IBM WebSphere. A posléze nainstaluji i samotné požadované rozšíření. V Product Information je FeP videt.

IBM IM lze instalovat jak pod rootem ./install nebo pod userem pod kterým běží WAS ./userinst. Instalace si ukláda nějaká data do /etc a /var, v případě userinst do home adresáře usera /home/was/etc a /home/was/var.

Pro otestování, jakou verzi JPA WAS používá použijeme následující příkaz.

was@wastest ~]$ /ibm/app/was/profiles/AppSrv01/bin/wsjpaversion.sh
WSJPA 1.2.1-SNAPSHOT
version id: WSJPA-1.2.1-SNAPSHOT-r1118:2591
revision: 1118:2591

OpenJPA 1.2.3-SNAPSHOT
version id: openjpa-1.2.3-SNAPSHOT-r422266:1395723
Apache svn revision: 422266:1395723

os.name: Linux
os.version: 2.6.18-308.el5
os.arch: amd64

java.version: 1.6.0
java.vendor: IBM Corporation

java.class.path:
    /ibm/app/was/dev/JavaEE/j2ee.jar
    /ibm/app/was/plugins/com.ibm.ws.jpa.jar
    /ibm/app/was/plugins/com.ibm.ws.prereq.commons-collections.jar

user.dir: /home/was

A zde je problém, protože WAS používá své interní JPA a nikoliv naše instalované. Ale jistá aplikace vyžaduje verzi JPA 2.x.

Dohledal jsem si patřičný JAR, který JPA ve WAS řeší.

[was@wastest was]$ cd /ibm/app/was/profiles/AppSrv01/ && find . -name com.ibm.ws.jpa.jar
./plugins/com.ibm.ws.jpa.jar
./feature_packs/jpa/plugins/com.ibm.ws.jpa.jar


Pokud chceme používat FeP verze JPA musíme ještě rozšířit profil WAS.

./manageprofiles.sh -augment -profileName AppSrv01 -templatePath /ibm/app/was/profileTemplates/JPA/default.jpafep/
INSTCONFSUCCESS: Zvětšení profilu proběhlo úspěšně.

./manageprofiles.sh -listAugments -profileName AppSrv01
Registrované šablony rozšíření
    /ibm/app/was/profileTemplates/JPA/default.jpafep

[was@wastest bin]$ /ibm/app/was/profiles/AppSrv01/bin/wsjpaversion.sh
WSJPA 2.0.1-SNAPSHOT
ID verze: WSJPA-2.0.1-SNAPSHOT-r1118:2749
Revize dílčí verze rozhraní JPA platformy WebSphere: 1118:2749

OpenJPA 2.0.2-SNAPSHOT
ID verze: openjpa-2.0.2-SNAPSHOT-r422266:1484287
Revize dílčí verze produktu Apache: 422266:1484287

os.name: Linux
os.version: 2.6.18-308.el5
os.arch: amd64

java.version: 1.6.0
java.vendor: IBM Corporation

java.class.path:
    /ibm/app/was/feature_packs/jpa/dev/jpa_api.jar
    /ibm/app/was/dev/JavaEE/j2ee.jar
    /ibm/app/was/feature_packs/jpa/plugins/com.ibm.ws.jpa.jar
    /ibm/app/was/plugins/com.ibm.ws.prereq.commons-collections.jar

user.dir: /ibm/app/was/bin


Po instalaci FeP jsme dotázáni, zda chceme pustit GUI Profile Manager a v něm můžeme rozšíření profilu provést s tím, že nám aplikace napoví, jaky profileTemplate máme použít.

středa 10. dubna 2013

Rational Application Developer and Deployer 7.5 on RHEL 5.8 x86_64

Na čersvě nainstalovaný server s RHEL 5.8 x86_64, kam jsem instaloval IBM WebSphere 7.0.0.23 a FileNet Aplication Engine Application Engine 4.0.2-013 = Workplace. Si vývojář nainstaloval vývojové prostředí Rational Application Developer and Deployer 7.5 je to IBMkou upravený a prodávaný Eclipse.

No a JVM šlo zádadne na hubu a generovalo jen dumpy

Snap.20130410.140916.4351.0002.trc
javacore.20130410.140916.4351.0003.txt
core.20130410.140916.4351.0001.dmp


Google mi napomohl najít tento návod pro Ubuntu. Vypůjčil jsem si jen body 11. a 13 s tím že 11cka nebyla potřeba, protože používám na serveru TWM.

vi /opt/IBM/SDP/launchEclipse.sh
#!/bin/sh
export GDK_NATIVE_WINDOWS=true
/opt/IBM/SDP/eclipse


Bylo ovšem nutné nastavit eclipse.ini

vi /opt/IBM/SDP/eclipse.ini

-XX:MaxPermSize=512M
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib64/xulrunner-1.9.2


Když jsem použil 32bitovou verzi
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.2

Objevovala se chyba java.lang.RuntimeException: Widget disposed too early!

úterý 29. ledna 2013

OpenCMS 8.5.0 OpenJDK 7 FreeBSD 9.1


Ve FreeBSD jsem zaznamenal změny v portech využívajících Javu. Konkrétně jsem si všiml, že Serviio má v závislostech OpenJDK a dříve se používala hojně Java - port java/diablo-jdk16. Tento port je již označen DEPRECATED. Pamatuji se, že pro kompilaci OpenJDK bylo nutno mít právě Diablo-JDK16, to se změnilo. A tak jsem si instaloval port java/openjdk7.

Pro vyzkoušení OpenJDK jsem zvolil Servlet container Tomcat7 s APR - Tomcat native library.

tomcat-7.0.34 Open-source Java web server by Apache, 7.x branch
tomcat-native-1.1.24 Tomcat native library


Běh JVM jsem si sledoval v Zabbixu pomoci JMX. Definováno v rc.conf.

tomcat7_enable="YES"

tomcat7_java_opts="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=10053
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.awt.headless=true"


Dále jsem si vzpoměl na CMS, které je psané v Javě. Zajimavý seznam Java based CMS jsem našel zde. Řekl jsem si že vyzkouším instalaci OpenCMS. Popis instalace je velmi jednoduchý. Zkráceně pořtěbujeme Tomcat a MySQL. Popis instalace je dostatečně popsán zde. Z portů jsem si nainstaloval ještě.

mysql-server-5.5.29 Multithreaded SQL database (server)
apache22-2.2.23_4   Version 2.2.x of Apache web server with prefork MPM.
ap22-mod_jk-1.2.37_2 Apache2 JK module for connecting to Tomcat using AJP1X


Stáhnul jsem si zip file opencms_8.5.0.zip.


Archive: opencms_8.5.0.zip
extracting: opencms.war
extracting: history.txt
extracting: install.html
extracting: license.txt
extracting: OpenCms_Documentation_8.5.0_v1.pdf

Po deploy war souboru jsem již mohl pustit instalačni vizard, který celou instalaci dokončil.

Z webu OpenCMS jsem dohledal českou společnost NelaSoft, která tento CMS systém implementuje. Instalace je vcelku jednoduchá, ovšem použití tohoto systému vyžaduje patřičné znalosti. Apropo o daném systému jsem se prvně dozvěděl v FG. OpenCMS je použito u webu ČNB :-)

neděle 28. října 2012

Samsung Smart TV + SERViiO


Po třech letech odkládání jsem konečně zahodil starou CRT TV + jeden z prvních Set-UP boxů Genius DVB-T. Už mě hodně vadilo, že okraje obrazu jsou značně ořezané, ale hlavním důvodem byla jakákoliv absence přehrávat data z FreeNAS.

Původně jsem chtěl plazmu, ale z velikosti TV jsem ustoupil a pořídil LED 37" Samsung UE37ES6100. Televize má integrované DLNA a tak jsem se zaměřil na jeho zprovoznění. Zprvu jsem čekal, že server Fuppes - Free UPnP Entertainment Service integrovaný ve FreeNAS 0.7 bude v TV podporován. Ale TV jej vůbec nevidí. Zaměřil jsem se na DLNA server  Mediatomb, který jsem zprovoznil na domácím FreeBSD serveru.

mediatomb-0.12.1_8  UPnP AV MediaServer

Tento media server se v TV objevil, ale nic z něj nešlo přehrávat. Nakonec jsem objevil Serviio, což je Java Media server. Též jsem jej instaloval na FreeBSD serveru z patřičného portu.

serviio-0.6.2       Transcoding DLNA-server implemented in Java

Tento server Serviio mě velmi mile překvapil. Bez velkého ladění najednou televize ožila. Pomocí GUI konzole jsem přidal adresáře namontované přez NFS z FreeNAS. DLNA server si obsah patřičně ošahal a zaindexoval. Pro každé zažízení v domácí síti, které chce DLNA využívat (TV, Mobil Android, PC Totem+Coherence) je možno přiřadit patřičný profil. Např. mi nešlo přehrávat MKV videa a po nastavení patřičného profilu Samsung TV / Player (C/D-series) k TV. Fungování MKV jsem otestoval a opět mě mile překvapilo fungování titulků skrze DLNA. V TV jsem jen nastavil českou verzi.

Vlastností DLNA server Serviio je celá řada.  Překvapila mě např. funkcionalita ohledně indexování souborů. Server skrze API kontaktuje server TheTVdb.com, výsledkem je možnost hledání filmů podle herců, producentů či režisérů. Po indexaci obsahu jsem pátral v systému, kam si to ukládá. Serviio využívá databázi Derby. Adresář, kam si ukládá svá data /var/db/serviio zabírá nyní 244M.

Další zajímavou funkcionalitou je možnost sledování Online obsahu. Je možno nadefinovat internetová rádia či image gallery. Tyto vlastnosti budou teprve objevovat.

Už se těším až ve FreeBSD bude patřičný port aktualizován na aktuální verzi 1.0.1.

čtvrtek 28. července 2011

Aplikace Nokia E72

Jsem uživatelem telefonu Nokia E72, který jsem vyfasoval v práci. Co potřebuji k práci to umí. Cisco VPNka ve spojeni s Putty je skutečně mocný nástroj. Již jsem ze zahradní párty kolegini rekonfiguroval Apache. Chvíli je člověk ve společnosti za autistu, ale dílo na serveru někde v tramtárii se povede. Osobně bych preferoval spíše telefon s Androidem, líbil se mi HTC Desire Z, dnes bych ale radši Samsung Nexus S. Ikdyž na Querty klavesnici jsem si již navykl.

Poznamenám si zde jaké aplikace hojně používám.
Na telefon někdy hodně zanadávám. Více puštěných aplikací telefon značně zpomalí. Někdy jsou reakce Symbianu, i s minimem aplikaci v paměti tak pomalé, že okamžitě dávám restart. Někdy telefon ne a ne komunikovat datově, opět až po restartu. Ale to se mi dlouho nestalo, takže to asi opravil poslední update. Jinak takovou aplikační a uživatelskou perlou je, že po posledním updatu telefonu prostě zahodil veškeré vazby na kontakty. Tím mám na mysli fotky u kontaktů, rychlou volbu vytáření atd.

pátek 15. července 2011

Test Archiva proxy

Jak otestovat funkčnost archiva proxy ? Toť moje otázka. Vzpoměl jsem si, že jsem kdysi v minulosti kompiloval projekt OpenNMS. A tak jsem oprášil starou dokumentaci, tak tetuji.


Aby Maven věděl, že má používat Archiva proxy, je třeba mu to říct a to v konfiguračním souboru ~/.m2/settings.xml

Pomocí gitu si stáhnu zdrojáky.

mkdir /tmp/test
cd /tmp/test
git clone git://opennms.git.sourceforge.net/gitroot/opennms/opennms
cd opennms
./run-tests.pl
[fbsd /tmp/test/opennms]$ ./run-tests.pl
[INFO] JAVA_HOME = /usr/local/diablo-jdk1.6.0/
[INFO] MVN = /tmp/test/opennms/maven/bin/mvn
[INFO] MAVEN_OPTS = -XX:PermSize=512m -XX:MaxPermSize=1g -Xmx1g -XX:ReservedCodeCacheSize=512m
[INFO] MAVEN_VERSION = 3.0.3
[INFO] running: /usr/local/bin/git clean -fdx .
[INFO] finished successfully
[INFO] running: /tmp/test/opennms/maven/bin/mvn -P!jspc install
[INFO] Scanning for projects......
....
Downloading: http://archiva.smejdil.cz/srv/archiva/repository/releases/dnsjava/dnsjava/2.1.1/dnsjava-2.1.1.jar
...

Vybral jsem jednu z mnoha knihoven dnsjava-2.1.1.jar pro dohledání v logách.

log archiva
2011-07-15 15:03:36 releases smejdil 80.250.16.10 "dnsjava/dnsjava/2.1.1/dnsjava-2.1.1.jar" "Modified File (proxied)"

log apache
80.250.16.10 - - [15/Jul/2011:15:03:36 +0200] "GET /srv/archiva/repository/releases/dnsjava/dnsjava/2.1.1/dnsjava-2.1.1.jar HTTP/1.1" 200 438761 "-" "Apache-Maven/3.0.3 (Java 1.6.0_07; FreeBSD 8.2-RELEASE)"

log tomcat
80.250.16.10 - - [15/Jul/2011:15:03:36 +0200] "GET /srv/archiva/repository/releases/dnsjava/dnsjava/2.1.1/dnsjava-2.1.1.jar HTTP/1.1" 200 438400

Po testu, kdy se stáhnou všechny závislosti ma repo mavenu 52M

Zase po sobe uklidim
rm -rf /tmp/test/

čtvrtek 14. července 2011

Archiva - Artifact Repository Manager

V práci na mě padlo provést aktualizaci Archiva - Artifact Repository Manager http://archiva.apache.org/, což je java aplikace. Něco jako repository pro Linux distribuce, ale Archiva slouží pro Java vývojáře. Aplikace má více rolí a jednou z nich je i Proxy. Jednoduše řečeno vývojáři nemusí ručně stahovat kamsi jednotlivé knihovny. O vše se postará Maven a Archiva. Doposud jsme používali verzi 1.2.2 a nově jsme přešli na aktuální verzi 1.3.5.

Popis prostředí

Jako server pro běh aplikace jsem zvolil Linux Ubunru 10.0.4 LTS 64bit. Aplikace Archiva vyžaduje ke svému běhu web server Apache, Java, Tomcat, Maven a databázi MySQL. Ikdyž existuje i verze Standalone s vlastnim web serverem Jetty. Použíl jsem veryi WAR, která běží pod se deployne v tomcatu.

  • Apache 2.2.14 - ubuntu package + moduly libapache2-mod-jk a libapache2-mod-macro
  • Java 1.6.0_26 64bit - instalována manuálně
  • Tomcat 6.0.26 - instalován manuálně
  • Maven 2.2.1 - instalována manuálně
  • MySQL 5.1.41 - ubuntu package
  • Archiva 1.3.5 - instalována manuálně
Konfigurace

Apache

Nastavení webserveru apache2 jsem řešil dle balíčkové konfigurace.

apt-get install cronolog
apt-get install apache2 libapache2-mod-macro libapache2-mod-jk

joe /etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid
export APACHE_ARGUMENTS="-Don -Dtrue -Dyes"
export APACHE_FG_INSTANCE_NAME="apache01"

joe /etc/apache2/ports.conf
NameVirtualHost 80.250.16.10:80
Listen 80.250.16.10:80

cd /etc/apache2/mods-enabled
ln -s ../mods-available/rewrite.load ./
ln -s ../mods-available/headers.load ./
ln -s ../mods-available/include.load ./
ln -s ../mods-available/info.conf ./
ln -s ../mods-available/info.load ./
ln -s ../mods-available/macro.load ./
ln -s ../mods-available/macro.conf ./

joe info.conf
joe status.conf
joe jk.conf
joe macro.conf

cd /etc/apache2/sites-
joe default
joe archiva

cd /www/
mkdir -p server_log/apache01/log/

/etc/init.d/apache2 restart


Tomcat

Tomcat byl instalován dle zvyklostí.

ubuntu:~/install/tomcat-6.0.26&gt ./install-tomcat.sh
Instaled 1 Tomcast's
Install tomcat01 ...
patching file catalina.sh
patching file setclasspath.sh
patching file server.xml
patching file tomcat-users.xml

Důležité nastavení je v těchto souborech.

cd /www/server/tomcat01/apache-tomcat
joe bin/setclasspath.sh
...
## Archiva
export CATALINA_OPTS="-Dappserver.home=/www/java/archiva-home -Dappserver.base=/www/java/archiva-home"

joe conf/server.xml

Archiva vyžaduje doinstalovat pár knihoven do tomcat lib

ubuntu:/www/server/tomcat01/apache-tomcat> cat lib/readme-lml.txt
Pridal jsem soubory (jsou potreba pro aplikaci Archiva):
activation-1.1.jar
derby-10.1.3.1.jar
derbytools-10.1.3.1.jar
mail-1.4.jar
mysql-connector-java-5.1.5.jar


Archiva

Je umístěna v adresáři

ubuntu:/www/java/> ls -1
archiva # link na aktualni verzi
archiva-1.2.2 # stara verze
archiva-1.3.5 # aktualni verze
archiva-home # repo conf log atd.

Další konfigurák je v conf adresáři Maven .m2

ubuntu:~/.m2> ls -1
archiva
archiva.xml
repository
settings.xml


Tyto záznamy jsou vesměs pro mě. Podrobně je vše zdokumentováno na tránkách projektu. Pokud bude zájem ještě mám v plánu archivu dokonfigurovat, aby se autentizovala oproti LDAPu.

Ještě malá poznámka na závěr. Verze 1.3.5 nevyžadovala žádné úpravy MySQL tabulek. Udělal jsem dump a ten nalil na nový server, kam jsem aplikaci stěhoval i s archiva-home a vše běží jak má. Na stěhování repo jsem užil rsync.

úterý 12. října 2010

Sonar - manage code quality

Dnes jsem byl požádán o zprovoznění aplikace Sonar, což je Java aplikace pro správu kvality kódu. Nejsem vývojář, ale jako správce systému jsem nucen danou aplikaci nainstalovat a provozovat v nějakém rozumném stavu (zalohy konfigurace, db atd.). Sonar jsem konfiguroval s MySQL databází. Instalace je vcelku snadná.

Živá ukázka
http://nemo.sonarsource.org/

Startovaci script umisten do init.d.

root@sonar:/etc/init.d# cat sonar
#!/bin/sh

sudo -u sonar /data/app/sonar/bin/linux-x86-32/sonar.sh $1


Prvotní inicializace aplikace je pěkně viditelná v logu.

tail -f logs/sonar.log
2010.10.12 13:02:22 INFO org.sonar.INFO loading the profile Sonar way with Findbugs/java from checkstyle
2010.10.12 13:02:22 INFO org.sonar.INFO loading the profile Sun checks/java from checkstyle
2010.10.12 13:02:24 INFO org.sonar.INFO loading findbugs profiles...
2010.10.12 13:02:24 INFO org.sonar.INFO loading the profile Sonar way with Findbugs/java from findbugs
2010.10.12 13:02:39 INFO org.sonar.INFO activating java default profile...
2010.10.12 13:02:39 INFO org.sonar.INFO Load profiles done: 21394 ms
2010.10.12 13:02:39 INFO org.sonar.INFO Start services done: 30238 ms
2010.10.12 13:02:39 INFO org.sonar.INFO Loading web services...
2010.10.12 13:02:39 INFO org.sonar.INFO Loading web services...
2010.10.12 13:02:39 INFO org.sonar.INFO Sonar started: http://0.0.0.0:9000/


V budoucnu se o dané aplikaci dozvím více od vývojářů.

čtvrtek 16. září 2010

Tomcat SSL

Dnes jsem řešil pěkně vypečenej zadrhel. Před dvouma měsícema se spoustela aplikace, běžící na tomcatu, která vyžadovala užití SSL certifikátu, který app. používala pro komunikaci s jiným serverem. Vývojář vytvořil KEYSTORE a do nej uložil dodaný certifikát.

Úprava nastavení tomcatu byla následující

KEYSTORE=$CATALINA_HOME/conf/keystore
JAVA_OPTS=" ... -Djavax.net.ssl.trustStore=$KEYSTORE/mycert.truststore -Djavax.net.ssl.trustStorePassword=changeit"

Vše fungovalo. Až do doby, než se řešil problém ostatních aplikací, které dle vyjádření Java programátora nevidí Root CA certifikáty. Blesklo mi hlavou, že se to tou předchozí volbou přenastavilo.

Pátral jsem, kde má tomcat nejaké definice o keystore a nic jsem nenašel. Tak jsem hledal níže a kořenové certifikátý jsem našel v JDK.

find jdk1.6.0_21/ -name '*cert*'
jdk1.6.0_21/jre/lib/security/cacerts

Daný soubor obsahuje kořenové certifikáty certifikačních autorit, obdobně jako tomu je u prohlížečů. Pro řešení problému jsem vyexportoval certifikát z lokálního uložiště a importoval do cacert JVM, který zjevně užíva tomcat i v něm deployované aplikace (bez nutnosti nějaké konfigurace). Pro manipulaci s certifikátama java používá aplikaci keytool.

keytool -keystore mycert.truststore -list
keytool -keystore mycert.truststore -exportcert -file exportkey.crt

keytool -keystore cacerts -list
chmod 666 cacerts
keytool -keystore cacerts -importcert -file exportkey.crt
chmod 444 cacerts


Po restartu tomcatu a odstranění nevhodné konfigurace lokálního keystore z JAVA_OPTS, vše opět zařalo fungovat.

Doporučení: Po každé instalaci JVM (jre nebo jdk) je velmi vhodné změnit defaultní heslo "changeit" na nějaké bezpečnější.

středa 25. srpna 2010

Java Thread Dump

Dnes za mnou přišel kolega s označením JNO a požadoval test zaslání signalu QUIT na bežící proces. Dle tohoto návodu.

ps axf | grep java
kill -QUIT process_id

Do logu catalina.out se zapíše Thread Dump, ze kterého něco vyčte skušený Java Programátor. Nápomocná může být manuálová stránka p příkazu kill.

úterý 4. května 2010

Java Support Roadmap

Dnes jsem narazil na zajimavou tabulku

http://java.sun.com/products/archive/eol.policy.html

J2SE 5.0 End of Service Life Notice

J2SE 5.0 reached its End of Service Life (EOSL) on November 3, 2009, which is the date of the final publicly available update of version 5.0 (J2SE 5.0 Update 22). Customers interested in learning more about Sun's Java Technology Support and EOL policy


Takže JDK 1.5 standard edice je bez podpory :-(

pondělí 22. března 2010

MALLOC_CHECK - glibc vs java

S touto hláškou mě dnes lehce vyděsil kolega s kódovým označením PCI :-)

*** glibc detected *** double free or corruption ***

Hláška se objevila při spustění čehosi co je napsáno v jazyce Java a má to obludný název com.fg.pdf.cps.PdfToImageAction :-) Načítá si to PDF soubory a někam na určené místo to vyplivne obrázky. Budu dále pátrat co toto chování způsobuje, protože daný proces doslova sejme aplikační server Tomcat.

Řešením je pro uživatele pod kterým se to pouští nastavit tuto proměnnou. Tak jako tak je třeba přijít na příčinu přetékání paměti. MALLOC je subrutina jazyka C, která řídí dinamickou alokaci paměti.

export MALLOC_CHECK_=0

set | grep MALL
MALLOC_CHECK_=0


Testováno na Linux systémech s glibc těchto verzí:

libglib2.0-0 2.16.6-0ubuntu1.2
libglib2.0-0 2.10.3-0ubuntu1


Zde je použití proměnné MALLOC_CHECK pěkně popsané.

středa 28. října 2009

JDK 1.6 na FreeBSD

Na systému FreeBSD slze provozovat několik různých implementaci JDK. Popis je na stránkách projektu.

diablo-jdk-1.6.0.07.02_6 Java Development Kit 1.6.0_07.02

java -version
java version "1.6.0_07"
Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)

openjdk6-b16_2 Sun's java 6 virtual machine release under the GPL v2

java -version
openjdk version "1.6.0-internal"
OpenJDK Runtime Environment (build 1.6.0-internal-root_28_oct_2009_20_33-b00)
OpenJDK 64-Bit Server VM (build 11.0-b17, mixed mode)

jdk-1.6.0.3p4_12 Java Development Kit 1.6.0

java -version
java version "1.6.0_03-p4"
Java(TM) SE Runtime Environment (build 1.6.0_03-p4-root_28_oct_2009_19_15-b00)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-p4-root_28_oct_2009_19_15-b00, mixed mode)

Velmi užitečným balíkem je javavmwrapper, který nám umožní mít v systému více verzí javy a díky příkazům registervm a unregistervm máme možnost snadno změnit aktivní java virtualní mašinu.

javavmwrapper-2.3.3 Wrapper script for various Java Virtual Machines

JFire na FreeBSD

Nedávno jsem byl upozorněn na jeden ERP open source systém a tím je JFire, nedalo mi to a musel jsem si jej otestovat. Instaloval jsem jej na testovací server, kde je momentálně FreeBSD 8.0-RC1.

Pro zprovoznění je třeba Java Development Kit - diablo-jdk-1.6.0.x a databáze MySQL, je velmi milé, že autoři myslí na Linixové desktopy. A klient daného systému je dostupný pod GTK, tudíž pro Gnome uživatele a to ve 32bitové i 64bitové verzi.

JFire je postaven na aplikačním serveru JBoss. Zajímavý seriál článků o něm vyšel na serveru root.cz. Nejprve jsem si na zmíněném serveru instaloval samotný aplikační server ve verzi 4.2.3.GA a to pomocí patřičného portu, ale po podrobnějším zjištění to bylo zbytečné. Stažená instalace JFire si sebou nese vlastní verzi JBoss 4.2.2.GA. Tento způsob distribuce a instalace serverové části mi příjde hodně zvláštní. Čekal bych spíše, že zprovozním aplikační server a dle návodu do něj nainstaluju aplikaci, která jej využívá. S ohledem na složitost celého frameworku se daná tato distribuce serveru pochopit.

Instalace je velmi jednoduchá a je popsána zde.

Daný systém má dle mého soudu velmi široký záběr a věřím, že některé menší firmy mohou použitím tohoto systému ušetřit spoustu peněz za drahé, mnohdy předražené komerční řešení. Ovšem implementovat JFire v nějaké firmně nebude jednoduché, asi jako implementace jakéhokoliv jiného ERP systému.