IBM WebSphere Application Server Programming, Copyright 2003 The McGraw-Hill Companies Author: Bassem W. Jamaleddine ISBN: 0072224592 Foreword This text explains the fundamentals of the functionality and programming of WebSphere Application Server (WAS) that are essential for readers whose aim is programming or administering the product. The text is intended to give the reader an understanding of the basic functions of WAS from the computer system perspective. The explanation follows a practical approach to understanding WAS independently of a specific version. Therefore, the text shows a (programming) methodology that is applicable to WAS v3.5, v4, and to the upcoming release of WAS v5. As necessary background, the reader should possess programming ability in some high-level language. One full course in Java programming and some rudimentary knowledge of Perl and shell script programming constitute the level of competence required for all parts of this text. Programming for WAS is not confined solely to Java. Because J2EE application servers and J2EE application programming demand the editing of many metafiles and descriptor files, we have chosen to use Perl, shell, the UNIX make utility, and other UNIX tools, to do the text preprocessing, compilation, and deployment of code. The choice of UNIX as a development environment is justified since it is the only system that promotes application development in enterprises. Basic application server programming is taught in the context of distributed systems that vary in platforms; therefore, various operating systems were considered. Although the Java machine is common to all platforms, threads management is operating system dependent and greatly impacts the performance of the application server. Here we have chosen AIX and Linux as platforms to highlight this difference. Explanation of the structure of WebSphere Application Server has been made generic for the most part, without targeting any specific version of the product. The text addresses the fundamentals of WAS programming and integration, and offers many utility scripts that can be used regardless of the specific version of the product. WAS AE stands for WAS Advanced Edition. The version implied by the term WAS AE refers to either v3.5 or v4. WAS AEs stands for Advanced Edition Single Server v4. The code and utility scripts represented herein are backward compatible with WAS v5. The reader will use WAS AEs in most of the programming (Part III), because this version is the most adequate (and is free of charge) for writing J2EE applications based on the IBM J2EE application server. J2EE is not treated as a separate topic; rather, it is introduced in the context of web application programming and deployment under WAS. This is done very specifically, based on the assumption that most readers will probably receive a complete treatment of J2EE in another course or on their own by consulting online documentation. The reader who would like to write web application programs and test them with WAS may begin with Part III of this book. The only requirement is a Linux sandbox with a connection to the Internet to download the WAS AEs trial version, the IBM UDB v7.2 trial version, and the code distribution of this text. No other third party software is required. Part III can be used on its own, provided a system administrator has prepared the development environment to be used by the reader, as explained in chapters 3 and 4, or alternatively, as it is explained in Appendix A. Material has been sequenced scrupulously to avoid forward references and to present sufficient steps that allow the reader to program with WAS AEs' free trial (but fully functional) version on a home computer. The approach taken here is to present the reader with some mechanisms to build web applications using IBM's J2EE application server-WebSphere Application Server-without the interference of any other WebSphere product. In this way, the reader will gain a clear understanding of WAS, making the IBM application server an openly available product that can, for example, be taught in a college course. The text also breaks the dependency on using a graphical interface for programming, debugging, deployment, and administration. This is achieved by applying Perl scripts, and by using applications such as Lynx and the WebSphere Control Language (known as WSCP, and replaced by wsadmin in WAS v5). In addition, many other standard UNIX commands are used, which should be at the fingertips of any competent programmer. Using Lynx is appropriate because it provides an instantaneous view to the HTML header. Perl is an easy language that permits the automation of text processing, and therefore fits to generate the deployment descriptor of J2EE applications automatically. The material has been classified into six parts so the text can be used in a university for two full courses as an introduction to WAS. Part I targets the preparation of the development environment; Part II supplies the requisite knowledge to administer WAS; Part III teaches programming for WAS; Part IV teaches stress-testing and debugging; Part V examines WAS monitoring, tuning, and risk management; finally, Part VI forms the appendixes. The manuscript was written at Total Computing & Network Design, Inc. (TCND), in New York City, and was carefully reviewed by several IT professionals at IBM. TCND provided the computing facilities on which programming and testing took place. It also provided the tools and applications that helped generate the code listings. The Gramercy Toolkit and the WASLED/WASMON application are the result of Project-9, likewise conducted at TCND. The toolkit and the application are freely distributed with the purchase of this text, and licensing is waived solely for educational use (non-commercial use): that is, specifically to accredited Computer Science departments and/or readers who will use the product on their home computers. The most recent update of Gramercy Toolkit and WASLED/WASMON may be obtained from the website www.tcnd.com. The author welcomes readers' comments and critiques about the project, and asks that they be sent to wasbook@tcnd.com. Bassem W. Jamaleddine Total Computing & Network Design, Inc. New York, New York November 2002