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.
"

-http://officeport.com/edu/blooms.htm

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.

How does WebSphere7 Bind EJB 3.0 Beans to the JNDI Server? Local and Remote Interfaces for Lookup

So, how easy is it going to be to do a lookup from a JSF app to an EJB? I've got both a remote and a local interface in this EJB 3.0 stateless session bean. Here's the binding information provided by WebSphere. Hopefully, this will make it easy. The web module awaits!

[8/13/08 18:09:11:074 PDT] 00000065 CompositionUn A WSVR0192I: Stopping composition unit WebSphere:cuname=TestProject,cuedition=1.0 in BLA WebSphere:blaname=TestProject,blaedition=1.0.
[8/13/08 18:09:11:074 PDT] 00000065 ApplicationMg A WSVR0217I: Stopping application: TestProject
[8/13/08 18:09:11:254 PDT] 00000065 EJBContainerI I WSVR0041I: Stopping EJB jar: TestEJB.jar
[8/13/08 18:09:11:274 PDT] 00000065 EJBContainerI I WSVR0059I: EJB jar stopped: TestEJB.jar
[8/13/08 18:09:11:324 PDT] 00000065 ApplicationMg A WSVR0220I: Application stopped: TestProject
[8/13/08 18:09:12:786 PDT] 00000065 CompositionUn A WSVR0193I: Composition unit WebSphere:cuname=TestProject,cuedition=1.0 in BLA WebSphere:blaname=TestProject,blaedition=1.0 stopped.
[8/13/08 18:09:12:916 PDT] 00000065 CompositionUn A WSVR0190I: Starting composition unit WebSphere:cuname=TestProject,cuedition=1.0 in BLA WebSphere:blaname=TestProject,blaedition=1.0.
[8/13/08 18:09:13:037 PDT] 00000065 ApplicationMg A WSVR0200I: Starting application: TestProject
[8/13/08 18:09:13:037 PDT] 00000065 ApplicationMg A WSVR0204I: Application: TestProject Application build level: Unknown




[8/13/08 18:09:13:167 PDT] 00000065 EJBContainerI I WSVR0037I: Starting EJB jar: TestEJB.jar
[8/13/08 18:09:13:167 PDT] 00000065 EJBContainerI I CNTR0167I: The server is binding the StatefulTimerRemote interface of the StatefulTimer enterprise bean in the TestEJB.jar module of the TestProject application. The binding location is: ejb/TestProject/TestEJB.jar/StatefulTimer#com.mcnz.ejb.StatefulTimerRemote
[8/13/08 18:09:13:167 PDT] 00000065 EJBContainerI I CNTR0167I: The server is binding the StatefulTimerRemote interface of the StatefulTimer enterprise bean in the TestEJB.jar module of the TestProject application.

The binding location is: com.mcnz.ejb.StatefulTimerRemote


[8/13/08 18:09:13:177 PDT] 00000065 EJBContainerI I CNTR0167I: The server is binding the StatefulTimerLocal interface of the StatefulTimer enterprise bean in the TestEJB.jar module of the TestProject application.

The binding location is: ejblocal:TestProject/TestEJB.jar/StatefulTimer#com.mcnz.ejb.StatefulTimerLocal


[8/13/08 18:09:13:177 PDT] 00000065 EJBContainerI I CNTR0167I: The server is binding the StatefulTimerLocal interface of the StatefulTimer enterprise bean in the TestEJB.jar module of the TestProject application.

The binding location is: ejblocal:com.mcnz.ejb.StatefulTimerLocal



[8/13/08 18:09:13:197 PDT] 00000065 EJBContainerI I WSVR0057I: EJB jar started: TestEJB.jar





[8/13/08 18:09:13:227 PDT] 00000065 webapp I com.ibm.ws.webcontainer.webapp.WebGroupImpl WebGroup SRVE0169I: Loading Web Module: TestWeb.
[8/13/08 18:09:13:267 PDT] 00000065 SessionCore I SessionContextRegistry getSessionContext SESN0176I: Will create a new session context for application key default_host/TestWeb
[8/13/08 18:09:13:297 PDT] 00000065 webcontainer I com.ibm.ws.wswebcontainer.VirtualHost addWebApplication SRVE0250I: Web Module TestWeb has been bound to default_host[*:9081,*:80,*:9444,*:5063,*:5062,*:443].
[8/13/08 18:09:13:367 PDT] 00000065 ApplicationMg A WSVR0221I: Application started: TestProject
[8/13/08 18:09:13:367 PDT] 00000065 CompositionUn A WSVR0191I: Composition unit WebSphere:cuname=TestProject,cuedition=1.0 in BLA WebSphere:blaname=TestProject,blaedition=1.0 started.
[8/13/08 18:09:13:537 PDT] 00000065 FileRepositor A ADMR0009I: Document cells/T41Node01Cell/applications/TestProject.ear/deltas/TestProject/delta-1218676150483 is created.
[8/13/08 18:09:13:537 PDT] 00000065 FileRepositor A ADMR0010I: Document cells/T41Node01Cell/applications/TestProject.ear/deployments/TestProject/META-INF/ibm-application-runtime.props is modified.
[8/13/08 18:09:13:537 PDT] 00000065 FileRepositor A ADMR0010I: Document cells/T41Node01Cell/applications/TestProject.ear/deployments/TestProject/deployment.xml is modified.

Creating EJB 3.0 Entity Beans in IRAD 7.5 - The JPA Entity Wizard in Rational

Entity Beans with IRAD 7.5 - EJB 3.0 JPA Annotated Entities

Just something neat about an EJB project in WebSphere IBM Rational Application Developer 7.5. You'll notice there is no option to create an EJB 3.0 entity bean, only 1.x and 2.x entity beans.

Of course, you can certainly create entity beans, but they're not so much entity beans of old, but instead, JPA entity is the more appropriate terminology, and it's created through the JPA wizard for creating an entity.