IBM and Yahoo have come together to launch an entry-level enterprise search product. The IBM OmniFind Yahoo Edition can index up to 500,000 documents, more than 200 file types and documents in more than 30 languages. The enterprise search is a three-click install and comes with the open source Lucene library for cross-platform, full-text indexing.

You can download the product here.


Peter explains the various options available with jar file format and how you can exploit each of them.

Click on the title to read the article.


Filed in:

BEA Weblogic Portal Team has published a capacity planning document that compiles and brings together some of the best practices around the portal performance tuning.

Check out the paper here.


Filed in:

India central government has enlisted IBM to help it build a Web portal that citizens can use to access thousands of services, ranging from business permits to housing subsidies and tax advice. Check out the details here.


Filed in:

Literally, Metadata is data about data or more precisely it is information about the data that is not, business data. The classic example would be a database schema, which uses a precise language to describe the data held in the database.

In the software development world, the Metadata is used to customize or control the behavior of software systems. Software Products provide a varied levels of configurability into their systems to accommodate a broad range of needs.

Application Developer proffessionals can leverage the same approach to make applications more adaptable to changing business conditions. They incorporate metadata into their design thinking to create more agile business systems, whose behavior can be changed outside the software development cycle.

Check out more details on Metadata here.


Pranshu have mentioned about the skills required for an architect here. I want to add some more implicit factors that I have encountered while architecting solutions that can make difference between success and failure of a project.

Whenever I start work on architecting solution for a client, I make sure that I identify and keep an eye for the following
  1. Identify the stakeholders – It is very important to identify the stakeholders in the project.
    1. Business Folks - The business folks will provide the requirements, timelines, and scope and budget availability.
    2. IT Folks - The IT folks will provide the details on the existing architecture, business applications, architecture vision and roadmap, maintenance schedule for the existing applications, environment guidelines, and standards around development, tools to be used and so on.
    3. 3rd Party Vendors - In these days of multi vendor strategies, you may have to work and co-ordinate with the multiple vendors at the client organizations. If the other vendor is strongly entrenched, he/she can make your life miserable. The success of the project will depend on the co-operation. There have been cases where delay by the 3rd party vendors might disrupt your schedules and quite possibly even the blame might come on you for not managing the project properly.
    4. SME – Next important group are the SME’s. It is very important to identify and blocking their time from the requisite SME’s on the project. You might want to book their calendar in advance. Lot of times, key people who understand the system might have left the organization (that’s why client gave you this project), so you may have to look at alternate avenues.
    5. End User - This group might be internal. So make you meet the key people and understand their expectations from the project. They will form the key factor in the User Acceptance Testing phase of the project.

    It is very important to carry both the parties along if we want to make a successful delivery. Further, identify the person who will be signing off on the artifacts that get produced.

  2. Identify the priorities – Any project will have the following pull factors
    • Time
    • Money/Budget
    • Scope

    It is very important to identify the priority of each of these for the identified stakeholder. It will help you in identifying which is critical factor when architecting the solution. E.g. If time or go-to-market is critical factor, you might want to look at creating a simple solution. If scope is huge or not defines properly, going for an iterative approach will be preferred choice.

  3. Identify the standards – Understand your client organization standards for everything – documentation, quality, software, hardware etc. The sign off on a deliverable can get struck because it does not satisfy the requisite standards of the client organization. Most of the Fortune 500 organizations have Software Review Boards – that take a call which software (including open source libraries) can be used for projects within the organization. Anything new, means more paper work and time to get the requisite approvals. Again here, the key IT folks can help you in getting the approvals on a fast lane.

Besides this, you still need to go through the rigors of approaching the project as defined. But the factors mentioned above are not really part of the regular project architecture and management process.

Filed in:

The architect observes the world
but trusts his inner vision.
He allows things to come and go.
His heart is open as the sky.

The architect doesn't talk, she acts.
When this is done,
the team says, "Amazing:
we did it, all by ourselves!"

When a great architect leads, the team
is hardly aware that he exists.
Next best is a leader who is loved.
Next, one who is feared.
The worst, one who is despised.

A good traveler has no fixed plans
and is not intent upon arriving.
A good artist lets her intuition
lead her wherever it wants.
A good scientist has freed herself of concepts
and keeps her mind open to what is.
Thus the architect is available to everyone
and rejects no one.
She is ready to use all situations
and does not waste anything.
This is called embodying the light.

If you want to shrink something,
you must first allow it to expand.
If you want to get rid of something,
you must first allow it to flourish.
If you want to take something,
you must first allow it to be given.
This is called the subtle perception
of the way things are.
The soft overcomes the hard.
The slow overcomes the fast.
Let your workings remain a mystery.
Just show people the results.

When the process is lost, there is good practice.
When good practice is lost, there are rules.
When rules are lost, there is ritual.
Ritual is the beginning of chaos.

The architect concerns himself
with the depth and not the surface,
with the fruit and not the flower.

The architect allows things to happen.
She shapes events as they come.
She steps out of the way
and lets the design speak for itself.

The architect gives himself up
to whatever the moment brings.
He knows that he is going to leave,
and he has nothing left to hold on to:
no illusions, no resistance in his mind.
He holds nothing back from the project,
therefore is ready for departure,
as a man is ready for sleep
after a good day's work.

The great way is easy,
yet programmers prefer the side paths.
Be aware when things are out of balance.
Remain centered within the design.

The architect's power is like this.
She lets all things come and go
effortlessly, without desire.
She never expects results;
thus she is never disappointed.
She is never disappointed;
thus her spirit never grows old.

Those who know don't talk.
Those who talk don't know.

Alternate:

Those who do not have a clue are still debating about the process.
Those who know just do it.

The architect is content
to serve as an example
and not to impose his will.
He is pointed but doesn't pierce.
Straightforward, but supple.
Radiant, but easy on the eyes.

If you want to be a great leader,
stop trying to control.
Let go of fixed plans and concepts and
the team will govern itself.
The more prohibitions you have,
the less disciplined the team will be.
The more you coerce,
the less secure the team will be.
The more external help you call,
the less self-reliant the team will be.


* Published in The Rational Edge

I had talked about the Portlet Container in WAS V6.0 here.

Now, this article examines the JSR 168 portlet container available in IBM® WebSphere® Application Server V6.1 and differentiates its use from IBM WebSphere Portal.

Filed in:

This article, by the WebSphere Portal Security development team, provides portal administrators with a conceptual overview of IBM® WebSphere® Portal's security architecture so that you can decide the best security configuration for your specific portal environment. You see multiple deployment scenarios for WebSphere Portal. You learn options for handling authentication, access control, single sign-on (SSO), portlet security, and Web Services for Remote Portlets (WSRP) security. Finally, you see how to secure connections between clients and the portal as well as connections between the portal and back-end systems.

Filed in:

The Energy Policy Act of 2005 is a statute which was passed by the United States Congress on July 29, 2005 and signed into law on August 8, 2005.

Among the provisions is one item that concerns our applications - Extending the Daylight Saving Time by approximately four weeks.

The bill amends the Uniform Time Act of 1966 by changing the start and end dates of daylight saving time starting in 2007. Clocks will be set ahead one hour on the second Sunday of March instead of the current first Sunday of April. Clocks will be set back one hour on the first Sunday in November, rather than the last Sunday of October.

How does it affect us ?

All applications and servers which are based on US Timezones are pre-programmed to take into account the day light savings. Now with the new changes coming in, any applications which make use of the day light savings, need to be patched to take care of the changes.

Vendors have started releasing patches to take care of the same.

WebSphere Portal
Lotus Domino
Windows OS

Sun has also released information and some of the older JDK versions need to be upgraded to take into effect the new DST timings. Check out the details here.

Recently, I was evaluating Application Monitoring vendors. Assuming, the majority of the applications are Portal based. Looking at the vendor landscape, I looked up the following vendors

* IBM Tivoli Composite Application Manager (ITCAM)
* Wily Portal Manager
* Identify's AppSight

I scored the vendors based on the feature set provided, integration with best of breed tools in respective categories, spectrum of applications (software and hardware) that can be monitored, reporting facilities, dashboard's and portal monitoring and integration.

I had thought, tools from IBM will score high, but I was surprised when Wily Portal Manager along with Intrascope Powerpacks and Extensions came neck to neck with IBM and Tivoli tools and even managed to beat in some of the categories.


Filed in:

The IBM® WebSphere® Application Server command framework wraps complicated administrative tasks into simple, user friendly command providers that a user can easily invoke to perform complex system management activities.

This article provides the WebSphere developers who want to leverage administrative functions for creating command providers, which provide the command implementation for end users.

Filed in:

Coverity has done a study on some of the most popular open source softwares to determine the software quality and security. The surprising result is that no open-source project that was analyzed had fewer software defects (per KLOC) than some of the major closed-source application. All this means, when it comes to testing the open source code, we still have a some way to go.

Results are published here.


Filed in:

Paul Duvall has done a very good feature comparison on the Continous Integration Servers available in the market. He has evaluated Cruise Control, Continuum and Luntbuild. The evaluation criteria is
* Features
* Reliability
* Longevity
* Target environment
* Ease of use

Check out the article here.


Filed in:

As the industry consolidates the ECM and Portal products, a dominant pattern is coming out, where the client is looking for business solutions provided by the best of the breed products. Means, I can have Portal Solution using FileNet as the document management, Interwoven as the content management and may be WebSphere Process Server as the middleware. Adapters are available for integration of these products into each other. So, the client instead of focusing on how to integrate these products can actually start worrying on how his business objective will be achieved. Idea is to be able to use 80% of the functionality out of the box and build just 20%. This change has led to the unique problem for the System Integration vendors.

Earlier, when the client gave the business requirements, the vendor will look at the functionality, decide on which application server, database, middleware product to use and estimate the effort. Now, with 80% of the functionality available out of the box, vendors are in dilemma, on how to estimate the effort for providing the business solution. Lot of business functionality will be available out of box, but this might require some customization to map to the requirement. Another 20% of the functionality needs to build from grounds up. In the days of pure Java development, segregating the requirements into high,medium and low and assigning a number would have sufficed. But, today, estimation has become all the more difficult, because how do you estimate if you do not what will be available out of box and what is not available. With every release, Software vendors and tom tomming about new features. But details on these features in terms of flexibility and ability to customize is missing. Hence, estimates for the integration solutions need to be really evaluated in a new light. I guess, that will again come from experience. As system integration vendors gain insight into the products, the estimates will become more scientific and less humane.

Filed in:

Light is an Ajax and Java based Open Source Portal framework which can be seamless plugged in to any Java Web Application or as an independent Portal application. One of its unique features is that it can be turned on when users need to access their personalized portal and turned off when users want to do regular business processes.

Light helps you build Ajax and Java based portal applications quickly or make it possible to integrate portal application within your main web application if you don't want to or can not to transfer your web application to a portlet application.

A portal based on Light can make applications, database information and other data sources available to end-users through a single web site. Light provides a security infrastructure so that the information and functions made available to each user can be customized on basis of the user or a role that the user has.

Within a Light portal, individual portlets can be aggregated to create a page. Currently all portlets have to be in the same application with the portal.

Check out the details here.

Filed in:
One of the new features introduced in the WAS V6.1 is the Portlet Container. What this means is , the application server now has a dedicated container that can host portlets. Though the container will provide a limited set of services.

The Portlet container has a simple portal framework, provided by the PortletServingServlet servlet. The PortletServingServlet servlet registers itself for each Web application that contains portlets. Now one can use the PortletServingServlet servlet to directly render a portlet into a full browser page by a URL request and invoke each portlet by its context root and name.

One can deploy portlet war files like any normal web application. The portlet can be invoked directly through a Uniform Resource Locator (URL) to display its content without a portal aggregation.

Portlets can be aggregated on a JSP page by using an aggregation tag library.

This development will lead to a rethink on the use of Portal Servers. Application, which are not doing small pieces of content aggregation and are not using the Portal Server features, need not go through the whole Portal Server investment.

One can start with a vanilla portal application and as the application grows , the Portal Server features like Colloboration, Search, Aggregation, Integration will start coming into picture. At that time, all the investment made in developing Portlets on the WAS V6.1 can be reused without any changes and the upgradation to the full blown Portal Server becomes easy.

(The picture is from WAS V6.2 Infocenter)

Filed in:

Last couple of months, I was working with a Team that developed standardised interface framework for accessing and using j2ee services (logging, exception handling, data access, search, cache, messaging, web services among others). Now, our next job was to sell this framework to the other teams doing IT development with in the corporation.

We developed sample applications around each of the j2ee services to showcase these.
Looking at the sample application, somebody asked a question jokingly, how do we know the framework services are really getting called and you have not hard coded some of the things.

The question got us thinking, on how we can demonstrate the actual method calls happening with out introducing or writing more code. We hit upon the idea of using AspectJ, we put in the point cuts at the service interface method calls and showcased these calls in a applet.
Now, when ever the sample application was run, the applet would display all the service interface calls being executed to the user. It was a beautiful way to get the call stack out in the open.



Filed in:

Lucene is a full-text information retrieval (IR) library written in the Java™ programming language. Now it's an open source project in the popular Apache Jakarta Project family. Discover how to implement advanced searching capabilities, and learn how to create a robust Web search application using Lucene.

In this article, you learn to implement advanced searches with Lucene, as well as how to build a sample Web search application that integrates with Lucene. The end result will be that you create your own Web search application with this open source work horse.


Filed in:

Forrester evaluated 13 leading open source software projects across approximately 40 criteria and found that six of the projects stand out as examples of excellence. The strongest Leaders are MySQL, Eclipse IDE, Apache HTTP Server, Apache Tomcat, JBoss Application Server, and PHP — thanks to their strong governance, well-defined road maps and release plans, and large and active communities. These six projects are followed closely in the Leaders category by Hibernate and Apache Velocity, the former because of its wide usage and strong support, and the latter because of its maturity and stability. Strong Performers are PostgreSQL and Spring Framework, both of which have capable leadership, active communities, and good presence in the market but don't have some of the benefits that a strong commercial supporter can provide.

Check out more details here.

IBM Internet Technology Group team is looking for Open Source CMS products to design, develop, and deploy a closed community Web site. The team tries to cover the requirements, design, selection process for the Open Source CMS and provides details on some of the customizations the team made.

Check out the article here.



Filed in:

IBM® WebSphere® Application Server includes simple and straightforward tools that remove the complexity of migrating from a previous release to Version 6.1. This overview of the migration process will prepare you for what you need to do and what you can expect so that your migration can be as quick and easy as possible.


Filed in:

This article provides an overview of new Web services features and enhancements in IBM® WebSphere® Application Server V6.1, including support for WS-Business Activity, WS-Notification, WS-I Basic Security Profile, and WS-Resource Framework specifications.


Filed in:

IBM has announced the release of the WebSphere Portal V6. I had put in a sneak preview of the IBM WP V6 features here.

There is a new article on the developerWorks detailing the technical enhancements and the improvements to the WebSphere Portal V6. Check out the article here.


Filed in:

Today, IBM has announced the acquisition of FileNet.The acquisition will allow IBM to further consolidate its offering in the ECM space, specially the high-volume transactional documents management systems. With this, IBM moves ahead of ECM and will have close to 18% share of the Document Management Market (as per IDC Research).

The acquisition leaves only Vignette, Broadvision, Stellent and Interwoven as pure play players in the market.

Keeping my fingers crossed and waiting for the next company to get gobbled up.


Filed in:

The DistributedMap interface is a simple interface for the dynamic cache. Using the DistributedMap interface, J2EE applications and system components can cache and share Java objects by storing a reference to the object in the cache. The default WebSphere dynamic cache instance is created if dynamic cache service is enabled in the administrative console. This default instance is bound into the global JNDI namespace using the name services/cache/distributedmap.

For using the DistributedMap in the code, check out the following snippet


InitialContext ic = new InitialContext();

//lookup the default cache map
DistributedMap map = (DistributedMap)ic.lookup("services/cache/distributedmap ");

//puts the key value pair in cache
map.put(key, value);

//get the value for the passed in key
obj = map.get(key);


Check out my earlier peice on enabling DynaCache in WAS here.

Filed in:

The dynamic cache service is enabled by default. However, you can enable or disable the service through the administrative console.

Steps for this task
1. Open the administrative console.
2. Click Servers > Application Servers in the administrative console navigation tree.
3. Click a server.
4. Click Dynamic Cache Service under Additional Properties.
5. Select Enable service at server startup in the Startup state field.
6. Click Apply or OK.
7. Restart WebSphere Application Server.

Filed in:
India, despite boasting of a huge pool of IT professionals has a very dismal record when it comes to contributing actively to the open source software movement. I am trying to dig into some of the reasons why India has a poor record and what can be done to set the record straight.

Factors
  1. Socio/Economic factors:
    Some of the reasons why an individual in India wants to be in the IT profession


    • Excellent salaries (compared to any other field)
    • Chance to go out of country and even settle there
    • Great working conditions /White collar job
    • Social pressure
      • Parents push their children because IT is the hot field
      • In some regions in India, having a male child in IT field and who has been out of country, means a windfall for the family, as the boy commands a hefty premium (read as dowry)
    • Lack of opportunities in other fields
    Love of technology/programming is not a factor to join the IT profession. I am talking about 99 % of the individuals here. Once you enter the field, you may start take a liking, but the top motivation factors are always the one I mentioned above.
  2. Industry Organization:
    IT is relatively a new young field in India and is currently expanding at a very high rate. Since most of the work done, relates to providing bodies to the clients and able to leverage the cost arbitrage. What this means is, if the company wants to achieve a 20%-30% YoY growth, it needs to keep hiring more people. This means to manage this ever-growing infantry of programmers, you need to have an equal number of Senior Engineers, Project Leads , Technical Leads, Project Managers and so on. Now, what you do, you promote people.

    This means, an above average person can easily expect a career growth where in


    • 2-3 year experience, person is a Senior Engineer
    • 3-5 Years experience you become a Project/Technical lead
    • 5-7 years of experience you become a Project Manager/Architect.
    The designations might vary from company to company, but everyone is promising a similar kind of growth. If a person doesn’t get this growth internally, you jump companies, to get this career growth.

    Compare this to US, where a person works for an average of 6-7 years to move to a Senior System Analyst/Senior Developer role. People would have spent minimum of 12-14 years in the industry before they get promoted to Project Managers/Architects.

    In India, anybody who applies for a job and says I have spent 6 years in programming and has no people/project management experience will have a tough time finding a job. Some niche technical skill people might survive, but otherwise for general Java/Microsoft/DB skills, getting a decent job becomes difficult. As a result, in India, it is very difficult to find a 10 year experience person doing hard core programming.

    Now, can an individual with 3-4 years of IT industry who starts moving into more people management role be expected to be contributing towards the open source? I don’t think so.

    Companies have started offering two career tracks to people – Technical and Management. HR will tom-tom about the same, but beyond a certain level, Technical people find lack of growth opportunities and have to eventually move to Management Track only.

    Companies like Red HAT has started scholarships to recognize and kick start the Open Source Program movement in India. Check out for details here and here.
  3. History:
    In the developed world, IT has been a 4 decade old phenomenon, where as IT has been a recent phenomenon in India. It’s only in the last 10-12 years; we are seeing the scorching pace at which the people are joining the IT industry. For any movement to come into mainstream the professional stream needs to embrace the soul of the movement and you need enough members to make a difference. Both of these factors, takes time.

    Open source usually takes time to grow and India lacks a long history.

How long it will take for India to start making contributions to Open Source?

My prediction:

I would say, give another 10 years. Why I say so?

  • By then we will have a big enough pool of people who have been in the IT industry for 15-20 years.
  • There would be enough opportunities for people to stick to the technical stream. Companies will start providing more meaningful technical roles. As companies start moving up the value chain, the demand for experienced technical people will start growing.
  • Opportunities in other fields will open up. Other professions will start paying well. Generation entering the field in next 10 years will do out of love of computers and technology. Money will not be the top most factors for this generation.
  • Salaries will hit a plateau. No promotions or job hops will lead to higher percentage of salaries increases.


Web services add a layer of abstraction, using open standards to represent and provide access to applications in a way that is functionally easy to understand and technically easy to use. However, Web services alone are insufficient for general integration projects. Current Web services standards lack specifications for management of the enterprise qualities of service (reliability, security) required. They also do not provide the general-purpose mediation and process management required to bridge the gaps between the needs of Web service consumers and the capabilities of Web service producers


This article describes a variety of techniques that you can use to quickly integrate Web applications into your portal running under WebSphere Portal.

It shows, how the external applications can be integrated into portal via Quick Fix solutions like

* iFrames (Web Page Portlet)
* Web Clipping Portlets

or for a long term, one can create a new Portlet using WebSphere Portlet Factory.


Filed in:

You have heard the buzz about Ajax and you are wondering if you can use it in your portal application. Well, you can, and this article tells you how to get started. One of the most expensive actions in a portal is refreshing pages. You can use Ajax to handle many user interaction events and then to apply the updates to portions of the page, without requiring a full page refresh. You can improve your portal's performance, create a cleaner overall portal application architecture, and, most of all, make your users happier with such a responsive portal.


Filed in:

It is also possible to log into the portal by using the following URL which includes the user ID and password:

http://server:port/wps/portal/ cxml/04_SD9ePMtCP1I800I_KydQvyHFUBADPmuQy?
userid=user ID&password=password

where you need to replace the variables for server,port, user ID, and password with the values set for your environment. For example, this method is suitable for automatic logon by a utility program for administrative purposes.


Filed in:

When working with WebSphere Portal Server, whenever the client's session gets timed out, the client gets redirected to the ErrorSessionTimeout page. The call to this page is hardcoded inside the WPS. Anthony (Joey) Bernal mentions in his blog, a hack to overcome this. He quotes


The ErrorSessionTimeout page actually gets called when security is enabled on the portal. My belief is that the location and filename are hardcoded into the portal, becuase there does not appear to be any way to change this page being called. Doing some research I came across the following snippet of code.

< script language="javascript">
< !--
-- >
< /script >

Placing the code in the ErrorSessionTimeout.jsp will redirect the user to the defined location. The jsp file is loacted at /installedApps/servername/wps.ear/wps.war/screens/html. Ok, it is not perfect, but it works!
Anyway, thinking about it further, there is another options that I completely forgot. Using HTTP Server rewrite rules and redirecting the user to the home page whenever they are directed to the Timout screen.



Filed in:

Every application has business logic. The logic might be some kind of validations or making calls in an order or doing some number crunching and spitting out the results. The business logic now can reside in multiple places. The business logic can reside from Presentation layer to business layer to the data layer ( even go down to Stored Procedures).

In my experience, what I have seen, the team's expertise decides where the business logic resides. If the team is strong in DB skills and DBA's have agreat say, the business logic ends up in database. If the GUI is very important and team does not much skills in n-tier architecture, the business logic ends up in presentation layer. If team has worked with some kind of EJB's or has object mapping experience (either Toplink or Hibernate ), the team will create a middle tier (either POJO's or EJB's) to handle the business logic.

I am not debating the merits and demerits of where the business logic should reside. What I am trying to say is, why it resides where it is resides.

I was evaulating JMS vendors for our messaging needs. I could not find any one single source which details the various JMS vendors in the market. So, I have compiled a list of vendors which came across

Open Source Implementations
ActiveMQ
JBossMQ
Mantaray
OpenJMS

Others
Arjuna
FioranoMQ
iBus
Joram
Nirvana
SonicMQ
SwiftMQ

then you have the biggies of the messaging world.
IBM
TIBCO
WebLogic
Oracle
Sun

JBoss SEAM 1.0 represents a redefinition of web application architecture that extends the POJO + annotation-driven and configuration-by-exception programming model of EJB 3.0 into the entire web application stack. It integrates Java EE 5 technologies like EJB 3.0, JSF and JMS into a unified programming model and narrows the semantic gap between the business domain and the Java programming language by deeply integrating technologies like jBPM for business process and user interaction modelling and Drools for management of business rules.

Seam 1.0 has the following new features:

* Seam Remoting - an AJAX-based remoting layer for EJB 3.0 components and JMS - allows client-side JavaScript to call EJB session beans directly
* Support for JSR-168 compliant portal engines such as JBoss Portal
* Elegant handling of internationalization and JSF messages via EL-based interpolation
* Helper components for JMS senders/publishers
* JSF tag library
* Redesigned XML-based configuration facility
* Support for integrating databinding architectures
* Eventing architecture for loosely-coupled components
* Seam Logging
* JBoss Cache integration for cluster-wide state replication
* Experimental Drools integration
* Compatibility with the Java EE 5 reference implementation
* Provides unique contextual state management architecture

Check out for more details here.

JBoss Rules is the supported and branded release of the Drools project and part of the JBoss JEMS product range. Drools is an enhanced Rules Engine implementation, ReteOO, based on Charles Forgy's Rete algorithm tailored for the Java language.

Drools provides for Declarative Programming and is flexible enough to match the semantics of your problem domain with Domain Specific Languages.

Check out the same here.

The wsadmin scripting interface is a useful interface for managing your WebSphere® configuration, particularly when you need to automate tasks or perform other custom management. However, using Java Management Extensions (JMX) extends this powerful solution even further, allowing administrative capability to be directly embedded in the functions of your J2EE application.

This article explains how a wsadmin script works, and how it can be easily rewritten as a servlet to accomplish the same task in JMX. We briefly discuss how WebSphere maintains its configuration information in XML files, and how equivalent JMX code can be used to accomplish what is done by way of wsadmin. Using IBM Rational Application Developer, the example demonstrates how JMX can provide a valuable solution in advanced custom administration for system integrators, independent service vendors, and application developers.


Filed in:

I had talked about scaling the existing applications to work in a cluster environment here. Subsequently, I had posted on findings on the products available in the market Terracotta here.

As part of the same study, I came across this article, which details what all goes into building a strong, extensible, and flexible J2EE apps, tap into a WebSphere® cluster environment. This article describes what you need to consider when designing a Web-based application in a WebSphere Application Server cluster environment, including application file update and synchronization, serialization of session objects, and dynamic caching.


Filed in:

Subversion 1.3.2 has been released. Subversion has been touted as the next generation of CVS, where it takes on the strengths of CVS and has added quite a new set of features to the release.

Check out here.


Design your processes and set up your environments for developing, building, and deploying your portal. Learn how to control the source code and build components, ways to manage continuous integration and deployment to test environments, and how to deploy production release packages. Learn best practices, which tools to use, and strategies for creating you own processes.

Check out here.


This collection of best practices, tips, and suggestions from the IBM® WebSphere® Portlet Factory development team is for developers who are either currently using or are expecting to use WebSphere Portlet Factory.

Developers with any level of experience can use Portlet Factory to quickly create complex portlets and integrate them with their WebSphere Portal based portals. As with the use of any tool, there are good practices for architectural, application structure, and solid implementation. This document provides guidance for those practices based on many person-years of experience. It also includes a section on selecting Builders to help you navigate the Builder palette.



Filed in:

DB2 9 introduces pureXML® support, which means that XML data is stored and queried in its inherent hierarchical format. To query XML data, DB2 offers two languages, SQL/XML and XQuery. You can use XQuery and SQL separately, but you can also use XQuery embedded in SQL and vice versa. This gives you a lot of flexibility and options for querying your XML data.

Check out more here.

This tutorial shows how to develop a WebSphere portlet application for IBM® WebSphere® Portal V5.1 using Eclipse and WebSphere Portlet Factory. It also shows you, how to use WebSphere Portlet Factory to develop a portlet that retrieves and displays data from a database.


Filed in:

I was looking at products for scaling up an existing client/server kinda of application. I am posting here my findings on Terracotta.

TerraCotta

Allows the applications to be clustered to run on multiple JVM’s without changing source code and to get linear scalability and total fault tolerance. Terracotta injects clustering and caching into off-the-shelf JVMs.

How it works?
The technical approach that Terracotta uses is client/server, relies on byte code manipulation to track object changes, uses XML descriptors to define data synchronization points, and communicates object deltas. Theoretically, it should have efficiency advantages if you have a very large object graph and you frequently access that graph but only change small bits of information within it.

Technical Architecture
At the heart of the Terracotta architecture sits the Terracotta Server. Terracotta provides a set of infrastructure software installed on an inexpensive server. Multiple Terracotta Servers can be clustered together to make a high-availability hub shared by many application servers, even across dispersed geographies.
The server's primary job is to replicate state across application servers in the data center, manage connections from various clustered JVMs, and ensure coherence and consistency of application data. A single Terracotta server can provide clustering services for all of the Terracotta modules in use in the Data Center.
Existing servers within the data center need only have the Terracotta libraries installed on them. Terracotta libraries provide various 'modules' which communicate with the Terracotta server and enable a variety of clustering services.

Terracotta Fail over
The Terracotta Server can operate with a 'hot back-up' to meet availability requirements. In the event of a failure in the active Terracotta Server, the back-up will automatically take over transactions from various clustering clients and ensure that the replicated state is maintained. No state or cache information is lost in any application node. And, failover takes only seconds. Connected clients will notice only a brief pause during the failover process.

Advantages
• API Less – One can simply plug in Terracotta (install the libraries), configure (edit appropriate configuration files), and play (start Terracotta and run the application)
• Provides a management console to provide metrics about connected clients, object/content caches

Disadvantages

• Requires an external server
• Supports session replication for WebLogic Server 8.1 and Tomcat 5.0
• Terracotta server required a hot backup for 24X7 applications

IBM WebSphere® Portal V5.1.0.1 uses a default method to determine the locale of a user request. Portal applications sometimes need to override this method with a custom method. For example, your application might need to encode the locale in the portal URL. Alternatively, when the navigation state is not in the URL, the application might need to access the locale from the user's profile or from the browser preferences.

This article, for portal developers and architects, shows how to design a site that needs to be rendered in multiple locales, and the application selects the locale based on business rules.

You have built a Java Application. Now, as the application usage increases, the application needs to be scaled up. The only way to go is scale up (horizontal or vertical). Now the problem is that the application was never built to run in multiple JVM’s. There is no data synchronization, failover, session replication, distributed cache mechanism built in.

Now what can we do. Add more servers( JVM's), but how do we tackle the problem of a common repository for user sessions, transactional data and cache.

This is the need that the following products intend to fulfill.

Tangosol Coherence
JBoss Cache
Gigaspaces
GemStone
Terracotta

These products allow you to distribute your data but still making the application believe that their is a single cache and single user sessions repository.

Liferay Portal 4.0.0 has been released, with fine-grained permissioning, support for Websphere 6, and Weblogic 8.x, Alfresco integration, JSR-170 support, full-page caching, and more. It includes many bundled portlets and themes, and can be deployed on most application server/database combinations, including deployment in servlet containers (as opposed to a full application server).

Liferay also supports single-signon and user customization.

This compilation of tips and guidelines from services, development, and support personnel about IBM® Workplace Web Content Management™ is based on daily product experience including real customer engagements. This information includes selected topics and applies to version 5.1.0.x.; other versions might have different best practices. If you are currently involved in or just considering implementing a Workplace Web Content Management system, you can use it to help guide your work. You need a basic understanding of the Web Content Management product to understand the topics discussed.


Continuing my previous post which detailed on what Rational Tools are available to build and construct, here is the list of the Tools from Rational used for Software Testing.

Testing tools enable running quality assurance on software products, testing for code consistency, quality, functionality and performance.

  • IBM Rational Manual Tester: A manual test authoring and execution solution employing principles of automation, organization and reuse to innovate a commonly used testing practice.
  • IBM Rational Functional Tester: An advanced, automated functional and regression testing tool for testers and GUI developers who need fine-grained control and flexibility for their testing of Java, .NET and Web-based applications.
  • IBM Rational Performance Tester: A performance test creation, execution and analysis tool for teams validating the scalability and reliability of their Web-based applications before deployment.
  • IBM Rational PurifyPlus allows developers to create faster, more reliable J2EE and J2SE code. It provides host-based memory profiling, performance profiling, and code coverage analysis.
  • IBM Rational Test RealTime provides host-based memory profiling, performance profiling, and code coverage analysis for the J2SE/J2ME developer, plus adds runtime tracing, and does so for cross-platform development efforts. Rational Test RealTime also has an integration with JUnit to extend the value of the Java industry's popular unit testing tool to the J2ME and embedded marketplace.

I have always found it difficult to keep track of the RAD tools and where are they supposed to be used. Today, I am listing down the RAD Tool options for Design and construction phase.

Design and construction tools
IBM Rational provides tools for architecture, design modeling, construction, model-driven development, architected rapid application development (RAD), component testing and runtime analysis activities. These tools help developers maximize their productivity when building business applications, software products and systems, and embedded systems and devices.
  • IBM Rational Software Architect: A design and construction tool for software architects and senior developers creating applications for the Java platform or in C++ that leverages model-driven development with the UML and unifies all aspects of software application architecture
  • IBM Rational Software Modeler: A UML-based visual modeling and design tool for architects, system analysts, and designers that need to ensure that their specifications, architecture, and designs are clearly defined and communicated with their stakeholders
  • IBM Rational Web Developer for WebSphere Software: Build, test and deploy Web, Web services and Java applications with an IDE that is easy to learn and use.
  • IBM Rational Application Developer for WebSphere Software: Quickly design, develop, analyze, test, profile and deploy Web, Web services, Java, J2EE and Portal applications with a comprehensive IDE.
  • IBM Rational Rose Technical Developer: Supports the most advanced modeling constructs, including model execution and fully executable code generation, resulting in the highest levels of productivity.

Hopefully, it helps in selecting the right tools for the right work.

Google has launched the GWT (Google Web Toolkit ). It's a Java software framework for developing AJAX applications. With it, you can write your applications in Java, and use the Google Web Toolkit Compiler to convert that code into browser-compliant Javascript and HTML. With the Web Took Kit, you can write an entire application without ever using Javascript.
Sounds too good !

As an application developer, you have all the liberty to log anything. But are there any guidelines on what is the bare minimum an application should log?

Things like Method entry/exit, method parameters, info logging in the algorithm, exception logs, Transaction time period and so on.

One can log anything, but any guidelines/experience which says the application should log minimum of these things.

Join the debate here

When configuring WPS for personalization, there are 3 options:

Simple filtering A site displays content based on predefined groups of site visitors. For example, if a site visitor is in the Human Resources department, the site provides access to URLs containing Human Resources policy manuals.

Rules engines
In a rules based system, the site owner defines a set of business rules which determine what category of content is shown when a certain profile type visits the site. An example would be: Display all four wheel drive SUVs to visitors in the northeast in the 21 to 35 age group.
This approach has the advantage of driving the site's behavior with the business objectives of the site owner. The site owner is usually the owner of a marketing campaign or some other business manager.

Collaborative filtering
A site visitor rates a selection of products, explicitly or implicitly. Those ratings are compared with the ratings offered by other visitors. Software algorithms detect similarities. For example, a visitor receives book recommendations based on the similar purchases of others.

The XFire team has released version 1.1, an open source Java SOAP framework with support for Web services standards, Spring, JBI and pluggable bindings.

New features in this release include:

MTOM attachment support
WS-Security support
Improved WSDL code generator

Sometime, I had talked about the WebSphere's Dyna cache feature here. There is a new article that details about to design your application to make use of the WAS Dyna cache feature from day one. Check out the article here.

Adobe labs has released an Ajax framework. The framework gives javascript libraries that will help you get started on building Ajax enabled application. Examples of how to use the Spry libraries are also provided. Check out the framework here.

For any new technology, the first thing is to build a HelloWorld kind of Application. I found a good tuturial on helping you build your first Ajax application here.
Guideline Effect on functionality Effect on performance
Remove Show tools icon from the toolbar Prevents users from displaying icons on pages and portlets used to arrange or remove content on the
page.
High impact on pathlength required to generate the page
Remove enrollment icon from the toolbar Prevents new visitors to the site from creating a new account for themselves. High impact on pathlength required to generate the page
Remove self care icon from the toolbar Prevents users from updating account information. High impact on pathlength required to generate the page
Remove AdminLinkBarInclude.jsp Removes context-sensitive links that allow authorized users to create a new page, edit the current
page, or assign permissions to the current page.
High impact on pathlength required to generate the page
Remove <portal:favoritesLoop/> and supporting code Removes the ability for users to bookmark pages in the portal for quick retrievability High impact on pathlength required to generate the page
Shrink lines of text to remove white space With some editors, white space might be used to aid in readability during theme development Low impact on bandwidth required to transmit the page.
Change all HTML comments to JSP comments None Low impact on bandwidth required to transmit the page.


WebSphere Portal supports the use of tags from the JSP Standard Tag Library (JSTL). Portal themes, skins, and screens can retrieve translated text by using the fmt tags from the JSP Standard Tag Library (JSTL). This method is preferred over using the tag from the engine tag library, which is deprecated. The following tags from the JSTL tag library are used to retrieve translated text:

&ltfmt:setBundle/> - specifies the resource bundle to use.
&ltfmt:message/> - specifies the key to retrieve from the bundle and writes the value to output.

The underlying getLocales() method of the HTTPServletRequest is overwritten to return the language preference in the user profile, if available.

Support for the JSTL tag library is provided by WebSphere Portal. To use the JSTL tags, the following directive must be provided in the JSP.

<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>

The following example shows how the HTML help link in the toolbar can be created using the JSTL tags for the link text.



<%-- help button --%>
&lttd class="wpsToolBar" valign="middle" align="" nowrap="nowrap">
&lta class="wpsToolBarLink" href='/InfoCenter/help/index.html' target="...
&ltfmt:setBundle baseName="nls.engine">
&ltfmt:message key="link.help"/>
</fmt:setBundle>

</a>
</td>


Test this code by changing your language preference in the portal user profile and logging back in to the portal.


Learn how to exploit WebSphere® Portal V5.1 key capabilities in an IP-TV (Television over Internet Protocol) environment. You see how to configure a portal for heterogeneous Digital Television (DTV) services to enable a central "home dashboard" for communication and entertainment on a TV. Check out the article here.


This guide describes a comprehensive procedure for installing, configuring, and building an IBM® WebSphere® Portal V5.1 cluster.


With Apache Pluto, Java™ developers have a freely available tool for testing whether their portlets comply with the JSR 168 Portlet Specification. This article takes you thru the steps of, install Pluto and build, compile, package, and deploy a simple portlet to Pluto to test it for JSR 168 compliance. You'll also get a hint of what's in store for the next version of the Portlet Specification.


CMS Watch has release the Enterprise Portal Report that provides a comprehensive overview of Enterprise Portal products and best practices, including comparative surveys of 13 Enterprise Portal products, as well as short descriptions of several other vendors.

The vendors covered are

Infrastructure Vendors
BEA: WebLogic Portal
BEA: AquaLogic User Interaction (Plumtree G6)
IBM: WebSphere Portal Server
Microsoft: SharePoint Portal Server
Oracle: Oracle Portal
SAP: SAP Enterprise Portal
Sun: Sun Java System Portal Server

Specialty Portal Products
ATG: ATG Portal
Broadvision: Broadvision Portal
Vignette: Vignette Portal

Major Open-Source Portals
JBoss: JBoss Portal
Liferay: Liferay Portal
Plone: Plone

I had quoted an execellent article on J2EE clustering here. Recently, I came across another article from the same author on Do's and Don'ts when designing your application for a Clustering environment. Check out the same here.

Sometime back, I have written about using the Portlet Services here. To create and deploy the Portlet Services, please check out the article here.


Sharing data across portlets usually leads us to the use of session objects. Most of the best practices recommend not overloading or overusing the session object, as it can be detrimental to the health of the application and the server.

So, what ways are provided by the WebSphere Portal Server to share the data across the portlets?

As per the JSR 168 spec, the PortletSession objects must be scoped at the portlet application context level. Each portlet application has its own distinct PortletSession object per user session. The portlet container must not share the PortletSession object or the attributes stored in it among different portlet applications or among different user sessions.

The setAttribute method of the PortletSession interface binds an object to the session into the specified scope.

*************************************************************
PortletSession session = request.getPortletSession();

session.setAttribute("app-scope-attribute", "value", PortletSession.APPLICATION_SCOPE);
session.setAttribute("portlet-scope-attribute", "value", PortletSession.PORTLET_SCOPE);
session.setAttribute("no-scope-attribute", "value");
*************************************************************



Filed in:

The command caching feature in WAS provides the ability to actively cache the results of EJB methods. Storing commands in a cache for reuse by subsequent callers allows requests to be handled in the business logic tier rather than in the data tier, where processing is more expensive.

This tutorial demonstrates how to use WSAD to build, deploy and run an enterprise application that uses the new command caching functionality in WAS.

If servlet caching is enabled on the application server, the portlet cache holds the complete output of the portlet by portlet state. As a result, the portal server calls the portlet's service or render methods when the user changes the portlet state.


To enable local caching, check the Enable Servlet Caching option in the administrative console for the application server.

The portlet indicates how long, in seconds, its output should be cached in the portlet deployment descriptor.

JSR 168 cache settings
< expiration-cache > 300 < /expiration-cache >

A value of -1 indicates that the portlet cache never expires. A value of 0 indicates that the portlet is never cached, which is also the behavior if the portlet descriptor does not provide cache settings.

Modifying the local cache at runtime

For JSR 168, the portlet window can modify the expiration time at runtime by setting the EXPIRATION_CACHE property in the RenderResponse, as follows:

RenderResponse.setProperty(
PortletResponse.EXPIRATION_CACHE,
(new Integer(3000)).toString() );





The following code snippet shows how to render a breadcrumb trail that shows the current selection path.
****************************************************************





<%@ taglib uri="/WEB-INF/tld/portal.tld" prefix="portal" %>

<%@ page import="com.ibm.portal.model.NavigationSelectionModelHome" %>

<%@ page import="com.ibm.portal.model.NavigationSelectionModelProvider" %>

<%@ page import="com.ibm.portal.navigation.NavigationSelectionModel" %>

<%@ page import="com.ibm.portal.navigation.NavigationNode" %>

<%@ page import="com.ibm.portal.ModelException" %>

<%@ page import="java.util.Iterator" %>

<%@ page import="javax.naming.InitialContext" %>

<%@ page import="javax.naming.Context" %>

<%@ page import="javax.naming.NamingException" %>


<%

try{

  Context ctx = new InitialContext();

  NavigationSelectionModelHome home = (NavigationSelectionModelHome)

  ctx.lookup("portal:service/model/NavigationSelectionModel");

  if (home != null) {

    NavigationSelectionModelProvider provider =

    home.getNavigationSelectionModelProvider();

    NavigationSelectionModel model =

    provider.getNavigationSelectionModel(request, response);

    for (java.util.Iterator i = model.iterator(); i.hasNext(); )

    {

      NavigationNode node = (NavigationNode) i.next();

      if (i.hasNext()) {

        %>

        <a href="<portal:navigationUrl type="link" varname="<%=node%>"/>">

        <portal:title varname="<%=node%>"/>

        </a>

        <

        <%

      }

      else

      {

      %>

      <wps:title varname="<%=node%>"/>

      <%

      }

    }

  }

}

catch (ModelException mx) {

%>

< p> < span style="color:#ff0000">A model exception occured</span></p>

<%

}

catch (NamingException nx) {

%>

< p > < span style="color:#ff0000"> A naming exception occured</span></p >

< %

}

%>


****************************************************************

The example uses a JNDI lookup to obtain the navigation selection model. The model is then iterated and for each node a title is produced using the <portal:title/> tag. Until the last node is reached the <portal:navigationUrl/> tag is used to generate links to the referenced pages. The code can be put in
the WebSphere Portal default theme (Default.jsp)


Filed in:

IBM is planning to release WPS 6 sometime about in 3rd Quarter 2006. I recently had a chance to check out some of the new features, WPS 6 will be getting shipped with.

* Updated Themes and Skins, Roll over menus
* Adding portlets have become easy. Now, one can easily drag and drop the same on to the page
* Document Manager look and feel have been updated. Out goes the drab look of the earlier Document Manager Portlet
* The Portlet search has been improved and ability to integrate better with external search engines
* After the BowStreet acquisition by IBM, the same have been integrated in WPS. So, now you have the WebSphere Portal Factory and Portal Application Templates to jump start your portlet development
* The WCM component has also undergone the look and feel change, with simplified administration and the same has been integrated with portal administration
* Portal Personalization has been improved, now the personalization rules can be applied to both portlets and portal pages
* Another new feature is the ability to bind the WPS with multiple LDAP's. This will go a long way in helping the user management.
* Improvements have been made in terms of scalability and performance of portal sites

Must say, exciting times are ahead for the WPS folks. I am eagerly waiting for the release of WPS 6.

Filed in:

Interested in becoming an IBM Certified Associate Developer? This series of seven tutorials helps you prepare for the IBM certification Test 255, Developing with IBM Rational Application Developer for WebSphere Software V6.

WPS 5.1 has introduced Puma SPI (Service Provider Interface) for accessing the information about the WPS users and groups. The PUMA SPI provides interfaces for accessing the profiles of a portal user or group. You can use it to find, create, modify, and delete users and groups, as well as profile information about the currently logged-in user.

You can download the Javadoc of the complete SPI from here.

Filed in:

Accessibility is the practice of ensuring that people with disabilities have meaningful access to the information and function provided by computer and information technology. An accessible portal page is one that meets accessibility guidelines, including:

* Lets users navigate by using only the keyboard
* Lets users select font sizes, colors and color contrast combinations
* Supports assistive technologies, such as screen readers and closed captioning

Incorporating accessibility for people with disabilities into portlet development need not be difficult or costly. This article will get you started.

"Eclipse Review" has been launched. All the fans out there, who think that Eclipse is the best thing that ever happened to Java IDE, then do check out the magazine at
www.eclipsereview.com

Portal Search has undergone significant changes in the WPS V5.1

Search Portlets
There is a new Portal Search Box and Search Center portlets that presents a search box on every portal page. When the users enter a search string and click Search, the portal takes them to the new Search Center portlet and applies the search criteria and shows them the search results.

Catalog
Another, new development is the Portal Search can be assigned to external/internal web sites. Portal Search allows crawling and indexing portal pages. The crawler can fetch and index all pages with portlets to which it has access rights. This way you can enable users to search those pages. You can define which portlets on which pages you want to make searchable. You can do this by granting the required access permissions to the crawler user.

Security
Another feature is limiting the search results based on the user privileges. Each individual search collection is now a separate portal resource. You can give users access permissions on them and thereby make different search sources available to different users or user groups. This applies to all search collections. For example, in the Search Center users see only the tabs for those search collections to which they have access.


Some of the drawbacks, I encoutered is the lack of availability of search features for anonymous users. Also, settings up the search with results in mulitple languages is very tedious. The whole crawlong and cataloging of the pages and documents takes too long.

Filed in:

The logout can be initiated by a URI that is explicitly selected when the user clicks on the logout button (which has been added by the aggregation engine to every page banner). Alternatively, the logout can be initiated implicitly through a session timeout that occurs after a specified time of inactivity.

The portal logout performs the following actions:

1. Suspend User Session. The user’s portal session (the portal’s navigational state) is persisted. The HTTP session is invalidated.

2. Portlet user logout. The portlets are notified of the event user logged out to give them the opportunity to finalize (trans-)actions that need to be terminated.

The following steps are performed only when the logout is initiated by an explicit user action. They are not performed when the logout is a consequence of a timeout.

3. WebSphere Application Server logout. The user’s credential token is marked as invalid, and a respective cookie invalidation command is added to the response.

4. Browser redirect (302). The browser is redirected to render the post-logout target.

HTTP Basic Authentication has the following known disadvantage. The browser caches the user ID and password and sends them with every request to the same target. Because there is no standardized mechanism through which the browser is notified of a user-initiated logout, the browser continues to implicitly log in the user, as soon as the same target is accessed again.

In the case of an authentication proxy, WebSphere Portal needs to be set up to redirect after logout to the authentication proxy’s logout page. This way the authentication proxy is also notified of the logout. If a user does not logout explicitly, the proxy cannot be notified of the portal session timeout and the proxy session will time out eventually as well.

Filed in:

WebSphere Portal lets you customize the portal login and logout procedures at various places. The following modifications are possible:

* Specifying the post-login and the post-logout redirection policy and targets.

* Adding custom JAAS login modules that are used to authenticate a user and/or populate the portals user JAAS Subject with principals or credentials.

* Securing the login interactions and/or the personalized portal pages using SSL.

* Extending the portal login and logout action classes.


Filed in:

Dynamic UI management deals with a special use case of the dynamic addition and removal of dynamic pages and portlets (called dynamic user interfaces or dynamic UI) based on user interactions. The layout of a dynamic page is defined by a page definition, which is a static portal page acting as the master copy. Because of their dynamic nature, pages and portlets are not persisted in the portal database, and have a maximum lifetime of the user's session with the portal. They can also be closed prior to the end of the session, either programmatically or by the user.

You can use dynamic UI management to:

* Increase usability by keeping the number of pages in a portal, and number of portlets on a page, to a minimum.
Based on user interaction, you can pages and portlets to be displayed at the moment they are required, and removed when they become obsolete.

* Facilitate reuse of components.
Single pages and portlets can be parameterized with the current application context so that they seamlessly integrate with the calling application.

* Support multi-page applications.
An application can use multiple pages; for example, to implement a wizard dialog.

Closely related to dynamic UI management is the concept of page and portlet context passing. You can use this mechanism to dynamically launch pages or portlet that are parameterized with the current application context; therefore, a seamless integration with the portlet that created the dynamic UI can be achieved. The dynamic portlets will receive this dynamic UI context through property broker events when the dynamic page is launched. The dynamic UI programming model is closely aligned with the property broker model.

More details about the Dynamic UI model can be found in the infocenter.

When programming for WebSphere Portal V5.1.X, and programmers coming from the traditional Web application world face the challenge: how to create Uniform Resource Locators (URLs). The portal environment poses special requirements on components that need to create URLs; therefore, URL generation in the portal environment is a bit more involved. The article delves into how portal components can generate URLs using WebSphere Portal Version 5.1.0.1 System Programming Interfaces (SPIs) that go beyond what the portal JSP tags. Finally, you see how to use these SPIs in an example which implements a navigation breadcrumb trail.

Filed in:

There are several use cases when a portlet needs to obtain the object ID used to uniquely identify a portlet or a page. For example, the object ID of a page definition is required for a portlet to launch a dynamic instance of that page. You can use the lookup() method of the JNDI Context class to obtain the object ID for a portlet or a page, passing the unique name of the page or portlet. As an alternative for portlets, you can obtain the object ID by using JNDI lookup() and passing a combination of the portlet application ID and the portlet name.
• For JSR 168 compliant portlets, the portlet application ID is the value of the ID attribute of the element in the portlet.xml. However, this attribute is not required by the Java Portlet Specification. If the ID attribute is not set, the portlet WAR file name is used as the portlet application ID.
• For IBM portlets, the portlet application ID is the UID attribute of the element. This attribute is required.
The following example shows both ways to find an object ID.
************************************************************
// initialization
Context ctx = new InitialContext();

// portal:uniquename prefix is required for unique name lookup
Name uniqueName = new CompositeName("portal:uniquename");

// portal:config/ prefix required for portlet definition lookup
Name portletName = new CompositeName("portal:config/portletdefinition");

// the unique name assigned to the page is example.org.page
uniqueName.add(org.example.page);

ObjectID oidForName = (ObjectID) ctx.lookup(uniqueName);

// appID and portletName have already been set programmatically
portletName.add(appID);
portletName.add(portletName);

ObjectID portletDefOID = (ObjectID) ctx.lookup(portletName);
************************************************************
The Name used for the lookup() method is created from a CompositeName, which is prepopulated with the required portal prefixes enclosed in quotes. This technique is used to avoid having to escape special characters in the prefix.

To create more complex portlet applications, using frameworks can save a lot of development effort and assure that these portlet applications are well-designed and maintainable. WebSphere Portal supports three different frameworks: Struts, Java Server Faces, and the JSF Widget Library.

Struts

Struts is one of the oldest Web development frameworks, and it has a very large developer community and very good tools support. Struts is an open source project at Apache [Struts] and was created to provide servlet and JSP programmers with a multi-page, Model-View-Controller (MVC) framework. Because Struts was developed for servlets, it does not work out-of-the-box with portlets; portlets have the MVC patterns strictly built into the interface, with an action and a render phase. In addition, the portlet and servlet request/response are different and must be adapted. WebSphere Portal provides a special version of the Struts V1.1 library that was modified to support JSR 168 portlets on WebSphere Portal.

Java Server Faces (JSF)

Java Server Faces is a UI framework for Java Web applications which was standardized through the Java Community Process. Because it is quite new, it took portlets into account and can work with portlets and servlets out-of-the-box. In addition to the UI components, JSF also provides infrastructure support for state handling, validation, and event processing for these components. It is a very powerful and flexible framework that works well with portlets.

WebSphere Portal supports JSF by including the JSF library so that themes and skins can utilize this UI framework. Rational Application Developer provides tooling support. You can create JSF-based portlets using a wizard, and you can use additional JSF UI widgets that portlets might use.

JSF Widget Library (JWL)

JWL is provided by Rational Application Developer and enables portal and portlet programmers to use an additional widgets based on JSF. A noteworthy feature of this library is that these widgets have client capabilities. The widgets can perform processing on the client in order to update their views, which saves round trips to the server, dramatically improving the user experience because the response time is shortened by orders of magnitude. You can deploy WebSphere Portal portlets which use these widgets just like any other portlets.

Filed in:

Last time, I talked about the Release process for WPS using XMLAccess as the tool, here. Now, I going for more details on the XMLAccess to help gain an indepth understanding of the tool.

Why use XMLAccess
The major benefit of XMLAccess is its ability to update pages and portlets without losing user customization. If you perform your updates via XMLAccess, any user customization to a page or a portlet is retained because the object IDs are retained.

For example, the organization may have deployed a stock portlet that the user can customize to monitor certain stocks by adding just those stocks to the portlet. If you update this portlet, you do not want the user customization to be lost. The XMLAccess tool allows you to maintain the user’s customization. When exporting and importing via the XMLAccess tool, the object IDs of the portlet application are maintained. When a user customizes a portlet or a page, these customizations are stored in your back-end database. All these customizations are stored relative to the actual portlet application. The key that ties all of these customized versions of a portlet or page back to its parent is the object ID.

How XMLAccess works
The XMLAccess command line client is a small separate program that connects to the server using an HTTP connection, which allows you to configure the Portal remotely. The XMLAccess command is located in the wp root/bin directory of the Portal server and is xmlaccess.bat (on Windows) or xmlaccess.sh.

The syntax for the command is as follows:

xmlaccess -user wpsadmin -pwd itso -in file.xml -out result.xml -url myhost:9082/wps/config

In the command line, use the following file names:

* file.xml: The name of a file containing the XML request (configuration export or update) that should be processed.

* result.xml: The name of the result file containing the XML output (configuration export). You can later use that file to re-import the exported configuration.

* url: The URL to access the Portal configuration servlet. This URL consists of the Portal host name, the base Uniform Resource Identifier for the Portal, as specified during installation (for example /wps), and the servlet extension /config.

You can use the XMLAccess tool to transfer a complete configuration, including:
* Portlets
* Access Control List
* Portal Web application configurations (portlet applications)
* Portal skin definitions
* Portal theme definitions
* Portal portlet configurations
* Portal site map (pages, labels, and links)
* Portal URL mappings

With the XMLAccess tool, you can also:
* Load the WebSphere Portal default portlets configuration during the initial install and transfer parts of Portal configuration.
* Create and modify existing Portal artifacts incremental releases.
* Delete Portal artifacts. However, you must manually add delete commands to the input file. Keep in mind, although the XMLAccess tool is a bulk transfer utility, the command does not know history. It only knows the Portal configuration at specific point in time.

Filed in:

Although there is no automated method to move Portal applications from one environment to another, there are two options:

* Completely replace the old release with a new release. The drawbacks of this option is that any data that was customized by the user is lost. While this option works, it is not the recommended way.

* Use the XMLAccess tool to load incremental or differential release

The XML configuration interface

The XML configuration interface is more commonly referred to as the XMLAccess tool, because xmlaccess is the command that is executed. The tool provides a batch processing interface for Portal configuration updates and allows you to export an entire Portal configuration or parts of a configuration. For example, you can process and export specific pages to an XML file. You can then re-create the exported configuration from a file on another Portal.

While XMLAccess is as simplified bulk transfer utility, there is no magic button that automatically moves all the components of your Portal to the next environment. The XMLAccess tool is best for the initial loading of Portal application and for doing incremental releases. However, it is increasingly being used as a command line Portal administration tool.

I will talk more about XMLAccess next time.

Filed in:

Last time, I blogged about when not to use portals. This time, I am blogging about when portlets make sense. So,now if your goal is to bring together your Web applications and information into one convenient place, portlets are the obvious choice. If your development goals are somewhat different, consider these other portlet and portal server features that you might want to take advantage of:

* Portlets can be extended to work on many client devices. The users can move from computer to computer, and mobile device to mobile device, and still use the infomation and applications they need.

* Portlets allow you to easily customize their content for different user groups, and individual users can rearrange and tailor them to their needs.

* One can make the portlets have a unified look, and change their appearance quickly, using Cascading Style Sheets along with themes and skins that the portal server provides. You can create your own themes and skins as well, to better reflect your company's image and style.

* Portlets can be published as Web services, so that companies outside of your portal server's environment can easily write programs to use them.

* The IBM WPS provides excellent support for internationalization, beyond what the Web Application server provides. It is straightforward to develop portlets that will display correctly for international users, even in double-byte or bidirectional languages like Chinese and Arabic.

* Portlets help divide complex applications into tasks: in general, one group of closely related tasks equals one portlet. WPS's administration portlets are a good example: like the administration tasks can be broken down into categories (Portlets, Portal Settings, etc.), groups of related tasks (Manage Users, Manage User Groups), and single tasks (Search for users, Create new user).

* Portlets make it easy to add features to your applications later. If the new feature is large, one can create a new portlet. For small updates, you can update the existing portlets without losing users' individual preferences.

* Portlets, like other Web applications, play well with firewalls. They use standard Web protocols to receive and display information.

* You only need to install and configure portlets once for all of your users, which is much easier than working with stand-alone applications on each computer. This logic applies to the other Web applications as well.

* The portal server works with the Web application server to provide security, installation support, reliability, and availability for many users, so you don't need to spend a large part of your development effort working on these features.

* Once you do invest in a portal server, you may find its advanced features useful: content management, transcoding, voice support, and offline browsing, among others, useful for integrating into your application

Filed in: