Amazing OC4J

it just another hectic day… hmm.. word ‘hectic’ sounds like a nice word 😛

Anyway, I’ve just install new application developed many days (months?) ago that should be launched last week. But  my partner couldn’t get it run on our application server.

This is so weird, because this application was developed and running well on Jetty Web Server.
Fyi, this application is using Tapestry 3 as base framework, equipped with Spring for IOC and Oracle 9i as its database.
The log was clueless, because log from oracle was only shown exception trace. I was blaming tapestry, since this framework is a little bit complicated for me (probably from its event-base design), even it provides simple way to develop your application. I would choose Webwork or Struts 2 instead.

Going deep into its error log (that I finally got from another log written by its wrapper), and after search and trace tapestry source code, I found that the problem was: tapestry could not parsing xml file.  Tapestry is using digester that especially depends on xalan and xerces library.

Googling around and around, it made me confusing :(. I found some page inform that it is possible to change oracle default parser by changing java environment in its command like this one. After trying hard, it did not work 😦 . I was starting to blame OC4J already.

And then I start searching on Oracle OC4J web site. Still clueless 😦
Actually, it is boring enough reading through Oracle web site, I found its sitemap is not good to read and the link is too many.. Click, click, and click… but I couldn’t get information that I need.
Unintentionally, my eyes catched by this page, Oracle Application Server 10g (10.1.3) How-To’s and got a link inside it to swap default oracle xml parser into another library.

Following its step by step instructions, and after one bright error deploying this application, a magic thing happen. It works!!! 🙂  .
Apache based xml parser library could run into OC4J without disrupting another library as I supposed to be.

Well,  I would like to say that OC4J design is so amazing… I found that, you could start up your application in its Web Container with separate libraries to avoid library dependancy collision, even you can detach oracle own library if you think you would not use is. Not so many web container or application server can do that.

Well, I guess this time I must treat my partner, becaus I was praying, if I can solve this problem, I will treat him to have dinner at Mie Factory 😛

Posted in IT, jAVA. 3 Comments »

Programmer Personality Test : DLSB

Artinya bukan dan lain sebagainya, tapi singkatan dari Doer, Low level, Solo situation, liBeral programmer.

Berikut ini kutipan dari quiz Programmer Personality Test

Your programmer personality type is: Read the rest of this entry »

Posted in IT. 1 Comment »

Tips lebih produktif menggunakan Windows XP

Seringkali sebel ketika memakai windows explorer untuk membuka sebuah folder / directory yang di dalamnya terdapat banyak compressed file, tiba – tiba nge-hang atau lama sekali responsnya. Hal ini terjadi karena windows explorer membaca compressed file (.zip, .cab) untuk ditampilkan dalam folder tree.

Sedikit googling, ketemu link http://ftp.cac.psu.edu/pub/ger/documents/WindowsXPChanges.html. Ternyata cukup simple, hanya dengan menjalankan perintah di command prompt / run :
regsvr32 %SYSTEMROOT%\System32\zipfldr.dll /u
(%SYSTEMROOT% bisa diganti dengan C:\Windows), gangguan tersebut terselesaikan 😀 .

Ada juga beberapa shortcut yang bisa menambah produktifitas. Di environment Windows, sudah distandarisasi berbagai shortcut keyboard. Read the rest of this entry »

Posted in IT. 8 Comments »

Membuat job scheduler / cron / daemon dengan Java menggunakan Spring dan Quartz

Jika kita menggunakan *NIX atau Linux, kita akan familiar dengan istilah cron atau daemon. Di Windows jika kita buka Control Panel, juga ada tools yang disebut dengan Scheduled Tasks. Semuanya memiliki kemiripan, yaitu menjalankan sebuah task / job / perintah pada sistem operasi tersebut. Di Windows lebih mudah dalam setting-nya karena sudah ada GUI yang mempermudah untuk membuat schedule. Hanya saja, cron di *NIX / Linux memiliki fleksibilitas yang lebih baik pada pola – schedule pattern-nya, meskipun bagi yang belum biasa akan sedikit susah karena harus mempelajari schedule pattern dari cron dan juga membuat script dari cron itu sendiri.

Dengan Java, tidak terlampau sulit untuk melakukan hal yang sama dengan yang dilakukan oleh sistem operasi tersebut, hanya beda cara saja, yang satu built in dari sistem operasi, sedangkan dengan Java perlu sedikit programming 🙂 . Schedule ini bisa kita gunakan untuk keperluan aplikasi kita sendiri, atau untuk eksekusi perintah lain di sistem operasi (dengan menggunakan java.lang.Runtime).

Untuk membuat job scheduler dalam Java, sebenarnya telah ada class java.util.Timer dan java.util.TimerTask yang akan membantu kita membuat cron ala kita sendiri. Tapi pasti akan sulit bagi kita untuk ‘building application from the scratch’ alias mulai semua dari awal, apalagi jika aplikasi berkembang ke arah yang lebih kompleks, misalnya akses ke database atau menggunakan library lain misalnya Hibernate / Ibatis. Terlebih jika harus melakukan hardcode, yang notabene tidak fleksibel.

Bersyukurlah karena telah ada library yang mempermudah melakukan hal tersebut. Team OpenSymphony telah membuat Quartz – full-featured, open source job scheduling system – library untuk job scheduling yang open source di bawah lisensi Apache 2.0 yang bisa digunakan di berbagai aplikasi Java, baik Java EE (a.k.a. J2EE) maupun Java SE (a.k.a. J2SE). Sebagai info tambahan, OpenSymphony ini juga yang menelurkan SiteMesh (web decoration framework) dan WebWork (web-application development framework, yang menjadi cikal bakal Struts 2).

Read the rest of this entry »

Posted in IT, jAVA. 6 Comments »