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 😛

Advertisements
Posted in IT, jAVA. 3 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 »

Memaksimalkan kinerja aplikasi berbasis Java dengan Performance Tuning

Jika ada orang yang pernah mengimplementasikan aplikasi Java, kebanyakan akan berkomentar sama: lambat!
Kalau ada yang bertanya bagaimana tanggapan saya, akan saya jawab, iya benar! Karena memang demikianlah adanya.
Teknologi Virtual Machine mengakibatkan hal demikian terjadi, complain serupa tak luput dihadapi pula oleh Microsoft dengan .NET frameworknya.

Tapi jangan pesimistis dulu, karena banyak aplikasi dan teknologi yang justru berkembang lebih pesat dengan Java, dan juga beberapa sumbangsih lainnya dari PHP dan .NET. Read the rest of this entry »

Posted in jAVA. 3 Comments »

eTeks : PJA Toolkit, memperbaiki kelemahan GraphicsEnvironment di java.awt

Salut buat library/toolkit ini yang telah mempermudah deployment MRO Maximo yang berbasis JAVA ke mesin Solaris SPARC.

Salah satu kelemahan java adalah graphic toolkit-nya yang kadang sulit untuk dimengeti :p.

Ceritanya begini….
Ada sebuah Class Java yang menggunakan fasilitas graphic AWT pada JAVA. Hanya saja, di mesin Solaris tersebut tidak tersedia graphics environment (seperti keyboard, mouse, atau vga), atau XServer yang memadai.

Padahal sudah di-set di environment java tersebut dengan -Djava.awt.headless=true, tapi tetap saja ga bisa, karena ada HeadlessException yang ditimbulkan oleh class lainnya (misalnya java.applet.Applet). Padahal di release jdk 1.4 disarankan seperti ini.
Read the rest of this entry »

Posted in jAVA. 1 Comment »