Saturday, May 20, 2006

I really enjoy coding web applications with PL/SQL. It is straight forward and easy to do. However, sometimes the PL/SQL applications do not seem as easily managed as some of the JavaServer Faces applications which I have written.

Usually I follow the same technique when it comes to coding a PL/SQL web application. I use the PL/SQL Web Toolkit to do most of the front end work. I usually try to keep the code simple, and if possible, I try to keep each application contained within it's own package. Sometimes one package per application does not happen because of code sizing and code reuse from some other "common" code package.

One thing I do not like about PL/SQL apps is that the view and the business logic are almost never separated. There really is no MVC (Model View Controller) structure to coding a PL/SQL web application. Navigation between pages usually involves passing parameters between different PL/SQL procedures to perform different tasks and output the result. Sometimes this gets annoying (similar to that of coding with JSP) because keeping track of parameters can be a pain if you have lots to deal with. All in all, typical PL/SQL web appplications are easy to code, but they are riddled with intertwined PL/SQL code and HTP web toolkit "tags". This leads to code which is difficult to maintain. Especially if you do not look at the code for 6 months and then try to come back and determine what you did in the first place. It can be done...but it takes time to review your work and come up to speed with the tact you took when you wrote the application.

I do not think PL/SQL web applications need to be this way. They should be easier to code and they should follow an MVC structure to keep the view separated from the business logic in different packages. JavaServer Faces is an excellent Java EE coding framework. I'd argue that it could possibly be the most advanced web framework available today. I think PL/SQL needs a framework which is similar.

Why not use objects to pass data in PL/SQL apps instead of passing parameters between procedures? Why can't we code PL/SQL components like those in the JSF API? I propose that we create a framework similar to JSF for PL/SQL.

Wednesday, May 17, 2006

I've had a chance to work a bit with both the Java EE SDK and Netbeans 5.5 beta. I love the SDK...I've been able to produce EJB 3 code with ease. I love the ease of utilizing Netbeans with the SDK. You literally install and begin coding...very little set up time!

I continue to use JDeveloper at work, and it is also great. Although there is a bit of a learning curve involved. I'd definitely prefer Netbeans if I was a beginner. Its ease of use and its new features make it a very close contender with any other great IDE.

I've also had no issues with the Sun Application Server PE9 thus far. I've always been a fan of this free Sun App Server, and the new release is no let down.

Tuesday, May 16, 2006

Ever since I created my first database on our new production box, I've been receiving an ORA-07445 error intermittantly. For a while (about a month or so), it went away and that is the time frame when we moved into production. About a week later we were getting the ORA error again.

I have done about all that an Oracle DBA could do in this situation. I've raked through the alert log, and taken a look at each trace file. I've also run the Oracle RDA (Remote Diagnostic Assistant) and sent the output to Oracle support. We've narrowed the error down to an issue with XML DB within the database. Now, we do not even use XML DB, but perhaps there is a process running within the database that is utilizing the feature. Of course, there is a known Oracle bug which corresponds to my issue. I am supposed to grant all users the XDBADMIN role in order to prevent the issue from occurring. That is not going to happen.

My solution (I thought) was to create a limited role which had SELECT privileges on XDBCONFIG. That role was granted to each user in the database....nothing was resolved. As a matter of fact, this error has been occurring on and off for the past couple of months and it is still not resolved. It does not appear to be affecting the way in which the database is functioning, and my users are not complaining of any issues. But I am still curious as to why I continue to receive this error. Is it really the Oracle bug which support thinks it is, or is there another cause which we have not yet found?

Sunday, May 07, 2006

My golfing season just began today...love that sport! I've been in a golf league for the past two years now, and I haven't gotten any better. Well, I take that back...last year I started to get better and then I purchased a new set of RAM golf clubs...been terrible ever since.

It was a great day for golfing and I did bad as usual. Got a couple of pars, but mostly bogey and double-bogey. I think it will be my goal this year to land at least 2 birdies in one game...that is a tough goal for me considering how bad I am!

As application developers, we come upon far too many decisions within the development of even a simple application. Developers need to make decisions about which type of business logic to use and it what cases to use it. Developers also need to make decisions about how to lay out a user interface and which components will work best for a particular situation.

I've been finding myself in a major decision state when it comes to application development...a decision which must be made prior to making any decisions at all about how the business logic will flow, or how the UI will be constructed. Which language will best suit my needs? As developers, many of us know how to construct applications in more than one language...but which one will do the job best? One of my most difficult decisions is based upon this very question.

For example, last week I was asked to develop a simple layout which will display statistical results for a number of different job crafts. I basically needed to display some data within several different HTML tables. Now, I can easily create this page using a variety of languages: HTML, PL/SQL, JSP, JSF, Python...just to name a few. Which will work best?

I am an advocate of PL/SQL since it is stored within the database, and the speed is unmatched. However, the development time with PL/SQL in such a case may be a bit more lengthy than some other solutions. I also love JSF because of it's clear separation between the view and the business logic, but it may perform a bit slower than PL/SQL. However, my development time with JSF would probably be much shorter than PL/SQL because I can use JDevelopers WYSIWYG JSF solution.

Thursday, May 04, 2006

Recently I ran across a unique way of authenticating users in PL/SQL applications. Usually when I create a PL/SQL application which requires authentication, I end up using the default DAD (data access descriptor) authentication method. I've gotten sick of the pop-up username/password prompt and I wanted to create custom log in pages like I do for my JSF apps. This newly found authentication mechanism allows me to do so.

Take a look at the link asktom.com Q&A ... of course it is from asktom.oracle.com. It describes the methodology that Oracle uses for "retaining" user passwords and how you can create a log in screen which accepts the defacto username/password and then use a stored procedure to check the validity of the user.

It is worth a look if you'd like to do away with the DAD authenication.