Archive for March, 2008
URL based Navigation into a JSF application – on PhaseListener and ViewHandler
Mar 16th
Although most navigation takes place within the Java Server Faces application we are currently developing, some is from the outside. From an existing web application that handles the workflow for the end users, we will have to navigate to the JSF application – and not just to the homepage or start page, but deeplinking directly into specific pages more deep down in the JSF app. And before those pages can be displayed, data has to be prepared based on parameters passed from the external Web Application. This article will briefly show what we did to turn URL based navigation – GET or POST with parameters – into JSF navigation.
In brief the solution is based on the following ideas
Read the rest of this entry »
HOTSOS 2K8 – A Training Day with Mr. Thomas Kyte
Mar 15th
Reality is hard. While being back in Holland, work caught up with me. Instead of a full blown overview, I will present here a small one. No one posted about it yet and that would be a shame. Powerpoint presentations and demo scripts are really worthwhile so have a look.
The last day of the Hotsos symposium is the annual returning training day. This is an extra day, with also an extra fee involved, but if it fits your main interest, career path or else, is an fine add on to the main symposium. This year the training day was all about database essentials, "DBA content", demonstrated by Mr. Thomas Kyte. I would argue, though that this content is also very important for developers. Although general in its content, these are the building blocks every Oracle database user (DBA / Developer), should understand and/or know off.
The presentations and SQL demonstrations can be found via the "asktom.oracle.com" website, via the submenu "Files" and downloaded there. A short path is provided [here]. As Mr. Thomas Kyte said, the scripts and presentation can be freely distributed (because it is was in his intend that everyone should know this information). The presentation will lead you through the essentials of database functionality and more.
My SOA architecture and webservices mindset…
Mar 14th
At AMIS they are working on teaching a lot of us about the fundamentals of SOA. We just had the first couple of events in which Lucas and Peter taught us stuff about XML and BPEL. To get an idea of what SOA and webservices actually are and how we should work with them.
At the start of a SOA project, it will take additional investment to develop functionality in a way that makes it reusable (publish it as a service rather than as just some buried part of an application), develop all the small building blocks, but in the long run
you will
benefit from these building blocks in different projects. Think of the building blocks as pieces of Lego. There are a lot of different pieces available all with their own characteristics. Some are really small, others are bigger, but they all have a well defined interface and purpose. Using a lot of these (and other) small(er) blocks, you can build a bigger project that fits your needs. I have been playing with Lego since I was a little boy, and now I play with Lego again with my little boy (over 20 years later). I have noticed that in the mean time a lot of the blocks are still available, although there have been a lot of new types of block available today.
I think this analogy should also work for the SOA architecture. Today we need to build a lot of building block which can be used to build an application that currently fits our needs. When time goes by, our application needs will change (definitely) and we will have to build new services to fit our needs. But we can use available services to build these. And of course we can rebuild the ‘old’ services by using the building blocks that are available at that time, which is probably a larger set than when the service was built in the first place. Maybe it can respond faster or be more efficient than what was possible before.
In my current world, this is known as refactoring. Thinking about this a bit more, services are supposed to be like black boxes. I know what I have to put in (what are my input parameters) and what I get out of it. Maybe I don’t know the exact result (that’s why I’m using the service), but I do know what the result looks like. For instance, I have a (web)service available to which I have to feed the Postal Code and a number to get the the complete address as a result. This list is maintained by someone else (not me or my program) but we have agreed on the interface along which we both communicate. It’s like coding by contract.
If it is agreed to communicate via XML messages, the input and output message could look something like this:
request:
<?xml version="1.0" encoding="Windows-1252" ?>
<request>
<postal_code>3439 MN</postal_code>
<number>15</number>
</request>
reply:
<?xml version="1.0" encoding="Windows-1252" ?>
<reply>
<street>Edisonbaan</street>
<number>15</number>
<postal_code>3439 MN</postal_code>
<town>Nieuwegein</town>
</reply>
I know what the interface of my request should be and I know how the result will be returned to me, but I don’t know where or how the service gets its information. And I don’t need to know either. I assume that this service does its work correctly and that the result this service is correct. It is like a black box to me.
This brings up another issue: You don’t have control over all the parts of the application anymore. When a customer provides you with an issue in the application, you should consider all the external services as black boxes. The way they work is outside of your control. Now, there are two possible scenarios with these services. Hopefully the services being used already exist for some time and have pretty much all their bugs fixed, so they can be considered quite robust and less fault sensitive. But it is also possible that a bug arises in one of these services and that it is outside of your control. This can be a real error, but it can also be a problem with the response time of a service you call. The problem is that the issue provided by the customer can be in your code or in a service you call. This makes it a bit more complex to debug your application. It is possible that the issue is in a service you call and therefore outside of your control. The bright side is that all the external services you call can be tested individually for possible defects (according to your specs). It is very important to have good agreements (SLA’s) with the provider of the service you are using, regarding up-time, response time etc.
When you consider the services as building blocks, like the Lego blocks, you can build big things with these tiny blocks. It is also possible that a couple of service are being used over and over again in the same way, the same order, what makes it useful to build a new service which you can call that in turn calls the other services in the order needed. A bit like making a procedure or function in PL/SQL. Using the small blocks
you have created something new
that can now be used as a whole new building block, where you don’t have to remember how the different pieces should be put together to create this.
Overall, I think I have a lot to learn about the world of SOA and services, It’s a different way of thinking from my PL/SQL based way of thinking, but it’s always nice to learn new things. Maybe it’s just seeing things in a different way or just seeing things that have always been there in a different light.
Oracle DBA Symposium in Holland
Mar 13th
Planboard organiseert een Oracle DBA Symposium op dinsdag 27 mei 2008.
In tien technische sessies, verdeeld over twee parallelle tracks, delen DBA’ers hun praktijkervaringen met de deelnemers. Ze laten je zien hoe je problemen herkent en oplost en zelfs voorkomt.
- Harald van Breederode: Client Connectivity in een DataGuard omgeving
- Toon Koppelaars: Data integriteit: hoe het zou kunnen
- Rick van Ek: RMAN, meer dan alleen een backup/restore tool
- Leon Schipper: OAS en SOA Suite: werk voor de DBA’er?
- Peter van Capelle: OCFS2 en ASMLib
- Bernhard de Cock Buning: Inside Oracle Clusterware
- Jacco Landlust: Oracle Application Server; geen magie, maar gestructureerde analyse
- Marco Gralike: Effectief omgaan met Oracle XMLDB database architectuur
- Gerwin Hendriksen: Een nieuwe denkwijze op het gebied van Business Proces Performance
- Frits Hoogland: ASM
"Geen langdradige verhalen op een laag niveau, maar technisch hoogstaande
presentaties met vlammende demo’s, gebaseerd op de praktijkervaring van Oracle
Database Beheerders."
Schrijf je nu in voor dit symposium via de volgende link of kijk voor meer informatie: Oracle DBA Symposium
Donderdag 20 maart 2008: Kennissessie over bedrijfsregels
Mar 12th
Op donderdag 20 maart 2008 vindt er een kennissessie plaats die in het teken staat van bedrijfsregels. Gastspreker tijdens dit KC is Toon Koppelaars.
Toon Koppelaars maakt er geen geheim van dat hij een fervent aanhanger is van de dikke database, een database waarin naast de gegevens ook alle data-georienteerde bedrijfsregels worden geïmplementeerd. Vanuit die optiek heeft Toon Koppelaars het product Rulegen ontwikkeld om data-georrïenteerde bedrijfsregels op een gestructureerde manier op te slaan in de database.
Hotsos day Final day of the Symposium
Mar 7th
Cary mentioned at the start of his presentation "Measure Once, Cut
Twice" that he succeeded in one of the few goals for today: Getting up
in time.
HOTSOS 2K8 – What Does Inspire Us…?
Mar 7th
I can tell you about the next day. But I won’t. Most of it is (for people with the same interest) a known fact anyway. There was Tapio’s presentation, two of them actually, and if his method hasn’t been picked up yet, it is time to read some stuff about those Tapio’s indexes. If you’re not convinced then maybe you misted out on a review here. Stuff not only for Oracle people, but for everyone that has a serious interest in database performance; DB2, SQL Server alike – DBA, architect or developer. With presentations from Toon, Tapio or Gerwin, it proves it doesn’t really matter if it is Oracle or another database brand. Those theories and methods are applicable to a lot of architecture or database performance issues.
At least for Oracle, Hotsos is the current testing ground to find out if a new idea is inspiring or maybe needs some extra tweaking or is just flawed; although I wonder if a flawed theory will pass the current initial selection phase. Those enthusiasts that attend are a tough crowd that is not easily convinced or swept from their feet.
The Pro Active Database – Advanced Application Development with the Oracle Database
Mar 6th
One of the themes of the seminar I am presenting next Tuesday – during the Red Database Symposium in The Hague – will be ‘the pro active database’. Of course the database can just sit back and relax (and enjoy the flight), responding to queries and stored procedure calls. Passively processing all incoming requests. Ands for that, one of the other themes is: how to provide the optimal interface – or Service Layer or API – for clients, ranging from Java Web Applications, SOA components (BPEL, ESB), external HTTP clients as well as PL/SQL programs. I will discuss Views and Instead Of triggers, Collections, Table Functions and Cursor based APIs – as means for implementing such a service layer.
Pro active goes beyond this servile attitude.
Read the rest of this entry »
Oracle-L dinner at Texas Bar & Grill on March 3rd 2008
Mar 6th
Here are some photo’s of the Oracle-L dinner at the Texas Bar & Grill on Monday evening during Hotsos 2008.
Hotsos 2008, day 2
Mar 4th
Just a short impression of a few sessions today, and the day isn’t even over…
I’m really loving it being here and seeing all these people thinking and acting about Performance
Alex Gorbachev – Workload Management with Oracle RAC
This presentation contained a lot of demo’s on Alex’s MacBook, so he couldn’t do anything wrong with me because I love working on Mac’s too
.
It was a very well prepared presentation about load balancing etc. for Oracle RAC 10g and 11g with the options available in Oracle. I’m not too familiar with RAC and all the options but I got a good feel of the possibilities available within Oracle for failover/load balancing and some nice ideas to implement some extra features (If I wanted to). Like if a service fails over to your node you might want to have some non critical services running on that node switched to an other node or just stopped. Alex showed how to do this with a simple script he prepared. Ofcourse it just looks simple when you look at the end product. But it probably wasn’t that simple to come up with the idea and implement it.
I also liked that he was wearing the wooden shoes my colleague Marco had given him. Unfortunately my camera’s battery was dead. So I couldn’t get a picture of that. Due to some work related distraction in the morning I forgot to change it. Alex’s presentation took a bit longer then expected so I wasn’t able to get the battery changed before attending the next presentation.
Tanel’s second presentation was about Oracle Performance Trending and Charting Using Sesspack and Excel. This was a real exciting presentation and again with lot’s of demo’s. He has developed a nice tool that enables you to take snapshots of session statistics. So unlike perfstat which uses system statistics this tool Sesspack can give you insight about what’s going on for your session or sessions. It’s a work in progress and you need to install it into your database (it will create SAWR$ tables). So if you cannot install or are not allowed to do so you can probably get similar results with Snapper. But for analysing trends or getting information about all sessions originating from a certain machine you’d be better of with Sesspack.
It also can be a valuable tool for developers to quickly see what the effect is, of changes in their code, in the database. For performance troubleshooting or capacity planning it is a nice tool.
In combination with PerfSheet (also available from his website Now the direct link since it is uploaded
) it can be amazing. PerfSheet is a flexible tool in the form of an excel sheet that enables you to make graphs dynamically from any query you can run against a database. Once set up (with your new query) you can get a graph with one press on a button. If you have saved your graph settings then that graph is created automagically as well. And it stays fully flexible, just use the pivot-charting options available to change what you want to see and you will get your new graph.
Really cool! I can’t wait to start using it back home.
This presentation
Read the rest of this entry »



