Tuesday, December 31, 2002

I just had a great vacation. I was in a ski lodge in Colorado (Powderhorn). I learned how to snow board (sort of).



The first day of vacation, me and the kids went sledding. This is quite a treat if you come from Tucson AZ like we do.




The first day of sledding, we hit a tree. Ouch. Actually the sled spun around, and I hit the tree breaking the kids fall on my rib cage.




The second day of sledding. I decided to sit this day out (mostly). I spent my time carrying my daughter's sled up the hill for her.
Then giving her a starter push. Then running down the hill. Repeat.




My oldest son is big enough to carry his own, and my youngest son is not old enough to sled.




I did go down the hill once more. Some kids setup a jump. My goal was to avoid the jump at all cost.
My glasses fogged up (zero visibility) and my sled ended up going backwards most of the way down the hill.
Needless to say.... I did not avoid the jump. I caught big air, and landed on my rump (really hard).




I wish I had video tapes of the two sledding accidents. They must have been funny to watch.




A few days later, I took snow boarding lessons. I fell on the same injured rump many times.
It was fun and I stuck with it longer than I wanted to stick with it. I used the reasoning that I paid for snow
boarding lessons and I am going to use them no matter what.




Adam Carr and Missy Carr (my sister) went with us. Our kids took skiiing lessons together. They did really well.
Adam is a software security guru at HP. Adam was amazed at how well the kids did after two days of skiing lessons.




I spent a good portion of my time playing cards, drinking hot choclate, and generally having a good time.
I am healing, and I am ready for a new year of Java development. Rested and ready to go... just a little sore.




Friday, December 06, 2002

I've got this strange email message from Rational..... Here it is for your enjoyment....

A Tour Through the RUP Plug-In for XP Webinar- Register now!
************************************************************************
FREE WEBINAR: RUP and XP: A Tour Through the RUP Plug-In for XP

Date: December 11, 2002 and February 19, 2003
Time: 4 PM - 5 PM ET

**GUEST SPEAKER: Robert Martin of Object Mentor

Register at:
http://www.rational.com/events/webinars/details.jsp?EVENTID=2087
eXtreme Programming (XP) is a software development method that allows
small to medium teams, in the right circumstances, to work effectively
with low ceremony, producing high-quality software. This Webinar,
developed and presented by Rational and Object Mentor, a leading XP
consulting company, explores the new RUP Plug-In for XP. We look at the
features of the Plug-In, the benefits it delivers for teams wishing to
employ XP, and how it fits in within the complete RUP platform.

This Webinar will help you to:
* identify the key principles and benefits of XP,
* determine if XP is appropriate for your project(s),
* and understand how the RUP Plug-In architecture allows you to
configure your process for your project.

Yada yada yada
...

We look forward to having you join us.
The Rational Team

I think this is a strong testament to the popularity of XP. In the post boom era, the focus will be more on RESULTS than on "ceremony" for the sake of "ceremony". Is this amazing? I find it so. Maybe this will once and for all end the XP vs. RUP/UP debate. I doubt it. My opinion has always been that your team should study several methodologies and then adopt the one that best fits the organization and corporate culture (not to mention the application and customers). My feelling is that even if you adopt UP, you should adopt some of the XP practices and principles.

(If you want to learn more about this topic, I suggest Scott Amber's book Agile Modeling.)

The biggest problem I see is the dogmatic attitude of many XP and RUP practitioners. Hopefully this seminar will meet somewhere in the middle.


I've got this strange email message from Rational..... Here it is for your enjoyment....

A Tour Through the RUP Plug-In for XP Webinar- Register now!
************************************************************************
FREE WEBINAR: RUP and XP: A Tour Through the RUP Plug-In for XP

Date: December 11, 2002 and February 19, 2003
Time: 4 PM - 5 PM ET

**GUEST SPEAKER: Robert Martin of Object Mentor

Register at:
http://www.rational.com/events/webinars/details.jsp?EVENTID=2087
eXtreme Programming (XP) is a software development method that allows
small to medium teams, in the right circumstances, to work effectively
with low ceremony, producing high-quality software. This Webinar,
developed and presented by Rational and Object Mentor, a leading XP
consulting company, explores the new RUP Plug-In for XP. We look at the
features of the Plug-In, the benefits it delivers for teams wishing to
employ XP, and how it fits in within the complete RUP platform.

This Webinar will help you to:
* identify the key principles and benefits of XP,
* determine if XP is appropriate for your project(s),
* and understand how the RUP Plug-In architecture allows you to
configure your process for your project.

Yada yada yada
...

We look forward to having you join us.
The Rational Team

I think this is a strong testament to the popularity of XP. In the post boom era, the focus will be more on RESULTS than on "ceremony" for the sake of "ceremony". Is this amazing? I find it so. Maybe this will once and for all end the XP vs. RUP/UP debate. I doubt it. My opinion has always been that your team should study several methodologies and then adopt the one that best fits the organization and corporate culture (not to mention the application and customers). My feelling is that even if you adopt UP, you should adopt some of the XP practices and principles.

(If you want to learn more about this topic, I suggest Scott Amber's book Agile Modeling.)

The biggest problem I see is the dogmatic attitude of many XP and RUP practitioners. Hopefully this seminar will meet somewhere in the middle.


Monday, November 25, 2002

I've worked with a few frameworks for doing web services. I really, really like Apache Axis.
I've worked with a few frameworks for doing web services. I really, really like Apache Axis.

Friday, November 22, 2002

> A good review of an interesting book:
> http://slashdot.org/article.pl?sid=02/11/13/1550230


I was reading through some of the slashdot posts. The part I find funny about the whole XP debate is that is often not the case of RUP vs. XP. More likely (in my travels anyway)... it is XP vs. nothing.... Or XP vs. Anarchy. In this case, XP always wins. A bar glass could win against complete anarchy.

I enjoy teamwork. I enjoy bouncing ideas off of colleagues. I enjoy learning from them as well as sharing new ways of thinking with them. I enjoy working a full day programming instead of contemplating navel lint in a big muckyedy muck meetings. Most of all, I enjoy writing high quality code!

XP is not for everyone. It is not for every organization. But it is the way I prefer to work. Given the choice, I rather have RUP than Anarchy. RUP/UP is good. XP requires a real good team so by default it has a lot of success.

XP does not mean there will be no design. XP does not mean there will be no planning. In fact, XP (done right) is very structured and focused.

I was thinking the other day.... I don't like .Net, but I really like C#. Has anyone ported C# to the Java Virtual Machine? I think I would use it. (at least try it)
I pulled an allnighter last night. I was making good progress on this project, and I did not want to stop. I am too old for this. Actually, it was not going to be an allnighter until I ran into some things that did not work the way we planned. It seemed better to make the delivery date than to sleep. Plus, this has been one of those projects where nothing works like it should. I took a good chunk of yesterday just researching the technology and architecture.... you know regrouping... licking my wounds. This gave me the raw data to figure out problems that use to stump me. Now I laugh at those problems.... HAH!

Thursday, November 21, 2002

Hey I got this email note from BrainBench about my XML test score.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Great Test Score!

Hi Richard,

Congrats on the nice score you got on our XML beta test. Actually, it's a great score considering there have been a lot of attempts so far and you scored in the top 10!

We need to incorporate feedback from this beta test into the test. I thought I'd inquire with you to see if you might be interested. I know you've got the knowledge, the question is....do you have the interest?

Based on your knowledge, feedback from the test and the item results from the beta test, you will recommend changes in the questions, the choices and difficulty level changes. For reviewing and incorporating the feedback, the pay is $400! Based on your work and how quickly this is done, there is a possible bonus also.

Our requirements of you are that you have experience in the field, have access to MS Access (version 7.0 or higher) and could turn the test around in a week.

Please let me know if you are interested. If so, please provide me with a convenient time/number to reach you, so that I can go over the task in greater detail.

Please do try to get back to me as soon as you can, however, as I am extending the same offer to others with scores of a similar rating who excelled on the test.

Again, great score!

Randy Kraemer
Test Development Manager
Brainbench, Inc.

We measure the skills that drive your success.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Monday, November 18, 2002

Things are going well. No one answered my posts on the WSDK forum. Kyle Gabhart helpled me figure out how to deploy my web service on the WSDK. It is now deployed. Yeah. Kyle is my hero.

Wednesday, November 13, 2002

I just took three XML tests on BrainBench(BB): XML Concepts, XML Module and XML. It has been a while since I took the test, and my knowledge of the subject has been expanded. I missed master level on XML, but got it on the XML Concepts, and XML module test. The XML module is the replacement for XML, but it is still in beta.

The funny thing is that I got in the 98 percentile on the XML test, but did not get master level. This means that less than 2% of the people taking the test get master level scores. I missed master level by 0.07.

The tests seem to be too focused on XSL, and they hardley cover DTD, entity declarations, mixing DTD with namespaces, etc. I did really well on the XSL part. Where I messed up is on the industry jargon.

The XML Module, which is in beta, does not show up on my BB transcripts. But here are my results that BB emailed me. I did much better on the beta than the real test.
The beta test allows you to add comments for improvements. I added a lot of comments (this increased my average response time to 90 seconds). Warning:Don't take the test unless you really get XSL.

Dear Richard Hightower,

Thank you for taking a Beta Test!

We appreciate your time. Although you will not receive a certificate
since the test
is still under construction, you have played an integral
part of the test development process.
Our assessments are delivered to companies worldwide to
improve selection, development, and skills tracking processes.
If you were a corporate customer, this is the output you
would receive after an employee or a potential employee took
an assessment for your company. You could also view this
information via the web immediately upon its completion.

----------------------------------------------------------------------

Date: 2002-11-13 18:40:42(US EST)
Client: Brainbench, Inc.
Profile Name: Beta XML Module (BETA XMLMOD)
Test taker: Richard Hightower
Pin: PRRS222BRPASGRY
----------------------------------------------------------------------
Module 1: XML Module
Score: 4.13 (Scale of 1 - 5 where 5.0 = Best)
Higher than 96% of all previous test takers.

Demonstrates a clear understanding of many advanced concepts
within this topic. Appears capable of mentoring others on most
projects in this area.

----------------------------------------------------------------------
Module 2: XML Module
Score: 4.61 (Scale of 1 - 5 where 5.0 = Best)
Higher than 99% of all previous test takers.

Demonstrates understanding of most advanced concepts within the
subject area. Appears capable of mentoring others on the most
complex projects.

----------------------------------------------------------------------
Weighted Average Score: 4.37
Total Test Time: 64 minutes, 24 seconds
Avg. time per question: 96 seconds
----------------------------------------------------------------------

On a lighter note I saw the movie ISpy last night. This is the best Eddie Murphy in the last five years. ISpy was really good.

I met with Erik Hatcher at the Lone Star Software Symposium. We talked about what it would take to make a standard mappings for CMR (EJB CMR) with XDoclet. He has done a lot of work with the XDoclet Struts templates, and had some great ideas and insight on how to proceed.

I am teaching a XML, XML and Java (JAXP, DOM, SAX, JDOM and JAXB), and XSL course this week, and my attention is really focused on this course. Every night I am reading the course material for the next day. I am familiar with the topics already, and have used them in the real world. The trick is getting familiar with the slides, and material.

Thursday, November 07, 2002

I just bought the IBM WebSphere Bible. I stayed up last night reading it. I stopped reading when my eyes started to bleed. I did not see the solution to the exact problem I was having, but the book gave me plenty of ideas where to look. This book (so far) seems to be a really excellent resource for IBM WebSphere. My only complaint is that I did not buy this sooner.

I kept waking up in the middle of the night. I had some weird dreams about WebSphere. I don't remember any of them..... I only remember that I kept waking up and I was dreaming about work. I had no problems sleeping this AM. I got up at the crack of 9:30 AM.

Wednesday, November 06, 2002

Fun with XDoclet.
I tried to get a simple CMP bean to work with the new XDoclet
features. I used the new @ejb.persistence. I did not get any error messages, but
the CMP field mapings did not get generated in the resin.ejb file.

Then Ara of XDoclet fame told me: "That's because the resin module doesn't support ejb.persistence tags
yet."

So I set out to learn a few things about XDoclet with some help from Erik Hatcher...
I modified the resin CMP mapping template. It was really easy to change.
I had to modify the file resin_ejb.xdt file. I tested it and it works for simple CMPs.

Then Erik told me to make it backwards compatible with the old way, and I did.
Then I started to wonder about relationship mappings.....

I checked and I could not find any standard xdoclet cmr mappings either
documented or in the examples that ship with XDoclet.

This seems a little harder than just changing the template like Resin CMP
support. Any direction on how to attack this would be great! I am going to
pick Erik's brain this weekend, and read the XDoclet chapters in his Ant
book for prep.

My idea on how to manifest cmr support in the tags.....

Add an extra parameter to @ejb.relation called relation-column-name and target-relation-column-name (for unidirectional support).

This idea got shot down by Aslak Hellesøy [aslak.hellesoy@netcom.no]. He stated the following:

"""
I would study the existing proprietary @tags and try to come up with a
common denominator. Don't forget that a foreign key is _not_ the same as a
foreign key _column_. Some foreign keys consist of multiple foreign key
columns, and the tags would have to account for that. This means that it's
*no* good to add key/foreign key attributes to the @ejb.relation tag (which
might seem intuitive at first). We need a separate tag for foreign keys, so
that it can be repeated once for each foreign key column in the foreign key
that corresponds to the relation. Picture:

+---+ +---+
| X | | Y |
+---+ +---+
|*a |\__/| m |
|*b |/ \| n |
+---+ +---+

This is one relation between table/EJB X and Y. It has one foreign key that
consists of 2 foreign key columns. -So we need 2 tags to describe the
relation.

Have a look at
http://boss.bekk.no/boss/middlegen/samples/airline/ejb/ReservationBean.java.
html, more specifically the getPerson() method to see an example. You'll see
single-column foreign keys (which is the most common scenario). -But we
should support the less common scenario as described above.

Also look at a "picture" of the database:
http://boss.bekk.no/boss/middlegen/ (click the screenshot).

As you see, both JBoss and WebLogic identify the foreign key columns by
declaring the column name. -But! JBoss uses the java bean property - in this
case "flightId" which corresponds to the getFlightId() method - to identify
the primary key column. A primary key column will _always_ have a
corresponding getter/java property in an EJB, so this is a safe assumption.
However, you might have a foreign key column for which there is no
corresponding getter/java property, so in order to identify the foreign key
column, you have to declare the database column name. WebLogic uses a
different approach, which is also safe: Use the rdbms column name for both
pk and fk.

Going for the JBoss "way", using java for pk columns and sql for fk columns
is the way to go IMO. It's possible to deduce the corresponding rdbms pk
column for an EJB pk field by looking at the @ejb.persistence tag, so the
WebLogic descriptors can still be generated correctly. Therefore my approach
is:

@rdbms.relation
foreign-key-column="some_database_column"

primary-key-field="someJavaPropertyWhoseMethodHasAnEjbPersistenceTagThatMaps
ToTheRdbmsColumn"

Now a little challenge: How would you represent the non-common info? JBoss
has a fk-constraint="true|false" proprietary attribute on the current
@jboss.relation tag. Where do you specify that now? It would be best to
specify it on the same @rdbms.relation tag. It bloats the tag a little bit
with "proprietaryness" but it's better than adding a third tag. -And in the
case where you have a foreign key that consists of 2+ columns you'd have to
invent an additional name attribute so you could link the jboss info to the
correct @rdbms.relation tag. Therefore:

@rdbms.relation
foreign-key-column="some_database_column"

primary-key-field="someJavaPropertyWhoseMethodHasAnEjbPersistenceTagThatMaps
ToTheRdbmsColumn"
jboss-fk-konstraint="true"

I.e. any non standard attributes are still on the same tag, but with a
prefix indicating that it's not standard. (By the way this is the same
approach we're probably going to use for proprietary EJB-QL extensions on
the @ejb.finder tag. There will be weblogic-ql and jboss-ql attributes.)

I also suggest you read my "Synergy" post on my (old) blog (in case you
aren't confused enough by now ;-)
http://www.freeroller.net/page/rinkrank
"""

Then I asked....
> Is anyone working on this? I think this should be added to this release in
> beta.
>

and he replied:
"""
Nobody is working on this, and it would be great if you wanted to look at
it. It shouldn't be any more comlicated than what you already did for
@ejb.relation in Resin. -The hard part is coming up with the "right" tags,
and I have a good tummy-feeling that my proposal a few lines up is the way
to go.

"""


BTW I just got permission to include the XDoclet stuff I wrote
for Mastering

Tomcat for the Xdoclet documentation. This is a tutorial on XDoclet mainly
geared toward Servlets, Custom Tags and Struts. Ara A. said he was
interested in including this as part of the docs. or at least link to it
from the docs. I need to change the examples to use dots instead of colons
and test it with the version of Xdoclet in beta, other than that....

I've been digging into IBM WSDK. It is fun stuff. I am wondering what the default user name and password is for the version of WebSphere that ships with the WSDK is.... I just bought the IBM WebSphere Bible. I'll let you know what I think of it.

I recently updated the Resin templates for XDoclet to work with the new @ejb.persistence tag for EJB CMP mappings to RDBMS. I submitted the change to the XDoclet list. Erik Hatcher walked me through how to make the changes. It was quite simple. I made the template backwards compatible to the older style of Resin CMP mapping to ease the migration. I have not had time to update the XDoclet EJB tutorial that I wrote to reflect the new sytle. Too little time in the day....

I am reading three new Struts books. Struts has been evolving quite a bit. I am really interested in learning about the Struts Validator. (Send me a good link if you have one...)

Wednesday, October 30, 2002

Thanks Rikard Oberg for setting the world straight on the nasty benchmark at the TheServerSide.com.

Review of "The Petstore Revisited: J2EE vs .NET Application Server Performance Benchmark"

Who in there right mind would use BMP? This benchmark is nuts. Wow! I can't believe this. Ouch.

Having actually developed and deployed high performance J2EE applications to production, I am glad Rikard spent the time poking holes in this benchmark. I hate to see J2EE get a black eye when it makes no sense.

Real comparison





Tuesday, October 29, 2002

Somebody asked me some questions about EJB, stubs, skeletons and their relationship to EJBHome and EJBObject

My answers are marked with **

Question:
Is it correct to say:
"The instance of the EJBHome object on the client side is created by the
EJB tool and is the stub.

Answer
** It would be more correct to say that the client talks to the EJBHome object through the stub generated by RMIC (or vendor equiv). The stub is an artifact of RMI not EJB per se. The EJBHome object is created by the vendor with EJBC (or vendor equiv).

Question:
Is it correct to say:
"The instance of the EJBObject on the server side is created by the EJB
tool (AppServer/Containter) and is the skeleton."

My Answer
** The EJBObject is accessed through the skeleton. It is not the skeleton.
The EJBObject is generated by the vendor to include support for persistence (CMP only), security and transaction support. It is a proxy object as is the stub (the stub is a proxy too). The stub is a proxy to provide remoteness. The EJBObject is a proxy to provide transaction, security, etc. support. The stub is the pitcher and the skeleton is the reciever. Together the stub and skeletong marshal requests from the client to server; this includes serializing parameters to the server object and responses to the client.

Random thoughts on Agile and Unified Process (over design)


Random thoughts on Agile and Unified Process

:

One of the issues with software methodologies and processes are that they tend to be extremely heavy weight or “non existent”. Many organizations have a documented process and methodology that no one follows due to the heavy burden of the mandated process. Most organizations seem to follow two extremes: ad hoc process, or heavy weight process. Ad hoc process is sometimes referred to as “no process”. I don't believe any organization can truly have no process.

The issues of having a heavy weight process seems to multiply as many popular processes combined to make the unified process. By combining the thoughts and ideas of many groups and schools of thought, the Unified Process (UP) if followed in detail has in essence created a process that is too heavy weight for most organizations. Most advocates of the Unified Process, advocate a scaled down version of UP. I am not against UP. In fact, I believe there are many projects and corporated cultures that demmand something like UP.

There is value in having a process. There is also harm in adopting a process that has too much baggage. The primary focus should be on providing customer value and not generating artifacts. Some organizations get so bogged down in generating artifacts that they forget the emphasis should be on providing business value through software, i.e., the working code is the most important artifact.

A backlash against process and methodology seems to produce a bumper crop of interest in alternative methodologies and processes as follows: Featured Driven Design (Coad, abbreviation FDD), Extreme Programming (Beck, abbreviation XP), and SCRUM among many others. These methodologies and processes claim to be either light -
weight alternative methodologies or anti processes and anti methodologies.

For example, XP believes that the focus of all organizations should be on providing business value, and that the main artifacts in the process should be working code. XP does not like to use words like process and methodology yet XP is a process that is focused on quality code that provides customer value.

These groups of alternative methodologies organized into a group called the Agile Alliance. Agile projects tend to be very successful for dynamic teams. This is not to say the Unified Process does not work for some organizations. In fact, there is benefit in adopting a process and following it, and UP can be scaled back to fit an organizations culture. Many corporate cultures would be better served by a lighter weight agile methodology.

Often code that does not have a design is criticized heavily, as it should be. But another problem occurs, a less published and cited problem, the over design of code. Code should be as simple as needed to fulfill the customer’s requirements. Complicated designs can lead to as much damage if not more as having no process and poor designs. Many organizations spend too much attention on the newest technologies and applying the latest design patterns. Over design is endemic of a heavy weight process like missapplied UP.

This is not to say that design and design patterns are not useful. On the contrary, all processes mentioned both agile and unified focus on applying design effectively amongst other practices.
It has been a long week.

My week went something like this:

On Monday, I spoke to an IT organization in Manhattan on Web Services. We covered an overview of SOAP, UDDI, WSDL, ebXML and more.

Tuesday through Friday, I taught an Advanced EJB 2.0 course. The course covered EJB CMP, CMR, EJB QL, Session Beans, Entity Beans, Message Driven Beans (MDB), and more. We deployed examples on both IBM WebSphere and BEA WebLogic. This course was the high light of my week. Three students in the course, independently, told me that this was the best technical course that they have ever taken. Everything went very smooth.

While I was in New York, I went with a friend to see a tribute to a composer (his name escapes me). The show was wonderful and I had a really good time. I am not a big fan of musicals and dancing. I much prefer dramas to musicals, but I think my tastes are changing, as I get older. I really enjoyed myself. This is the second musical I have seen in a row that I have enjoyed.

Then on Saturday morning I took a 4AM flight from New York to Chicago to attend the Great Lakes Software Summit. I was a speaker at the Summit. I did a three-hour tutorial on Java Tools for Extreme Programming (XDoclet, Ant, JUnit, JUnitPerf, JMeter, Cactus, HttpUnit, etc.). I also did a three-hour tutorial on EJB 2.0 CMP (CMP, CMR, EJB QL) and XDoclet. I love XDoclet.

This is the second event in the Software Summit from the Complete Programmer Net that I have participated in. It amazes how well groomed and technical the speakers are at this seminar series. The level of technical content, real world experience, and good speakers are top notch. If you are doing enterprise development, and you can attend one conference this year, I highly recommend the Complete Programmers Net Software Summit series. Attendees come up to me at the breaks and say the same thing that I am saying. This seminars are top notch source for new information.

Saturday night at the conference was a lot of fun. Jason Hunter organized a war party of speakers to hit the town in Chicago. Actually, “organized” might be too strong of a word. Hmmm… Jason incited a mass of speakers to go from the Hotel to venture out in the great unknown of downtown Chicago…. unknown to me at least.

Although, I have been to Chicago, I never stray far from my hotel. I am glad he incited such adventureness. We all had a blast. We went to the Navy Pier. The war party of speakers included Bruce Tate (Bitter Java), Sue Speilman (the Struts book author), James Duncan Davidson (the original developer of Ant), Jason Hunter, John Carnell, Maciej Zadwadski (the developer of Ant Hill), Kyle Gabhart (the Java Pro) and many more. More on this later if you are interested.

I attended Sue Spielman’s presentation on Struts 1.1 features. It looks like I have some catching up to do. Struts is really growing and maturing. We started using Struts at eBlox in the early beta days. We were desperate for a good MVC architecture, and Struts fit the bill. It is exciting to see all of the new 1.1 features. I look forward to reading her new book.

I got to spend some quality time with Erik Hatcher the author of Java Development with Ant, one of the best written technical books that I have ever seen. We rode to the airport together. Erik Hatcher and I use to be coworkers at eBlox. In fact, Erik was a key reason we were so successful in using Struts and Ant at eBlox. Erik is awesome.

About the speaker war party descending on Chicago Navy Pier, it is like this. We left a little late. It became the expected case of this… “Where is so and so….” “Well so and so went up to their room to get such and such…” “Hey that sounds like a great idea, I’ll run up to my room and call somebody and this and that really quick” Add a few iterations of this….. (I am guilty of doing this myself.). Then Jason Hunter, our fearless leader, had a great idea to get us out of the door quickly. He came up with a list of car groups, and he went about breaking up the speakers into several car groups. Then somebody somehow picked the destination…. Downtown Chicago. Hey…. It is my kind of town.

Sue, Maciej, John and I were in one car group. And the journey began. I drove and Sue took the helm as the official navigator. Map in hand, she navigated across the 50 mile terrain to Chicago downtown Nava Pier. Sue did a great job of navigation.

At one point however we were at a crossroad. As we approached the oncoming fork, we had to make a last second decision. Veer left and or veer right, the car group was equally divided on which way to go as we cruised 50 miles per hour heading straight for the cement divide. A semi tractor trailer coming up on my left cruising at 70 miles an hour tipped the scale in the favor of heading right. We missed the center divide and we were on our way to Chicago. As it turns out the tractor trailer was right about us going right.

Once we got to Chicago proper, Sue navigated us to the Navy Pier with few detours. It seems the map we were using was a little dated, and streets that once went through now led to a dead end. Cruising through congested traffic use to be such an issue for me, but after going to New York and Boston a few times, I can cruise through traffic with ease.

We ate at a Sushi bar, I had a Steak (beef it is what’s for dinner). This happened to be the best steak that I have ever eaten. It was wonderful. The name of the restaurant was Sushi Yukuu, and it was their grand opening week. If you are ever in Chicago, I highly recommend eating at this restaurant it is fabulous and not too pricey. It is near the Navy pier.

This week I am working on proposals, outlines, and Web Services material. Hopefully, if this next contract comes through I will get a chance to do some mentoring. I really enjoy training, but I am ready to do some mentoring and consulting again.

Wednesday, October 23, 2002

I also spoke with Andrew Barton, the co founder of eBlox, last week. I want us (him and I) to co author a white paper on building an Extreme Programming team. We had a lot of success with XP, and I want to tell the world about it.

Also, it seems Andy has created a XP bidding process. He says the new bidding/planning process really helps ensure that they do not take on "loser projects". I am encouraging him to write a white paper about this.
It is a real shame. I have not blogged in a few weeks. It is amazing how fast time goes by. I am in NY now (I live in Tucson AZ). I spoke to a group of IT professionals on Monday about Web Services. Kyle Gabhart and I (mostly Kyle) created a presentation on Web Services Survival Guide.

Three things I hear a lot in NY:
1) outsourcing to India
2) IBM WebSphere
3) dot Net

It seems if you are doing J2EE on Wall Street than you are using IBM Wepshere, which make sense given they already have a lot of the IBM big iron.

I am teaching a course this week (Tuesday through Friday) on Advanced EJB with BEA WebLogic. The course is vendor neutral except for the exercises that are WebLogic centric (at least the build scripts are). This is the third time that I have taught this course this year.

Saturday AM, I fly out ot Chicago to speak at the Great Lakes Software Symposium on Java Tools for Extreme Programming and EJB 2.0 CMP/CMR/EJB QL with XDoclet.

I took some more BrainBench tests last week. I got the highest EJB 2.0 score in the United States (3000+ people took the test in the United States). I got the highest J2EE score in the world (700+ people took the test worldwide). They have a slew of new tests for Web Services that I am considering taking.

Tuesday, October 08, 2002

Brain Wilson had a question on how to configure remote clients to talk to EJB beans in Resin.

You sent me some offline email as well with this questions and others.

I'll try to answer all the questions in this forum so they will be available
for others who search the mailing list.

1) First I would not hardcode the JNDI properties in your source code.
Instead put them in a JNDI properties file called jndi.properties. As long
as this file is on you classpath the JNDI system will find jndi.properties
as a class resource and use it as the default properties for the initial
context and provider URL. Then all you need to do is create an
InitialContext with no arguments. This is the more portable J2EE way to get
your initial context.

Here is an example properties file for accessing weblogic (resin example
will follow)
Sample Listing....

java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://localhost:7001

2) Now the question becomes how do you configure the above for Resin. I think
the answer is here
http://www.caucho.com/resin-ee/ejb-ref/ejb-jndi.xtp. Although the link does
not specify client access per se or the jndi.properties file.

Try changing the JNDI properties file as follows for hessian...

java.naming.factory.initial=com.caucho.hessian.HessianContextFactory
java.naming.provider.url=http:///hessian

Try changing the JNDI properties file as follows for burlap...

java.naming.factory.initial=com.caucho.burlap.BurlapContextFactory
java.naming.provider.url=http:///burlap

I have not tried this with Resin, but I have done similar things when
working with WebLogic and Sun's RI. I've only done local beans for web apps
with Resin EE in production.

3) You are not done yet. You also have to expose hessian protocol from your
web application that houses your enterprise beans. I found information how
to do this here...
http://www.caucho.com/resin-ee/ejb-ref/ejb-server.xtp

Add the following mapping to your web application's deployment descriptor
for burlap.







Strangely.... The documentation only explains Burlap instead of Hessian.
Hessian is the preferred way to access the bean remotely (faster, but does
not sneak through firewalls as well as Burlap).

Based on the logical nature of most of the Resin package naming, I make the
following guess on configuring Hessian. (I'll try this when I add this
information to the tutorial I am writing).







4) Lastly it seems you are doing this mainly to test your enterprise beans.
I suggest using Cactus to test local beans. I think there is too much
configuration and runtime overhead to use remote beans just to test beans
that will naturally run locally within the confines of a web application.

Thursday, September 26, 2002


Pere Torrodellas had a question about Identity keys, WebLogic and EJB CMP CMR as follows:

"I'm trying to develop a CMP bean on a DB table that has a column defined as "auto increment", i.e. I don't set any value for this attribute in ejbCreate() and the DB manager sets it when the row is inserted.

In order to get the value assigned to the column in the same client method that created it, I invoke a finder that retrieves the just created Bean by looking for another column value.

To my dismay, the contents of the "auto increment" attribute is still null, which suggests that either the container has not yet performed the insert in the DB, or it performs a first search in its storage instead of accessing the persistent media.

How can I force the container to immediately store the bean in the DB and refresh its data to get the automatically generated value? I suppose I could do it with a BMP (right?), but I'd rather use a CMP if possible."

Here is my response


I read your question, and the first thing that popped in my mind was which app server are you using....

The app server you are you using can really impact how to handle auto increment ids. I hope they fix this part of the spec. up before EJB 2.2. Some EJB containers handle auto Ids transparently (e.g. Resin EE). Some EJB containers do no handle them at all. And, Some App servers require special mojo in the configuration files...

I saw that you stated you are using WebLogic 6.1.

WebLogic 6.1 uses the special mojo configuration file approach. (Hey can I identify that as a pattern... the special mojo pattern.... probably not)

In your cmp mapping file (weblogic-cmp-rdbms-jar.xml)

You will need to add one of these
<automatic-key-generation>
<generator-type>NAMED_SEQUENCE_TABLE</generator-type>
<generator-name>CUSTOMER_SEQUENCE_TABLE</generator-name>
<key-cache-size>10</key-cache-size>
</automatic-key-generation>


There are several generator types depending on what database you are using. For example there is one specific to Oracle, and one Specific to MS SQL Server. I don't know why they don't have one specific to the IDENTIY keyword which is standard SQL 92 but they don't.

MS SQL Server uses the IDENTIY keyword, Oracle 8 does not, but most other RDBMS servers do (DB2, MYSQL, Access, HyperSonic SQL, Cloudscape and so on) so you can try this approach with non MS SQL Server.

If possible use the NAMED_SEQUENCE_TABLE for the generator.... it is the most portable. This is a hard sell if you are in an Oracle shop and you using Sequences in that case use the Oracle Sequence option. Refer to the weblogic docs for more information on <generator-type>s.


Here is what the DDL would look like for the NAMED_SEQUENCE_TABLE approach for a simple Customer EJB.


-- customer
-- customer has many orders
create table TBL_CUSTOMER (
CUSTOMER_ID INT primary key,
FIRST_NAME varchar (25),
LAST_NAME varchar (25),
EMAIL varchar (100),
PHONE varchar (25)
);

create table CUSTOMER_SEQUENCE_TABLE(SEQUENCE integer);
insert into CUSTOMER_SEQUENCE_TABLE values (100);

Here is the rest of the mappings for this example to put it all into context....


<weblogic-rdbms-bean>
<ejb-name>Customer</ejb-name>

<data-source-name>mysource</data-source-name>

<table-name>TBL_CUSTOMER</table-name>

<!-- Study these mappings from the TBL_CUSTOMER columns to the Customer EJB cmp fields -->

<field-map>
<cmp-field>iD</cmp-field>
<dbms-column>CUSTOMER_ID</dbms-column>
</field-map>
<field-map>
<cmp-field>firstName</cmp-field>
<dbms-column>FIRST_NAME</dbms-column>
</field-map>
<field-map>
<cmp-field>lastName</cmp-field>
<dbms-column>LAST_NAME</dbms-column>
</field-map>
<field-map>
<cmp-field>phone</cmp-field>
<dbms-column>PHONE</dbms-column>
</field-map>
<field-map>
<cmp-field>email</cmp-field>
<dbms-column>EMAIL</dbms-column>
</field-map>

<!-- TODO study this finder method -->


<weblogic-query>
<query-method>
<method-name>findByEmail</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<weblogic-ql>SELECT DISTINCT OBJECT(c) FROM Customer c where c.email = ?1</weblogic-ql>
</weblogic-query>


<!-- TODO study this auto key generator -->




<automatic-key-generation>
<generator-type>NAMED_SEQUENCE_TABLE</generator-type>
<generator-name>CUSTOMER_SEQUENCE_TABLE</generator-name>
<key-cache-size>10</key-cache-size>
</automatic-key-generation>


<!-- Note that the autokey generator relies on a table with one record.
The build.sql has DDL that builds such tables for each entity bean -->


</weblogic-rdbms-bean>




Wednesday, September 25, 2002

My review of WebLogic Bible finally got published on Slashdot....

"The BEA WebLogic Server Bible is an enjoyable read. If you have been using WebLogic off and on since before EJB (Enterprise JavaBeans) existed, you will still learn a bunch of new tricks. This is an excellent reference that can be read from cover to cover. The book focuses on small examples with an emphasis of deploying and configuring the examples in the WebLogic environment."

There are plenty of examples of setting up your WebLogic configuration, with explanations of what the different parameters are and when to use them for Servlets, JSP, EJB, JMS, and more; just what you need when you are having those configuration problems and a great reference to have around when you get stuck. If you like going from concept to implementation, then this is the book for you.

Unlike some other WebLogic centric books, the Bible's coverage of EJB CMP/CMR was good. Also, the coverage of performance monitoring was really well done. And, the ideas for optimization and the thought process behind it was also really well done. These are just a few examples of a really well written technical manual--the missing WebLogic Manual.

A couple areas of concern (some just nits):

1) A few times the examples were WebLogic centric when they could have been written them in a cross platform manner (wrt J2EE ). (Note: A prerequisite of this book is a working knowledge of J2EE.)

2) The EJB examples hard coded the JNDI parameters instead of using the jndi.properties file in the classpath, which is the preferred approach for cross platform J2EE development.

Granted, at times you have to write things WebLogic centric to utilize WebLogic-specific extensions to J2EE, but the book also did this at times when it was not really necessary to do so. A J2EE veteran will catch the difference, and a J2EE novice will not. Bottom line: you should have a working knowledge of J2EE before reading this book and there will not be any problem.

Another problem with the book is that it covers WebLogic 6.1, while WebLogic 7.0 is already out. However, the material is still applicable to WebLogic 7.0. The book was released this year as was WebLogic 7.0. This in an unavoidable problem with books focused on such a target market. By the time they update the 1000-page book to WebLogic 7.0, WebLogic 8.0 will probably be out. (Notice I say target not niche... WebLogic's market share is huge.)

Also, in the next edition they should cover the Weblogic specific Ant tags in addition to the console and other means of deploying applications. Ant is the de facto method for building, deploying and testing J2EE applications, and a book like this should reflect this reality.

If you are new to WebLogic, I suggest that you get this book. If you have been working with WebLogic since before the EJB .8 spec., I suggest that you get this book. This book is not a J2EE tutorial, but it covers the basics and focuses on WebLogic specific areas of concern.

Consider this book recommended.



Read: J2EE Container Shootout Summary

Interesting read... mentions XDoclet and the power of EJB CMP.

http://www.rollerweblogger.org/page/roller?catname=Java (Tuesday September 24, 2002 )


Two interesting quotes:

What applications justify the use of EJB?
"""
BEA: Robert says that even for small apps, you should design with future migration to EJB in mind. Use EJB if your developers have the skillset for EJB.
ORACLE: agrees that skillset is important. If you are a database house, you might not want to go the EJB route. EJB is not yet truly mature and does not do all the things that a great database can do.
JBOSS: Mark says: don't access the database directly from Servlets and JSP, use EJB intead. EJB caches data for web applications very well and can be ten times faster than ordinary database access. But Mark doesn't stop there. He goes on to say that some companies allow licensing costs to drive their architecture choices and stay away from EJB because of cost, with JBoss you don't have to worry about licensing costs. From the way the BEA panelist rolls his eyes, I get the feeling that he has come up against Mark before.
"""

Another interesting quote.... about JDO

"""
Do you support JDO and what are your plans for JDO?

JBOSS: we have been supporting JDO for quite a while via Castor and other means. But, JDO has not taken the persistence crown. EJB/CMP is much more powerful than JDO. JBoss is working to decouple the CMP engine from JBoss so that it can be used independently of EJB.
ORACLE: The Oracle app server does not supprt JDO, but our new TopLink product is very close, and may enable Oracle to support JDO in the future.
BEA: does not support JDO and says that JDO is not compelling vs. CMP 2.0.
"""


Also pushes XDoclet.... (another quote)

BEA: Robert says it is very difficult to predict the future, but that he sees that XDoclet-like method and field attribute driven development will be important and that web services will be very important.

Tuesday, September 24, 2002

Someone asked how to setup a connection pool in Resin... I posted the following to Resin group (which worked). Let me try to answer, the most J2EE centric way to accomplish this with Resin. (Please let me know if this is not the most correct way... I know it works,
but...)

Step 1
Add the resource to you web.xml as a child of web-app file after the welcome
file list.

...

jdbc/emp
javax.sql.DataSource
Container

...

Step 2
Add the resource to resin.conf to the as a child of caucho.com




jdbc/emp
javax.sql.DataSource







...

Step 3 copy the JDBC driver to Resin lib

Step 4 Access the data source from you code as follows:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/emp");
return ds.getConnection();

I have some examples if you would like to look at them.
Let me know and I will email them to you. They come complete with an Ant
build script.

Also, if you get a chance check out this tutorial on Resin EJB and XDoclet
XDoclet EJB Tutorial

I am writing a step by step tutorial for XDoclet and EJB CMP/CMR EJB QL.
Since the tutorial is hosted on a WIKI server, it is collaborative, i.e., you can make changes and additions.

I think it has enough to be useful already, but expect it to grow and evolve into a complete J2EE tutorial with XDoclet.

Please try it out:
http://java-tools.eblox.com/index.php?ResinCMPCMRXDocletTutorial

For now it is based on the examples that I wrote for this tutorial EJB Tutorial.
(The examples have been ported to JBoss and WebLogic with XDoclet already)

-------------------

I wrote two chapters in the upcoming Mastering Tomcat Development from Wiley. I wrote a chapter on Struts and a chapter on Ant/XDoclet. The Struts chapter rewrites a model 1 JSP based application to be a model 2 based Struts application, and it uses XDoclet support. The Ant/XDoclet Chapter has examples of using XDoclet for Custom Tags, Struts, Servlets, EJBs and more.

I am trying to get Wiley to release some of the XDoclet parts online.

Mastering Tomcat Development

http://www.amazon.com/exec/obidos/ASIN/0471237647/rickhightower-20/002-5683012-4771231

If they do, any interest in including them with the XDoclet documentation?

Rick Hightower

Agile Modeling and Scott Amber just came up in conversation....
I wrote a review about Scott's book that was published on Slashdot.

I've been waiting for a book like this. If you are doing software development of any kind, you should read this book. Especially if you are doing Extreme Programming and you errantly believe modeling has no place in XP. Or, your doing the Unified Process and you feel that your models and documents are more important than a working system, or you feel you are bogged down in documentation and required artifacts (more likely). Agile Modeling (AM) is a modeling methodology that enhances your modeling endeavors, whatever your process methodology inclination. Agile modeling will help you effectively incorporate modeling into your organization." Read the rest of Rick's review below.


The title is only partially accurate as the book covers a lot more than modeling. I know from experience that picking titles is tricky (you can't please everyone). You don't need to be a UML expert to get value of this book. Any software developer should be able to appreciate it. Modelers, software developers and Yes, managers will find this material useful. In fact you may want to buy a copy and put it on your manager's desk. This book is original and well thought out. It is also well written and very readable. I wish there were more examples of applying the different artifacts in different phases of the XP life-cycle, but there has to be room for the next edition. The depth is appropriate.

Many UP developers (and those working with other prescriptive processes) get bogged down in the tonnage of documents and artifacts that are required. They wonder if they are ever going to have time to actually write the code.

XP offers a methodology for building high quality software fast. However, many XP developers, and I've spoken to them about this very subject on many occasions, find that XP does include time to do models. This books shows how to integrate XP and modeling.

This book sets the record straight about design and Extreme Programming. Actually, Kent Beck set the record straight with the first book on XP when he said 'In the time it would take you to code one design, you can compare and contrast three designs with pictures.' Kent Beck's views were corrupted over the years for various reasons that Agile Modeling explains, as it clarifies once and for all the relationship between XP and modeling.

The book emphasizes that you should model to understand the problems and only apply the right artifacts, i.e., that not all modeling must lead to writing code.

Despite the title, he AM book transcends just being a book on modeling; the book covers many aspects of developing software. Agile Modeling endeavors to be real. By real I mean it talks about real issues and how things are handled in the real world, not the perfect world covered by most books. For example, the chapter on documentation is an excellent coverage of the subject, but not idealized beyond all usefulness.

Like the original XP book, the AM book lists values, core principles and practices. It also adds supplementary principles like 'Content Is More Important Than Representation.' A key lesson from the book is that models are important if they help you understand and solve problems. And, models do not have to be perfect -- in fact they can be thrown away when you are done with them. After all is said and done, 'Software is your Primary Goal.'

The author, Scott Ambler is the author of numerous books (and by numerous I mean a lot) for the Unified Process, and UML. He also contributed to the Mastering EJB Book, and the Java Elements of Style book. All his work in UP seems strange since AM seems to have closer ties to XP than UP, but that is probably my own warped misconceptions of the world. Bottom line, Scott has mastered the craft of writing and I really enjoyed his writing style. The first few chapters seemed a little slow, probably because their content has been covered before in other books. The chapters on AM and XP, though, were informative and useful (as was the chapter on agile documentation mentioned earlier).

If you are doing software development of any kind, you should read this book. It is an informative and enjoyable read.
The original article is here on slashdot http://books.slashdot.org/article.pl?sid=02/05/07/157241&mode=thread&tid=156

Monday, September 23, 2002

Thoughts on JDO....

My opinion, EJB 2.0 CMP CMR is more mature than JDO. Most JDO implementation "don't fully implement the JDO spec. yet".... that said I think JDO will leap ahead of EJB in the near future...

I also think a future version of EJB 2.2 will merge EJB CMP CMR and JDO just like EJB 2.1 merged EJB and web services. There is really no point in having two frameworks that essentially accomplish the same thing. therefore a later version of EJB will embrace JDO and build on top of it instead of replace it... Just my humble opinion. (note this is just a guess... i have not heard of any such activity)
Another interesting blog article....

http://radio.weblogs.com/0107789/stories/2002/07/09/whyILikeWebwork.html

I first heard about WebWork when I was at XPUniverse. I've been using Struts for a while. I find Struts useful, but sometimes ugly and klugy. I am willing to give WebWork a look.
I read an interesting article about EJB at
http://radio.weblogs.com/0107789/stories/2002/05/24/isEjbAlwaysNecessary.html

At some point, I would like to address this article on a point by point basis.

Thursday, September 19, 2002

Create an XDoclet Resin Tutorial....
http://java-tools.eblox.com/index.php?ResinCMPCMRXDocletTutorial

Thursday, September 12, 2002

I am slowly losing steam. The TCC certificaiton stuff took a lot out of me, and I've been running on empty all week. I'll be glad when I can rest.

Wednesday, September 11, 2002

Well, I completed the Together Control Center Certification. I am now Together Soft certified in UML, J2EE, Java and C++.
Well, as soon as I send in the paper work, I am certified to teach the following TogetherSoft courses:


  • How to Build Better Object Models
  • UML Quickstart
  • Java Quickstart
  • C++ Quickstart
  • J2EE Quickstart


The two day training was very informative and I learned a lot about modeling in color and the DNC. I read the book by Peter Coad on Modeling Java in Color a long time ago, but the concepts really came to life when I heard Ron, the chief mentor, explain it.

I've been a fan of the TogetherSoft toolset for a long time.

Sunday, September 08, 2002

In a few minutes I am leaving for the airport. (1/2 hour). It is off to North Carolina then Minnesota. I am going to Together Control Center certification training in North Carolina then I am teaching advanced Swing in Minnesota. I've been preparing for the TCC Cert a lot. Wish me well.

Saturday, September 07, 2002

I've been working on getting TogetherSoft certified a good chunk of this week.
(8/22/02) I just completed two chapters in the upcoming Mastering Tomcat Development from Wiley. I wrote a chapter on Struts and a chapter on Ant/XDoclet. The Struts chapter rewrites a model 1 JSP based application to be a model 2 based Struts application. The Ant/XDoclet Chapter has examples of using XDoclet for Custom Tags, Struts, Servlets, EJBs and more.



Chris Lechner and Andy Barton from eBlox setup and hosted the WIKI for the Java Tools For Extreme Programming Book.
We now have a book errata. We also have a book review section.

"eBlox has been kind enough to sponsor a Wiki for this book. You can share Errata, Suggestions, and Reviews at http://java-tools.eblox.com/index.php"



Alen Williamson wrote:
"It was good to catch up with people, and I have to say, to thoroughly enjoying grabbing some quality face-to-face time with a number of authors including, Joey Gibson and Rick Hightower to name but a few. Their insight into the current trends and technologies was most enlightening, and hopefully I will be able to snaffle a guest editorial from them at some point."

I'd love to do a guest editorial. Ask me anytime.

I am speaking at the following places:


I am speaking on the following topics (both are 3 hour tutorials):

Sunday, September 01, 2002

My wife got tired of qwest dsl. It was going down every twenty minutes. She hooked up cox communication (cable model) and bought a wireless hub. Now I have a wireless connection at home..... All I need now is an espresso machine and a barista, and I am fully wired. errr... I mean unwired.... Wireless to the hub + cox cable modem is faster than qwest dsl. My wife likes techy things... I just wish she would quit beating me at the XBox games.


Thursday, August 29, 2002

I've been looking at Sun's Java WebServices stuff. Its really neat and its free.
The samples were interesting. The build files seemed to be very broken.
Like maybe somebody changed directory structures completely.
The tutorial examples seem a little messed up as well.
So far, I've been focusing on JAXM.

I wrote two simple clients and a simple server.
One client is a Servlet, and the other client is a Java application.
The examples run under Resin fine.
I've been using the Resin plugin for eclipse, which is very sweet.

Tuesday, August 20, 2002

Updated swing course. Swing is fun. I wonder what SWT is like.
Peter sent me the updates to the example code for CMP/CMR and EJB QL.
The tutorial now works with JBoss.

Friday, August 16, 2002

I am going to become TogetherControl Center Certified. Sounds like fun....
I installed the Resin plugin for Eclipse. I will use that when writing the Resin Official guide. So far it has worked out well. It does not seem to do to much, but what it does it does well. I coverted a few of the Tomcat examples for the Resin book. I am going to go with the Employee listing example for most of the book. I am teaching a course on Java GUIs this week. In a few weeks, I will teach a course on swing. I am also going to be working on the course generator.

Saturday, August 10, 2002

I use to hate XSL and XSLT. But now I am starting to like it. It is so easy to use.
I created two style sheets:
One creates fo for a course workbook
The second one creates fo for a slide set
I created a lesson xml file.
I run the lesson.xml file through xalan using the above two style sheets to generate fo files.
Then I use Apache fop to turn the fo files into PDFs.
The slide set looks just like I did it in power point.
The workbook looks nice too.

Friday, August 09, 2002


http://sourceforge.net/projects/pythoneclipse

Looks like a good project. I wish I had the time. This would be a project I
would like to get involved in. Right now I am knee deep in XSL and FOP (I
worked on this till 5:00AM last night tweaking my FOP files until the
generated PDF looked just like my powerpoint slides). I just finished
working on two chapters for the Tomcat book. And, now I am working on a new
book until December/January (the official Resin guide). After that... I
think I want to update the Java Tools for Extreme Programming to the next
edition (hopefully Nick will want to as well)..... Then after that I want to
work on JYSP:

(from my blog)
http://rickhightower.blogspot.com/2002_06_01_rickhightower_archive.html
I want to create JYSP.... Jython Server Pages. I have been thinking about it
a lot.
It would consist of two things:
1) An Ant task that takes *.jysp files and converts them into Jython based
Servlets.
2) A Servlet that has *.jysp files associated with it. The Servlet (the JYSP
engine), would check to see if the jysp file has already been generated, if
not it would generate the file and then compile it with jythonc.

This will be my next pet project after I finish the others if someone does
not do it first.

Is there a WYSWIG FOP editor?

I was just in Chicago teaching a tutorial at XP Universe.

I added 20+ slides on XDoclet to my Java Tools For Extreme Programming
Presentation/Tutorial for XP Universe. BTW Everyone that attended the tutorial was really interested in XDoclet. I asked for a show of hands for how many people
thought they would use XDoclet, and almost everyone raised their hand.
XDoclet Rocks!

I am going to post the slides on my website with additional links to the
source code. I am going to beef up the XDoclet presentation for the TJug meeting next month.

WORKING SAMPLE SOURCE
I have some Custom Tag XDoclet examples, Servlet XDoclet example, and a
detailed CMP/CMR/EJB QL XDoclet example, and a Struts XDoclet example. The Struts and CMP/CMR examples both come complete with an Ant build script that builds the database tables.

The CMP/CMR example has examples of a stateless session bean; 4 entity
beans; with one to one, one to many and many to many relationships; and
plenty o' select & finder methods. It is a fairly complete example.

Look for the source at the bottom of this page (I wrote a 4 part CMP/CMR
tutorial the last two example sources use XDoclet)
http://www.rickhightower.com/ejbcmpcmrtut.html

The new Tomcat book from Wiley covers XDoclet for Custom Tags, Servlets and
Struts. I wrote the chapter on Ant and Struts. The Ant chapter has the
XDoclet examples. The book is Mastering Tomcat Development by Peter Harrison
et al by Wiley.

The source code for the Struts/XDoclet, Servlet/XDoclet and the Custom Tag
XDoclet can be found here:

http://www.rickhightower.com/tomcatbook.zip

The examples are complete in the sense you can run them when you are done.
The Servlet example configures a JDBC resource amongst other useful things.

I'd like to have the examples ship with the distribution if possible. I
think they would help the averagely motivated to get started with XDoclet.


It was neat meeting Kent Beck, and others in person. (Chet H. says he has a copy of our book Java Tools for Extreme Programming and that he uses it as a reference.)


Sunday, August 04, 2002

Response To Erik Hatcher for the Blog notes that I posted on the Tucson JUG on what floats my boat lately.
>
> Right on! I'm doing the same stuff in my apps.
>
> Out of curiosity - what Tomcat book?

I wrote two chapters for a Wiley Tomcat book.

Mastering Tomcat Development
Peter Harrison
ISBN: 0-471-23764-7
Paperback
464 Pages
September 2002

My buddy Tim Ryan asked me to do it.
It was a lot of fun.

I am also coauthoring a new book. I was hoping I could get some technical
feedback on the new book from this group.

>
>
>
> Here is where I draw the line with XDoclet. Its awesome - but where
> metadata should reside really needs to be though through.

Good point.

Action
> mappings in Struts are the "glue" between view/controller essentially
> and I do not feel they belong in the source code.

Makes sense to me. I agree with you.

I reuse forms in
> different action mappings and that should be independent from the source.

You can still reuse forms in various action mappings. The action mapping is
defined in the action class not the form. It was useful for this simple
example app, and I think it would be useful for a lot of the Struts I've
done in the past, but I agree that it would sometimes just not make sense.
(You could always use Ant filters and XDoclets to configure the config file
on a per application level.) I think the same is true with a lot of XDoclet
not just Struts XDoclet support for example CMP/CMR if the RDBMS tables are
different how do you map to both. I think it is the 80/20 rule.

>
> But.... you can generate action mappings with XDoclet. I don't recall
> the specifics of what you do to configure it with @tags or on what types
> of classes it processes to get them, but it is done and I've complained
> on the XDoclet e-mails lists that this is an abuse of metadata in the
> Java source code.

I think I would use it for most Forms and Actions except a few.

>
> The next phase of XDoclet is going to evolve it into using Velocity
> templating.

I heard/read this somewhere, but then I wondered when I saw the vDoclet
stuff I thought maybe this was related. Hmmm... sounds like vDoclet is a
branch, and I should probably just stick with the next version of XDoclet
that supports Velocity... unless I really need to create templates soon,
which I don't. I love code generation as you know. :o)

But custom templates are pretty easy in XDoclet with their
> very well done documentation handy.

you are probably right... it failed my fifteen minute test. If I can't
figure it out in fifteen minutes, I put it on my ever increasing TODO list
towards the bottom. :o) It is my triage system. Does your book have some
explanations of XDoclet templates?
I can 't wait to get a copy of your book.

Also, I highly recommend the CVS
> version over the latest release at the moment - its much faster and does
> much better dependency checking. I'm using in production as we speak.

I have a bad habit of waiting for the binary release. This is a corollary to
my fifteen minute rule. Bad Rick!

>
> > Speaking of Velocity templates, has anyone tried DVSL?
>
> I've no personal experience with it... but an Ant contributor added some
> slick DVSL stuff to the proposal/xdocs stuff I did to generate Ant
> documentation with XDoclet to turn it into snazzy HTML files and it
> works nicely... so nicely that I haven't looked under the covers of it
> yet. Have a look there for samples if you like.

Sounds cool. I don't like XSLT very much.

>
> > Oh yeah, I now use Eclipse instead of Netbean thanks to Nick from eBlox
> > who gave me a 1/2 hour lesson on using it. I really dig it. It is so
> > productive. I wish it had JSP support, but it probably does... I just
> > have not found it yet. I can't switch back to NetBeans.
>
> Oh, and IDEA supports JSP pages too! :))

I downloaded IDEA, but never installed it. It was highly reccommend by a few
people including you.

Eclipse is so snappy, and I hear there are plugins for Tomcat, Resin and
WebLogic.
I think I will use it for a while then try IDEA. It took me so long to let
go of NetBeans. When I find something I like, I hate to switch.

Have you tried Eclipse?

Another thing that floats my boat is ObJectRelationalBridge (OJB) by Jakarta. OJB is an Object/Relational mapping tool that allows transparent persistence for Java Objects against relational databases. It does not quite support JDO complety but it looks promising.


I am really into XDoclet. I had a lot of success with the EJB CMP/CMR and XDoclet. Erik Hatcher's enthusiam for XDoclet finally caught on... I hate it when he is right...it happens so often though. :o)

When I was asked to write an Ant chapter for a Tomcat book, I decided to use XDoclet to generate the web application deployment descriptor. Since XDoclet has a webdoclet ant task and the book was covering Tomcat and already covered web applications, XDoclet seemed like a perfect fit. It was so easy to use with Servlets that I decided to write a section on using XDoclet with Custom tags. This was also flawless and easy. Then I was asked to write an intro to Struts for the same Tomcat book. Again I used XDoclet it did not quite work. It did not generate the attribute for the ActionMapping, but it did generate everything else. Not perfect, but not bad. I used the last production release of XDoclet not the CVS head... I know what a coward.

I have used XDoclet, but I have not defined my own custom templates with XDoclet yet. I looked at some of the templates and they look scary complicated.... I know what a coward. I saw Vdoclet, which is similar to XDoclet but uses Velocity templates, which looks less convoluted than the XDoclet templates to me (opinion not based on fact just gut feeling). Has anyone tried VDoclets? (Warner enthusiam for Velocity is finally catching on....)

Speaking of Velocity templates, has anyone tried DVSL? DVSL is an XSLT replacement that uses Velocity templates instead of XSL based XML for XML transformations. I did not like Velocity as a replacement for JSP, but XML transformation and code generation seem like a good fit for it (opinion based on my fondness for JSP and custom tags just a gut feeling). I know XSLT, but I am not a fan if you know what I mean. Like XDoclet templates, XSLT seems a little convoluted and DVSL seems like a better fit.

Another thing that floats my boat is ObJectRelationalBridge (OJB) by Jakarta. OJB is an Object/Relational mapping tool that allows transparent persistence for Java Objects against relational databases. It does not quite support JDO complety but it looks promising. I've studied and played with JDO a lot lately, I am not 100% sold, I still really like CMP/CMR and EJB QL.


Oh yeah, I now use Eclipse instead of Netbean thanks to Nick from eBlox who gave me a 1/2 hour lesson on using it. I really dig it. It is so productive. I wish it had JSP support, but it probably does... I just have not found it yet. I can't switch back to NetBeans.


I tried the new Java Fundamentals test at BrainBench, and got the highest score in the USA (first try).
I want to take the new EJB 2.0 test.
I've been working a few chapters in the new Tomcat book.
After using Tomcat more fully, I really appreciate Resin!
Read the IBM tutorial on JDO. JDO is cool.
Why is IPlanet installation so hard?

Monday, July 08, 2002

Teaching Advanced EJB this week.
We got a real smart group that are asking me questions that are keeping me on my toes.
Update... Erik Hatcher said if I updated to Ant 1.5beta3 that this problem would go away....

as always Erik was right.... Got the Resin XDoclet to generate the Resin deployment descriptor.

Friday, July 05, 2002

I read the tutorial on Resin XDoclet. I got past the Null pointer exception by adding @ejb:home and @ejb:interface directives to each source file, but now I get another perplexing problem. Soon.


The Weblogic Bible is an enjoyable read. If you have been using WebLogic off and on since before EJB existed, you will still learn a bunch of new tricks. This is an excellent reference that can be read from cover to cover. The book focuses on small examples with an emphasis of deploying and configuring the examples in the WebLogic environment. Their are plenty of examples of setting up the configuration with an explanations of what the different parameters are and when to use them for Servlets, JSP, EJB, JMS, and more; just what you need when you are having those configuration problems and a great reference to have around when you get stuck. If you like going from concept to implementation, then this is the book for you.


In addition, unlike some other WebLogic centric books, the coverage of EJB CMP/CMR was good. Also, the coverage of performance monitoring was really well done. And, the ideas for optimization and the thought process behind it was also really well done. These are just a few examples of a really well written technical manual--the missing WebLogic Manual.


A couple areas of concern (some just nits):


1) A few times the examples were WebLogic centric when they could have been written them in a cross platform manner ( wrt J2EE ). (Note: A prerequisite of this book is a working knowledge of J2EE.)


2) The EJB examples hard coded the JNDI parameters instead of using the jndi.properites file in the classpath, which is the preferred approach for cross platform J2EE development.


Granted at times you have to write things WebLogic centric to utilize their extensions to J2EE, but the book also did this at times when it was not really necessary to do so. A J2EE veteran will catch the difference, and a J2EE novice will not. Bottom line: you should have a working knowledge of J2EE before reading this book and there will not be any problem.


Another problem with the book is that it covers WebLogic 6.1 and WebLogic 7.0 is already out. However, the material is still applicable to WebLogic 7.0. The book was released this year as was WebLogic 7.0. This in an unavoidable problem with books focused on such a target market. By the time they update the 1000 page book to WebLogic 7.0, WebLogic 8.0 will probably be out.


Also, in the next edition they should cover the Weblogic specific Ant tags in addition to the console and other means of deploying applicaitons. Ant is the de facto method for building, deploying and testing J2EE applications, and a book like this should reflect this reality.


If you are new to WebLogic, I suggest that you get this book. If you have been working with WebLogic since before the EJB .8 spec., I suggest that you get this book. This book is not a J2EE tutorial, but it covers the basics and focuses on WebLogic specific areas of concern.


Consider this book recommended.


Links of note:


Thursday, July 04, 2002

Good week. I read the WebLogic Bible and learned a bunch of new tricks. Earlier this week, I got Resin talking to WebLogic.... that was fun. (Servlet in Resin calling a Session Bean in WebLogic). I took the BrainBench EJB test, and scored Master Level at 4.44 (97 Percentile). I took the test a long time ago and just barely missed Master level.

I found a document explaining how to use XDoclet with Resin. Gee I could of used this earlier....

My Python book is being released July 5th! I got two copies in the mail already.

I created and submitted part 2 of the four part series on EJB CMP/CMR to EJB QL World!

Monday, July 01, 2002

Okay… giving it one more whirl…. It has been a long while… but I am back trying to get the Resin xdoclet support for ejb working….

I figured out that Resin has both and task and subtask called resinejb. I figured this out a few trips of New York ago, but did not have the time to test things out.

So now I run it with the subtask, and I get a nasty null pointer exception as follows:


resingen:
[resinejb] Generating Javadoc
[resinejb] Javadoc execution
[resinejb] Loading source file C:\ejbql\src\com\rickhightower\auth\GroupBean.java...
[resinejb] Loading source file C:\ejbql\src\com\rickhightower\auth\RoleBean.java...
[resinejb] Loading source file C:\ejbql\src\com\rickhightower\auth\UserBean.java...
[resinejb] Loading source file C:\ejbql\src\com\rickhightower\auth\UserInfoBean.java...
[resinejb] Loading source file C:\ejbql\src\com\rickhightower\auth\UserManagementBean.java...
[resinejb] Loading source file C:\ejbql\src\com\rickhightower\auth\UserValue.java...
[resinejb] Constructing Javadoc information...
[resinejb] Running


Well, on the one hand, this is not a good sign…. On the other hand now I have another excuse to dig into Xdoclet code, which will help me understand XDoclet better.

No build file with XDoclet src.... writing one.

Sunday, June 30, 2002

You too can hear me say "ahhh" and "ummmmh" on Syscon radio from WebServices Edge

http://www.sys-con.com/webservicesedge2002east/radio/trivera.mp3
.

I ask the important questions like "is this on?".

Sean Rhody ask questions about the XP book, the new Python book and IBM developerWork's articles on EJB CMP/CMR and EJB QL and of course Trivera Technologies.





I spoke at JDJEdge. It went much better than I thought it would... (One of the advantages of being a pessimist)
I had the early early scheduled time slot to speak, and yet the attendance was still very high.

Tuesday, June 25, 2002

Extreme Programming Explained: Embrace Change by Kent Beck

I love this book. The first time I heard of this book, I thought my buddy was joking. The title conjured up images of programmer's jumping off bridges with laptops. Needless to say, I did not read the book then. Later, I read it, and I really enjoyed it.

My feelings are that this is a good book, but it is not complete. It introduces XP, but it is hard to apply XP with just this book. In my opinion, you need the book "Planning Extreme Programming" by Kent Beck, and Martin Fowler and this book to start really implementing XP. Don't worry, they are both small books and you could read them both in a weekend.

My observation about XP:

Pair programming is a tough concept to get and sell, but it can really help a team quickly grow in leaps and bounds!

Continous Integration (CI) and automated testing go hand in hand with refactoring. Without CI and automated testing you loose liquidity in your code base, and it is hard to add new features. Your project becomes rigid, and brittle without CI and automated testing.

Of course if you want to apply XP to Java.... You know what book I suggest!
I am redoing UML diagrams for our OOA/OOD course.
Not fun!

Tomorrow I will be a JDJEdge!

I am taking the red eye tonight.

Monday, June 24, 2002

The CMP/CMR tutorials are on EJB QL World!
http://www.ejb-ql.com/tutorial.html
I finally gave in.... All of the peer pressure about Eclipse, and all of the articles.
I am in the process of downloading it.
(Actually I downloaded it a while back and installed it, but never used it. This was on my laptop. Now I am doing it on my desktop.)

Saturday, June 22, 2002

Still need to work on the Resin or JBoss port.... I did convert the first EJB 2.0 CMP/CMR tutorial to PDF and we are going to hand it out. I copied it from the IBM's PDF to OpenOffice. Then coverted it to Word. All of the text was screwed up so I had to reformat the code listing and add back cr/lf and stuff. Kim made it look nice, and converted it back to PDF.

EJB QL World agreed to host the first two parts of the tutorial on their site. Yeah! I just need to finish converting it to HTML. I used Word to convert it to HTML and it looked like crap so I need to make it look neat. I also used OpenOffice to convert it to HTML and it looked worse in some ways... better in others. I am starting to prefer OpenOffice to MS Office. I think MS should be scared of OpenOffice.... much more so than Linux.

On Friday, I finished the slides for Agile/XP Universe. I started with the slides for JDJEdge... took out the stuff about XP theory and add more stuff about the using the tools. I added JUnitPerf, JMeter, and HttpUnit slides. I also added some more slides on Ant and more about JUnit. I also beefed up the Cactus sections. I created a collaboration diagram for Cactus to explain how the test runs on both the client and the server.

Wednesday, June 19, 2002

I took the UML test today on BrainBench. I was shooting for master level.... I missed it by 0.02 points.
I needed a 4.0 to get master level and I got a 3.98. Strangely, it is the 12th highest score in the United States of more than 750 people, and still not master level. I will try again in a few months. I think I will read UML distilled by Martin Fowler first.

I found this site useful for studying for the test. I also used the Larman book as well, and the UML spec.

Tuesday, June 18, 2002

Where can I find good Swing people?


Someone recently asked a good question... and it seemed like a good blog.

"Our team is looking for a very strong SWING engineer and honestly, this
hasn't been the easiest thing to find. Our backend is mod_perl for our web
sites and we're building a complex rich-client based on SWING. We want to
bring in a permanent employee in this
role as a senior engineer."


Its hard to find good Swing people. Part of the reason is the lack of demand for Swing, since Swing was so buggy in the past. Thus, developers that learned it did other type of development instead, and since there was no demand, it left a bad taste in their mouth. However, Swing is a lot better than it use to be!

May I ask what type of swing development do you plan on doing? e.g., Applet or Application?

If Application, you may consider SWT from IBM. The Eclipse project is built on SWT. SWT is more performant since it runs against more native code. Swing is a resource hog (although it is a lot better than it use to be). There is an article in Info World that you should read on SWT article on SWT Swing has some advantages as well. Swing has a really well designed API and framework. (I like Swing.)

If you are sold on Swing, may I suggest an alternative to hiring someone new. I find that taking a known quantity like a known good Perl developer and training them on Java and Swing is better (less risky) than taking an unknown quantity like a new developer off the street who claims to be a Swing expert. Plus variety is the spice of life and some of your Perl developers may want to learn something new. Good OO developers are good OO developers regardless of syntax. (For Perl developers you may have to do some training on OOA, OOD and OOP as well before you do Java/Swing training.)

If you do decide to hire someone off the street, make them take the Java GUI brainbench test, and pass it at the master level. This will not prove that they are a good developer, but it will show that they at least know about Swing. Always get good references. And if you know anyone that knows swing and Java, have them help you with a tech interview questions. In the past, when I want a developer with a certain skillset, I would not even interview them until they passed the brainbench exams.... this saves time and weeds some people out straight away.

Also, let me know if you ever want to switch from the Perl Mod world to the JSP, TagLib, Servlet world. Resin's fast Servlet 2.3 and JSP 1.2 engine beats mod_perl, mod_php, and other servlet engines in performance benchmarks. I like LAMP. I helped an organization switch from LAMP to J2EE.

Triveratech specializes in J2EE training. We also have Java and Swing course that may help you out.
EJB QL + EJB Local + XDoclets = more EJB on more projects

I have recently read a lot of articles about whether or not developers should use EJB.


The argument against EJB tends to be that they are too complex. This is ironic since EJB's purpose was to simplify server-side development. Don't get me wrong... I agree EJB is too complex with for a lot of projects, and that a lot of project could have gotten away with just Servlets and JSP. Too many developer's were using EJB to add an extra bullet on their resume. While I agree that EJB is not for every project, I think recent advances in tools and techniques equate to EJB being more applicable to more projects.


Of particular interest in developer productivity with EJB is CMR, EJB QL and XDoclet (EJBDoclet). Basically, the productivity and utility of these tools have to exceed the inherent difficulties in using EJB in order for EJB to be considered on a project. These tools lower the bar while increasing the utility and make more projects candidates for EJB.


XDoclet, and open source project, simplifies EJB development by using JavaDoc API and some additional APIs as a code generator so that a developer only has to maintain one file instead of 5 or more files (,i.e., deployment descriptor, local interface and/or remote interface class files, local home and/or remote home class files, vendor deployment descriptors and/or conf files, bean implementation, primary key class files, value class files and more.)


There is a significant increase in productivity by using select methods and EJB QL. Code that use to take 10, 20, 30 lines of code can be written in just a few lines of code by mastering EJB QL.


When you combine XDoclet simplification with EJB-QL and CMR, you can use EJB on a lot more projects.


With CMR it is really easy to work with the standard collections API (which we all know and love) when dealing with one-to-many and many-to-many relationships between entities.


EJB 2.0 specification has been out for a while. Have you tried the new features like CMR and EJB QL? If so, what do you think?


My personal experience is that finder and select methods (written in EJB QL) are really productive and can save a lot time. Is EJB QL the killer tool?


If you have not tried CMR or EJB QL, I wrote a tutorial on CMP/CMR and EJB QL that I think you should check out. The tutorial is on IBM developerWorks. Please go to this link to find out more information on this tutorial series and related articles.


The free tutorial is broken up into four parts.


The first part describes basic EJB 2.x CMP with a simple finder method defined in EJB QL.


The second part describes defining EJB CMR relationships. Three types of relationships are covered:


  • Many to Many

  • One to Many

  • One to One



Both unidirectional and bidirectional relationships are covered.


The third part describes basic EJB QL. It mostly deals with joining cmr fields and working with IN and MEMBER OF.


The fourth and final part describes advanced EJB QL, and how to create select methods. The tutorial refactors code using the select methods and show a 10x reduction in code. (And gives directions how to rewrite a method from the earlier examples with a 20x reduction in code.)
Master select methods and you will love EJB QL!!


You can download the PDF files for the tutorial from developerWorks and view the tutorial offline. Or you can view it online. (see the links above to developerWorks)


Parts 3 and 4 are done. They should be out really soon. They have been bounced back and forth a few times between me and the editor. There is also an article in the works on XDoclet and EJBDoclet (more on this later).


The code in the first two parts works with Sun's RI for J2EE (RI is the reference implementation). Peter Luellen from West Side Widgets created the deployment descriptors to get final code from part 1 and 2 working for JBoss. (JBoss is an open source EJB application server.)


The code in the last two parts of the tutorial were done in WebLogic. The code will run on JBoss, Resin and more shortly. Check back at my site to see code updates to other app servers, and to see if the XDoclet article has been published. (Also if you would like to run the examples on your favorite app server, and send the configuration and/or code updates, I will glady accept them. Send them to rick_m_hightower@hotmail.com.)


The code in the last two parts uses XDoclet, and makes a good example of how to use XDoclet to setup CMR relationships and write finder and select methods in EJB QL.

Initial try to get Resin EJB to run against tutorial example


Okay, okay, okay, I have been waiting for the EJB Doclets for Resin. Now they are here… yeah…. I downloaded it last Wednesday, and now its Tuesday the next week. I’ve read through the docs but got so busy with the Python book I had to stop for a while.

Step1: Went to www.caucho.com and downloaded the EJB Doclet support.

Step2: After you download the jar; extract and read the notes.txt. The notes contain the names of all of the javadoc tags for the Resin EJB Doclets.

Step 3: Run the build script with ant. If you don’t have xdoclet.jar on classpath then you will have to set the xdoclet.jar=/usr/local/src/ejb/xdoclet/lib/xdoclet.jar to where you have xdoclet.jar. (It was on my classpath so it worked for me with no mods…).

Step 4: Next I copied the resin-xdoclet.jar to my ant lib:

copy c:\resinxdoc\dist\resin-xdoclet.jar c:\ant\lib

Step 5: I modified the build file for the example and added the following:
to the ejbdoclet target (). I added the within the body ejbdoclet task. Seems straight forward, but it did not work. It complained about this not being a subtask of ejbdoclet or some such. (Later I noticed that this was mentioned in the notes.txt.)


![CDATA[



classname="com.caucho.xdoclet.ResinEjbDocletTask" classpath="${xdoclet.path}"
/>


sourcepath="${src}"
destdir="${meta}/META-INF"
classpathref="classpath"
excludedtags="@version,@author"
ejbspec="2.0"
force="${xdoclet.force}"


>










]]


Note: I got to the beginning of step 5 and then my wife and kids came to town so they can see New York too. They cruised the city while I worked. Thus another 4 to 5 days my pet project sits on the shelf. On a lighter note, I did get to see the Bronx Zoo and the Empire State building, and spend some quality time with the family. You will notice the absence of blog entries that denote their arrival.

Now step 5 is not working, when I get back online (I am currently on a plane returning to Tucson from NY), I will send some emails, and see if anyone else got this to work and while I am waiting I will dig into the resin xdoclet source code. I wanted an excuse to learn more about xdoclet internals anyway; now is my excuse to dig in.

Step 6: Add the javadoc tag to the source code. For this step, I followed the notes in the notes.txt. The notes.txt file is in the root of the file that you extract. I performed this step but nothing happened. I got a big fat zilch. Worse yet, I did not get any error messages when I ran the resingen task. See the notes for step 5 for more detail.


What have I learned from looking into the source file….

First the DD that does the mapping will be in a file resin.ejb by default.
I am getting the gist, but still not sure about all of the details.
It seems like maybe… just maybe it can’t find the *.j files, which are class resources.
I put the resin xdoc jar on the classpath…. Still nothing.

set classpath=%classpath%;c:\ant/lib/xdoclet.jar;c:\ant/lib/log4j.jar;c:\ant/lib/ant.jar;c:\ant\lib\resin-xdoclet.jar

I think I figured it out while I was offline. I think I need to use the substask resinejb of resinejb. Anyone it was fun digging into the templates.

The folks at EJB QL world wrote back and said they would be interested in the first two parts of the EJB tutorial. Now it has another home.

I posted links to the tutorial page on my site on JavaLobby, JavaChannel, JavaRanch and SlashDot. I made posting on slash dot differnent to suit their unique style.

Rawn from IBM developerWorks wrote back and now they want a tutorial on XDoclets.