CI Tools and Best Practices in the Cloud

Continuous Integration

Subscribe to Continuous Integration: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Continuous Integration: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Continuous Integration Authors: Elizabeth White, Yeshim Deniz, Liz McMillan, Pat Romanski, Mehdi Daoudi

Related Topics: Apache Web Server Journal, Java Developer Magazine, Continuous Integration

Apache Web Server: Article

Test-Driven Portal Application Development in BEA WebLogic

Combining basic software engineering principles with new tools and technologies

BEA has seen the advantages of Eclipse as well, and the next version of Workshop, Workshop Studio 3.0, comes with Eclipse plugins. It will then be possible to perform the whole development in one tool, getting the best of both worlds.

To get even more automatic feedback on the state of the code, both when it comes to passing JUnit tests as well as different aspects of code quality and code coverage, we have used Maven and CruiseControl to implement continuous integration. BEA WebLogic Workshop provides Ant tasks for building a portal application, so it is easy to integrate this into a Maven build process. We created goals that compiled our "Non-workshop" modules first, then copied these into APP-INF/lib and WEB-INF/lib, depending on their responsibilities, and then finally built the complete Portal application using the Ant tasks from workshop. We based our project's directory structure on Vincent Massol's "Enterprise builds" presentation from TSSS 2004 (see the third entry in the References section). This is a logical and pragmatic structure, and has worked very well for us.

Conclusion
When new technologies are introduced, they often come with a set of new development practices. We tend to forget the basic craftsmanship and the existing best practices that are the basis for all professional software development. By focusing on the sound software engineering principles of test-driven development, we have been able develop a large BEA WebLogic Portal application using a host of new technologies, achieving a loosely coupled architecture with high-quality code developed through continuous integration.

References

More Stories By Vidar Moe

Vidar has many years of experience with software development projects at Norway's largest clients. His main interests are software quality, agile methodologies and architecture. He has been working with enterprise Java architectures since 2000, especially on the Oracle / BEA WebLogic platform. His experience is that honesty and open communication are the most important success factors in a development project. This is reflected in the way he works, both inwards and outwards in his projects. Vidar is a Sun certified Java architect. He works as architect, Scrum master, developer and coach in his projects. He likes working with agile methodologies, always working towards more effective software development.

Comments (3) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Gary 04/26/06 10:51:19 AM EDT

Very good article. I was searching for some 'best practices' regarding unit testing of PageFlows and I came across your article. I like the idea of the ActionDelegate but I have a couple concerns (which may only relate to our implementation and project)
Project info: 8.1 sp2 with no controls
1) Since the pageflows are maintained in the session, where do you create the ActionDelegate? If there is no constructor for the pageflow how can you keep a 1 to 1 instance of pageflow to ActionDelegate.
2) Upon reviewing a couple of our pageflows, it looks like I would need to pass several parameters to the ActionDelegate methods. (session, request, MessageResources, maybe some other local variables)

But I still like the decoupling you propose to get the logic out of the pageflow action and into a testable ActionDelegate (assuming mock objects for session, request, etc).

Thanks for your time,
Gary

SYS-CON Belgium News Desk 02/20/06 03:27:16 PM EST

With the advent of BEA WebLogic Portal 8.1, a host of new technologies was introduced. These are, among others: Java Page Flow with annotations, Java Controls, and a new IDE to support it. Online tutorials were also thrown into the package to show how the new technologies were supposed to be put to work in the most effective way.

SYS-CON Brazil News Desk 02/20/06 02:24:28 PM EST

With the advent of BEA WebLogic Portal 8.1, a host of new technologies was introduced. These are, among others: Java Page Flow with annotations, Java Controls, and a new IDE to support it. Online tutorials were also thrown into the package to show how the new technologies were supposed to be put to work in the most effective way.