Tuesday, September 16, 2008

Architecting the Solution

So, here's the deal. You're the architect, and you've been tasked with the job of coming up with a very simple Java application. It's a user management application, and it needs to be developed in a hurry. The requirements are pretty slim. All it really needs to do is provide the most simple of CRUD based operations, you know, Create, Retrieve, Update and Delete. That's the requirement. I know, the requirements are slim, but you've got to come up with something.

Well, actually, you don't have to come up with anything, because I've come up with something already. It's a sweet little Java based application that meets all of the requirements in the ugliest of manners. Here's the code. Feel free to code it and test it out yourself!

So, does the application provide for the basic functionality outlined in the requirements document? Well, there really wasn't much of a requirements document, but the application does provide a rudimentary CRUD based application, with a great emphasis on the the term 'rudimentary.'

Tuesday, September 9, 2008

How to pass SCBCD5, the Sun Certified Business Component Developer Exam

Just read this great post on JavaRanch by J. Aotearoa :

"I used the specifications as my primary source of information. I didn't use MK's notes as they're basically the various specifications repeated verbatim.

The only book I used, which I'd definitely recommend, was Pro EJB 3. The author was one of the people involved in writing the JPA spec so you know you're getting the right perspective.

As for how I structured my work; I read the specifications cover to cover, making notes on each of the exam objectives as I went. As with all specifications the language can be quite repetitive so having condensed notes on the pertinent points can reduce the volume significantly.

A lot of the concepts can also be represented in tabular form so I created a few quick reference tables for things like transactional semantics, exception handling, EntityManager types and operations etc.

I used Glassfish to run any code I wrote for the purposes of testing concepts I wasn't 100% sure on - it's the reference implementation so why make your like complicated using JBoss or some other app server.

I also did as many practice question as I could get my hands on, including Sun's 2 practice exams and EnthuWare's EJB plus V5. I can't stress enough the value of doing practice questions. Not only does it get you in the habit of thinking like an examiner but it also reminds you to READ THE QUESTION! (Not that I noticed any so called trick questions in the real thing).

I was getting 90% plus on the Sun's practice exams, slightly less on the EnthuWare ones which are definitely harder than the real thing. I also spent a lot of time reviewing the answers to any practice exams, i.e. making sure I not only understood why the correct answer was correct, but also why all the other answers were wrong.

I hope this helps - good luck to you all."

Thanks Jonathan. That's some great info!

Tuesday, August 26, 2008

SCBCD 5.0 Section One Exam Objectives Sun Certified Business Component Developer Exam EJB 3.0

EJB 3.0 Overview

· Identify the uses, benefits, and characteristics of Enterprise JavaBeans technology, for version 3.0 of the EJB specification.

· Identify the APIs that all EJB 3.0 containers must make available to developers.

· Identify correct and incorrect statements or examples about EJB programming restrictions.

· Match the seven EJB roles with the corresponding description of the role's responsibilities.

· Describe the packaging and deployment requirements for enterprise beans.

· Describe the purposes and uses of annotations and deployment descriptors, including how the two mechanisms interact, how overriding is handled, and how these mechanisms function at the class, method, and field levels.

The first set of objectives for the SCBCD exam are mostly marketing hype.

As with any vendor certification, the company wants the people it certifies to not only be competent with the technology, but they want their certified professionals to be able to promote the product on which they are certified to others. It's not good enough to simply know how to program an EJB to be a SCBCD, but Sun also wants you to be able to sit in front of an architecture review board, or participate in a design meeting, and be able to prognosticate on why life will be so much easier if EJB 3.0 components were used.

Saturday, August 23, 2008

Bloom's Taxonomy of Learning

I used to do seminars on learning how to learn, and Bloom's taxonomy of learning was a part of it. I think it's a great goal, or scale to use, when writing computer books. When I'm done a Java or JEE or Sun Certification book, I like to think I've hit upon the various levels in the hierarchy as much as possible. taking people from the lower level, to the higher levels.

In 1956, Benjamin Bloom headed a group of educational psychologists who developed a classification of levels of intellectual behavior important in learning. Bloom found that over 95 % of the test questions students encounter require them to think only at the lowest possible level...the recall of information.

Bloom identified six levels within the cognitive domain, from the simple recall or recognition of facts, as the lowest level, through increasingly more complex and abstract mental levels, to the highest order which is classified as evaluation. Verb examples that represent intellectual activity on each level are listed here.

  1. Knowledge: arrange, define, duplicate, label, list, memorize, name, order, recognize, relate, recall, repeat, reproduce state.
  2. Comprehension: classify, describe, discuss, explain, express, identify, indicate, locate, recognize, report, restate, review, select, translate,
  3. Application: apply, choose, demonstrate, dramatize, employ, illustrate, interpret, operate, practice, schedule, sketch, solve, use, write.
  4. Analysis: analyze, appraise, calculate, categorize, compare, contrast, criticize, differentiate, discriminate, distinguish, examine, experiment, question, test.
  5. Synthesis: arrange, assemble, collect, compose, construct, create, design, develop, formulate, manage, organize, plan, prepare, propose, set up, write.
  6. Evaluation: appraise, argue, assess, attach, choose compare, defend estimate, judge, predict, rate, core, select, support, value, evaluate.


Monday, August 18, 2008

com.ibm.wsspi.amm.exception.NoSuchClassException: unable to locate class in module

[8/18/08 15:44:16:748 PDT] 00000000 wtp E org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EJBJarFileImpl processAnnotations Annotations scanning of EJB JAR [ MayhemEJB.jar ] completed with errors.
[8/18/08 15:44:16:748 PDT] 00000000 wtp E org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EJBJarFileImpl processAnnotations Annotations error:
com.ibm.wsspi.amm.exception.NoSuchClassException: unable to locate class com.mcnz.ejb.StatelessTimerLocal in module MayhemWeb.war
at com.ibm.ws.amm.scan.util.info.impl.DelayedClassInfo.getClassInfo(DelayedClassInfo.java:247)
at com.ibm.ws.amm.scan.util.info.impl.DelayedClassInfo.getDeclaredMethods(DelayedClassInfo.java:113)

Dang, I keep seeing this error. Somehow, my design time classpath isn't recognized by the runtime. That sucks. So, I included the EJB project in the classpath, and I thought the classloader loaded from both EJB and web modules, so I'm a little annoyed. Do I have to create an EJB client jar and put it in the root of the EAR. I saw some funny business with the EJB client
jar with IRAD 7.5 Beta, so I'd prefer not to. Oh well. We gotta get this running on WebSphere 7!

However now that I'm looking at it, I didn't go to the Web Libraries module dependency tab and click my EJB module. Maybe that's what I need to do. I had done it in the J2EE Modules tab though....Heh...J2EE...Shouldn't it be JEE?

Installing WebSphere 7 on Vista - IRAD 7.5

So, I had my buddy install the IBM Rational Application Developer 7.5 on Vista. I'd already installed IRAD 7.5 on my Windows XP laptop, and I've been having fun with it. My buddy has the curse of a laptop with Vista on it, but I figured what the heck, let's give it an install.

Well, we chose the basic options, and the WebSphere 7 test environment. The install seemed to go smoothly for the first three quarters of the progress bar, but then it just totally hung. It looked like it was the WebSphere 7 installation part that was barking up, as all the little console messages seemed to indicate that the IRAD libraries got installed ok.

Certainly, Vista is not a supported operating system for WebSphere 7, as it is a desktop operating system, not a server system. And of course, we must stress Beta. And I don't blame IBM, I blame Microsoft. But still, it's a drag. While WebSphere deserves a server operating system, there's lots of places that will want a local sandbox environment that has a familiar OS desktop operating system, and since Microsoft doesn't sell computers with XP any more, that's going to put alot of desktop users at a disadvantage. Of course, I guess the problem could just be solved if we all just did .NET development, and threw the whole Java/WebSphere/JEE development framework away. I'm sure M$ would just love that.

Wednesday, August 13, 2008

IRAD 7.5 Annotations View - IBM WebSphere7 Rational Applicaion Developer Java Perspective Tool

I just noticed a new View in Rational Application Developer 7.5 beta - it's the Annotations View. It appears that it provides data entry fields for all of the various attributes that can be set for a given annotation.

Annotations are new with Java 5. This is the first time I've seen this tab. I wonder if this is a standard tab with Eclipse, or a tab only provided with Rational Software Development Platform tooling.