it just another hectic day… hmm.. word ‘hectic’ sounds like a nice word :P
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 :P