A következő címkéjű bejegyzések mutatása: JBoss. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: JBoss. Összes bejegyzés megjelenítése

2012. január 4., szerda

Hasznos Eclipse pluginok Java alapú fejlesztéshez

Már elég régóta használok Eclipse-t a fejlesztéshez és mostanra összegyűlt pár hasznos plugin amiket mindig telepíteni szoktam, így most összeírtam ezeket. Az Eclipse Marketplace (Help/Eclipse Marketplace...) bevezetése óta, szerencsére a szükséges pluginok összevadászása is gyorsan megvan, nem kell sokat keresgélni.
JBoss, Hibernate és JSF alapú projectek fejlesztéséhez elengedhetetlen. Segítséget nyújt a projektek generálásához, kódok kiegészítéséhez, EJB-QL lekérdezések real-time teszteléséhez, JBoss ESB és JBPM-es fejlesztésekhez is.

JRebel plugin
A blogom olvasóinak gondolom nem kell bemutatnom a JRebel-t, nélkülözhetetlen eszköz Enterprise Java fejlesztéshez! A hozzákapcsolódó plugin megkönnyíti a telepítést és a konfigurálást is.

Eclipse Memory Analyzer plugin
Az EMA egy kiváló Java Heap analizáló kiterjesztés, ami segít a memory leak-ek megtalálásában, továbbá hasznos információkat szolgáltat arról, hogy milyen objektumok foglalják a memóriát! A legújabb fejlesztéseknek köszönhetően nemcsak SUN-os, hanem IBM Java-s heap dump-ot is analizálhatunk vele.
Log fájlok nézegetésére szolgáló plugin, a console view-hez hasonló működéssel. Erre a pluginra akkor volt szükségem amikor egy Websphere 6.1-es fejlesztésénél áttértünk a RAD folytonos belassulása miatt Eclipse-re és ott is fontos volt a napló állományok kényelmes követése. A plugin bevált, azóta is ezt használjuk!

Java Decompiler plugin (JAD)
Ez a tool lehetőséget ad a Java class fájlok visszafejtésére és analizálására. Hasznos lehet ha elveszett Java forrásainkat akarnánk a class fájlokból visszaállítani vagy ha egy nem open sorce Java library osztályainak tartalmába szeretnék betekintést nyerni! Van egy standalone verziója is JD-GUI néven.

Subclipse plugin
A népszerű Subversion-hoz (SVN) készült Eclipse plugin. Már régóta használom, gond nélkül működik.

FindBugs plugin 
A FindBugs felfedi a kódban a gyakori programozói hibákat, bad practice-eket és javaslatokat ad a kijavításukra. Pl.: objektumok összehasonlítása == operátorral; hashCode() nélküli equals() metódus; stb... Létezik még egy findbugs-contrib kiegészítő is, ami további hiba detektorokkal egészíti ki a keresést. Érdemes mind kettőt telepíteni!
A findbugs-hoz hasonló, potenciális Java hibák keresésére szolgáló plugin, ami segít megtalálni a nem optimális kódokat, lehetséges bugokat és a túlkomplikált kifejezéseket is. Jól paraméterezhető és egyszerűen szűkíthető a detektálandó hiba típusok köre, továbbá lehetőségünk van saját hiba detektáló kiterjesztéseket is beilleszteni! A PMD pluginhoz tartozik még egy paraméterezhető Copy-Paste-Detector (CPD), amivel segíthetünk kiiktatni ezt a rossz programozói szokást! :)

Checkstyle plugin
Szintén egy statikus kód ellenőrző plugin, azonban ezzel a kódolási standardokra fogalmazhatunk meg szabályokat. pl.: maximum 500 soros lehet egy Java osztály, legfeljebb 3 paramétere lehet egy metódusnak; a paraméternevek nem tartalmazhatnak ékezetes betűket; stb... A PMD-hez hasonlóan ez is jól paraméterezhető és egyedi szabályokkal is bővíthető.
Különböző metrikákat tudhatunk meg a kódunkról és az osztályok közötti csatolásról, melyeket grafikusan is megtekinthetünk! pl.: Ciklomatikus komplexitás; kohézió, stabilitás, stb...
A CodePro Analytix szintén egy hasznos tool amit a Google fejleszt. Az előbb említett statikus kód analizálók tulajdonságait ötvözi és kiegészíti kód lefedettség ellenőrzéssel valamint automatikus unit teszt generálással is, bár ez utóbbit azért kezeljük óvatosan! A statikus kód analizálók közül ez tekinthető a legteljesebbnek.


Érdemes még megnézni az Eclipse Marketplace toplistát, mert rátalálhatunk egy-két hasznos kiegészítőre! A jövőben még bővíteni fogom ezt a bejegyzést, így a későbbiekben is látogass majd vissza! .)

2011. december 18., vasárnap

Karácsonyi kiadás: JBoss AS vs házi macska

Karácsony alkalmából most egy rendhagyó bejegyzéssel jelentkezem, ahol is annak próbálok utánajárni, hogy milyen hasonlóságok és eltérések lehetnek egy JBoss alkalmazás szerver és egy kövér házi macska között. Lássuk...


Java alapú alkalmazás szerver Javarészt alszik és fetreng
Néha bugos Néha bolhás
Többféle tanúsítvánnyal is rendelkezik Egy oltási könyvvel rendelkezik
Gyorsan indul Lassan indul
Stabilan fut Stabilan fut
Memória fogyasztása meglepően alacsony Étel fogyasztása meglepően magas
További JBoss szerverekkel is képes együttműködni Más macskákkal nem képes együttműködni
Vasat tolok alá Párnát tolok alá
Kiszolgálja a kéréseket Kiszolgálom a kéréseit

Boldog Karácsonyt és Kellemes Ünnepeket Kívánok a blogom olvasóinak!



2011. március 20., vasárnap

JBoss-orientált fejlesztőkörnyezet kialakítása - 2.

Frissítve: 2011.04.21. 

A cikk előző részében elkészítettem a fejlesztőkörnyezet szerver oldali részét, a mostani post-ban pedig az Eclipse beállításával és a környezet csinosítgatásával folytatom a leírást. 

Mivel nem voltam megelégedve az Ubuntu alapértelmezett betűtípusával, feltelepítettem a Microsoftos betűtípusokat a sudo apt-get install ttf-mscorefonts-installer cabextract paranccsal és módosítottam a fontokat az Ubuntu System/Preference/Appearance menü alatt az alábbiak szerint:


A sudo apt-get install eclipse paranccsal felraktam az Eclipse-t, majd az /etc/eclipse.ini fájlban módosítottam az alapértelmezett memória beállításokon, mert az -Xms,-Xmx,-XXMaxPermSize értékeit alacsonynak találtam. Az Eclipse toolbar és tabbar widget-ei túl sok helyközt tartalmaznak Linux alatt, ezért az Ubuntu fórum egyik bejegyzése alapján létrehoztam a /home/balazs könyvtár alatt egy .gtkrc-2.0 nevű fájlt, majd bemásoltam az alábbi sorokat a megjelenés feljavításához és újraindítottam az Eclipse-t.

style "gtkcompact" {
GtkButton::default_border={0,0,0,0}
GtkButton::default_outside_border={0,0,0,0}
GtkButtonBox::child_min_width=0
GtkButtonBox::child_min_heigth=0
GtkButtonBox::child_internal_pad_x=0
GtkButtonBox::child_internal_pad_y=0
GtkMenu::vertical-padding=1
GtkMenuBar::internal_padding=0
GtkMenuItem::horizontal_padding=4
GtkToolbar::internal-padding=0
GtkToolbar::space-size=0
GtkOptionMenu::indicator_size=0
GtkOptionMenu::indicator_spacing=0
GtkPaned::handle_size=4
GtkRange::trough_border=0
GtkRange::stepper_spacing=0
GtkScale::value_spacing=0
GtkScrolledWindow::scrollbar_spacing=0
GtkTreeView::vertical-separator=0
GtkTreeView::horizontal-separator=0
GtkTreeView::fixed-height-mode=TRUE
GtkWidget::focus_padding=0
}
class "GtkWidget" style "gtkcompact"

style "compact-toolbar"
{
    GtkToolbar::internal-padding = 0
    xthickness = 1
    ythickness = 1
}

style "compact-button"
{
    xthickness = 0
    ythickness = 0
}

class "GtkToolbar"                   style "compact-toolbar"
widget_class "*<GtkToolbar>*<GtkButton>"    style "compact-button"

Ezután módosítottam az Eclipse alapértelmezésként használt betűtípusain is. A Window/Preferences menü alatt a General/Appearance/Colors and Fonts beállításánál a Java/Java Editor Text Font és Basic/Text Font -hoz megadtam a Courier 10 pitch/Regular/11px karakter formátumot.


A következő lépésben beállítottam a JBoss Community által használt Java kód formázási stílust, melyet a Seam3-nál és a JBoss AS 7 projektnél is alkalmaznak. Ehhez a Window/Preferences/Java/CodeStyle/Formatter menüpont alatt beimportáltam a JBossAs7Formatter xml fájlt. A forráskód formázáshoz a CTRL+F billentyűkombinációt kell alkalmazni az Eclipse Java editor view-ban.


Érdemes még beállítani az xhtml fájlok formázásához a Line Width=128 értéket, így a CTRL+F hatására az xhtml oldalak tagolása is megfelelő lesz. (Window/preferences/Web/HtmlFiles/Editor)
Végül módosítottam a szöveges fájlok alapértelmezett kódolását UTF-8-ra, valamint a line delimiter-t UNIX stílusúra. (window/preferences/general/workspace) Így zökkenőmentesen dolgozhat több fejlesztő is ugyanazon a projekten, eltérő operációs rendszert használva. 


A módosítások eredménye jól látható az alábbi képernyőképek alapján:
 
Alapértelmezett megjelenés

Módosított megjelenés

Mivel az előkészített környezetben leginkább JBoss alapú technológiákat fogok használni, így a fejlesztés támogatásához felraktam a JBoss Tools plugint. A telepítéséhez kiválasztottam a Help/Install New Software... menüpontot, majd hozzáadtam az Eclipse verziójához (Help/About Eclipse SDK) illeszkedő update site url-t. A repository-ból feltelepített Eclipse 3.5.2 -höz, a JBoss Tools 3.1 stable release update site-ot használtam. Az Eclipse újraindítása után átváltottam a JBossAS perspektívára (Window/Open Perspective/ Other...), majd felvettem a JBoss alkalmazás szervert (JBoss Server View/jobb klikk/new/server/JBoss AS 5.1) és hozzáadtam a Seam Runtime-ot (Window/Preferences/JBossTools/Web/Seam).

A File/New/Seam Web Project menüt kiválasztva, lehetőségünk van gyorsan legenerálni egy Seam sablon alkalmazást (Enterprise vagy Web) melyet igényeink szerint módosíthatunk.


2011. február 11., péntek

JBoss-orientált fejlesztőkörnyezet kialakítása - 1.

Frissítve: 2011.09.02.

A fejlesztők körében gyakori, hogy Windows-on fejlesztenek és Linux alatt csak üzemeltetik az alkalmazásokat. Ezzel korábban én is így voltam, azonban nemrég elhatároztam hogy kliens oldalon is áttérek a Linuxra, így ennek a lépéseit fogom most ismertetni. A váltás után leginkább az Eclipse megjelenésével nem voltam megbarátkozva, de erről a blog következő részében még részletesen fogok írni.

A fejlesztő környezetet az Ubuntu 10.10, SunJDK 6, MySQL 5.1, Eclipse 3.5, JBoss 5.1, JBoss Seam 2.2 és JBoss Tools 3.1 eszközökből állítottam össze.

Ubuntu 10.10
A képfájlt az Ubuntu letöltési oldaláról mentettem le. A telepítési folyamat elég egyszerű volt, olyan next->next->finish jellegű. A telepítés befejezésével egy teljesen használható rendszert kaptam, nem kellett külön meghajtó programokat keresgélnem és feltelepítenem mint Windows alatt, a bluetooth-tól kezdve a webkameráig minden egyből működött. Érdemes még megemlítenem, hogy más disztribúciókhoz képest az Ubuntu 10.10 alapértelmezett megjelenése is kifejezetten jóra sikerült, csak a fontok terén kellett egy kicsit utána állítanom.

Általában többféle java implementáció is megtalálható a gépemen, azonban legtöbbször a SUN megvalósítását szoktam használni. A Sun JDK telepítéshez először felvettem a sun-os repositoryt, majd telepítettem a csomagokat.
sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin sun-java6-fonts
Mivel még régebben felraktam az OpenJDK-t, így az alapértelmezett Java-t át kellett állítanom a Sun JDK-ra. Ehhez megnéztem, hogy milyen Java implementációim vannak jelenleg: sudo update-java-alternatives -l, majd kiválasztottam a felsorolásból a java-6-sun-t: sudo update-java-alternatives -s java-6-sun. Végül a java -version -al megbizonyosodtam az átállás sikerességéről.

Minden fejlesztőnek van egy kedvenc keretrendszere, az enyém a JBoss Seam. Már jó pár éve használom és eddig nem okozott csalódást. Azt hiszem nem árulok el nagy titkot azzal, hogy a blogom olvasói még sokat fognak vele  találkozni. Visszatérve a telepítésre, letöltöttem a JBoss Seam 2.2 -es verzióját, majd kicsomagoltam a /usr/local/seam könyvtárba.

A JBoss 5.1 szervert kicsomagoltam az unzip jboss-5.1.0.GA-jdk6.zip paranccsal a /usr/local/jboss-5.1.0.GA könyvtár alá, majd készítettem egy szimbolikus linket: ln -s jboss-5.1.0.GA jboss. A jboss frissítése esetén mostmár csak a linket kell átállítani, így a /usr/local/jboss mindig az aktuális szerverre fog mutatni. Mivel a JBoss alatti könyvtárszerkezet nem követi a Linuxos fájlrendszer konvenciókat, ezért a  jboss/server/all/log, jboss/server/all/tmp és jboss/server/all/work könyvtárakra létrehoztam egy-egy szimbolikus linket, melyek a /var/log/jboss, /var/jboss/tmp és /var/jboss/work könyvtárakra mutatnak. 
A mysql eléréséhez, a mysql-connector-java.jar JDBC driver-t bemásoltam  a jboss/server/all/lib könyvtár alá. A datasource bekonfigurálásához a jboss/docs/examples/jca/mysql-ds.xml sablont átmásoltam a jboss/server/default/deploy könyvtárba majd módosítottam az alábbiak szerint:

<datasources>
  <local-tx-datasource>
   <jndi-name>testDatasource</jndi-name>
   <connection-url>
    jdbc:mysql://localhost:3306/testDB
   </connection-url>
   <driver-class>com.mysql.jdbc.Driver</driver-class>
   <user-name>testUsr</user-name>
   <password>testPwd</password>
   <exception-sorter-classname>
    org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
   </exception-sorter-class-name>
   <metadata>
    <type-mapping>mySQL</type-mapping>
   </metadata>
  </local-tx-datasource>
</datasources>

A következő pár lépést akkor érdemes elvégezni, ha a JBoss-t Linuxos szolgáltatásként is el szeretnénk indítani. Hozzunk létre egy jboss nevű felhasználót akinek a nevében fog majd futni a JBoss alkalmazás szerver: useradd -s /bin/bash -g jboss jboss. A jboss felhasználónak biztonsági okok miatt ne adjunk meg jelszót, így csak root -ként lesz lehetőségünk a jboss felhasználóra váltani a su jboss paranccsal. Ha eddig nem a jboss felhasználóval dolgoztunk, módosítsuk a /usr/local/jboss/ alatti fájlok tulajdonosi és csoport jogait a jboss felhasználóra ill. csoportra: chown jboss:jboss /usr/local/jboss/ -R. Ahhoz, hogy a JBoss szervert linuxos szolgáltatásként tudjuk futtatni, a jboss/bin/jboss_init_redhat.sh scriptet át kell másolni az /etc/init.d/ könyvtárba, majd be kell állítani a JBOSS_HOME, JBOSS_USER, JBOSS_CONF, JAVA_PATH változókat és az update-rc.d jboss_init_redhat.sh defaults parancsal telepíteni az alapértelmezett futási szintekre, melynek az eredményét a chkconfig -l paranccsal ellenőrizhetjük. Ezután a JBoss-t az /etc/init.d/jboss_init_redhat.sh start paranccsal tudjuk indítani.

Feltelepítettem a mysql szerver és kliens programot: apt-get install mysql-server mysql-client, majd a mysql biztonságosabb használata érdekében kiadtam a következő parancsot:/usr/bin/mysql_secure_installation és végrehajtottam az alábbi lépéseket. Ezután az /etc/mysql/my.cnf állományban, a [mysqld] sor után felvettem a következő változókat:

lower_case_table_names=1 
init_connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci 
skip-character-set-client-handshake 

Linux alatt a mysql táblanevek alapértelmezettként case-sensitive-ek, így ezt megváltoztattam  a lower_case_table_names változó 1-re állításával. A karakterkódolási problémák elkerülése véget pedig beállítottam, hogy a mysql globálisan az utf8-at használja.
A változók hozzáadása után újraindítottam a mysql-t és csatlakoztam az adatbázishoz, majd létrehoztam egy testDB nevű adatbázist: CREATE DATABASE testDB CHARACTER SET utf8 COLLATE utf8_general_ci; és készítettem egy testUsr nevű felhasználót akihez hozzárendeltem a megfelelő jogokat: GRANT ALL PRIVILEGES ON testDB.* to 'testUsr' IDENTIFIED BY 'testPwd' WITH GRANT OPTION;

Végül összegyűjtöttem azokat a parancsokat, melyeket gyakrabban használok a mysql üzemeltetése során.

A mysql szerver újraindítása: 
service mysql restart
Sql szkript importálása a kiválasztott adatbázisba: 
mysql --user=testUsr --password=testPwd testDB < sqlscript.sql
Backup készítése a kiválasztott adatbázisról: 
mysqldump --user=testUsr --password=testPwd testDB > backup.sql
Adatbázisok megtekintése:
mysql -u testUsr --password=testPwd testDB --execute 'show databases'
A kiválasztott adatbázishoz tartozó táblák megtekintése:
mysql --user=testUsr --password=testPwd testDB --execute 'show tables'
Az alapértelmezett mysql engine megtekintése:
 
mysql -u testUsr --password=testPwd testDB --execute 'show engines' 
A mysql változók megtekintése: 
mysql -u testUsr --password=testPwd --execute 'show variables'
Mysq felhasználók listázása: 
mysql --user=testUsr --password=testPwd testDB --execute 'SELECT User, Host, Password FROM mysql.user';


A cikk következő részében a kedvenc fejlesztőeszközömmel, az Eclipse-el fogom folytatni a JBoss-orientált fejlesztőkörnyezet kialakítását. A cikk azoknak is hasznos lesz, akik nincsenek megelégedve az Eclipse alapértelmezett kinézetével Linux alatt.