[JAVA][Apache Tomcat 7 User Guide]

background image
background image








Apache Tomcat 7

User Guide

by

The Apache Software Foundation

















Fultus

Books

background image



Apache Tomcat 7

User Guide

by

The Apache Software Foundation

ISBN-10: 1-59682-271-6
ISBN-13: 978-1-59682-271-9

Copyright © 1999-2011, Apache Software Foundation

Cover design and book layout by Fultus Corporation

Fultus Corporation is not affiliated with The Apache Software Foundation



Published by Fultus Corporation

Publisher Web: www.fultus.com

Linbrary - Linux Library: www.linbrary.com

Online Bookstore: store.fultus.com

email: production@fultus.com

This work is licensed under the Apache License, Version 2.0.

To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0.

Apache and the Apache feather logo are trademarks of The Apache Software Foundation.

, in the U.S.

and other countries. All product names and services identified throughout this manual are trademarks or

registered trademarks of their respective companies.

The authors and publisher have made every effort in the preparation of this book to ensure the accuracy of the

information. However, the information contained in this book is offered without warranty, either express or

implied. Neither the author nor the publisher nor any dealer or distributor will be held liable for any damages

caused or alleged to be caused either directly or indirectly by this book.

background image

Table of Contents

3

Table of Contents

Abstract ............................................................................................................................................... 14
Chapter 1. Introduction .................................................................................................................... 15

1.1. Introduction ............................................................................................................................. 15

1.2. Terminology ............................................................................................................................. 15

1.3. Directories and Files ............................................................................................................... 15

1.4. Configuring Tomcat ................................................................................................................ 16

1.5. Where to Go for Help ............................................................................................................. 16

Chapter 2. Tomcat Setup .................................................................................................................. 18

2.1. Introduction ............................................................................................................................. 18

2.2. Windows .................................................................................................................................. 18

2.3. Unix daemon ........................................................................................................................... 19

Chapter 3. First webapp ................................................................................................................... 21

3.1. Preface ....................................................................................................................................... 21

3.2. Introduction ............................................................................................................................. 21

3.2.1. Overview ........................................................................................................................... 21

3.2.2. Links ................................................................................................................................... 21

3.3. Installation ................................................................................................................................ 22

3.3.1. JDK ..................................................................................................................................... 22

3.3.2. Tomcat ............................................................................................................................... 22

3.3.3. Ant ...................................................................................................................................... 23

3.3.4. CVS ..................................................................................................................................... 23

3.4. Deployment ............................................................................................................................. 23

3.4.1. Background ....................................................................................................................... 23

3.4.2. Standard Directory Layout ............................................................................................. 24

3.4.3. Shared Library Files ......................................................................................................... 25

3.4.4. Shared Library Files ......................................................................................................... 25

3.4.5. Web Application Deployment Descriptor .................................................................... 25

3.4.6. Tomcat Context Descriptor ............................................................................................. 26

3.4.7. Deployment With Tomcat ............................................................................................... 26

3.5. Source Organization ............................................................................................................... 27

3.5.1. Directory Structure .......................................................................................................... 27

3.5.1.1. External Dependencies ................................................................................ 29

background image

Apache Tomcat 7

User Guide

4

3.5.2. Source Code Control ....................................................................................................... 30

3.5.3. BUILD.XML Configuration File ..................................................................................... 31

3.6. Development Processes ......................................................................................................... 32

3.6.1. One-Time Setup of Ant and Tomcat for Development .............................................. 33

3.6.2. Create Project Source Code Directory ........................................................................... 33

3.6.3. Edit Source Code and Pages ........................................................................................... 35

3.6.4. Build the Web Application ............................................................................................. 35

3.6.5. Test Your Web Application ............................................................................................ 36

3.6.6. Creating a Release ............................................................................................................ 37

3.7. Sample Application ................................................................................................................ 37

Chapter 4. Tomcat Web Application Deployment ..................................................................... 38

4.1. Introduction ............................................................................................................................. 38

4.2. Installation ............................................................................................................................... 38

4.3. A word on Contexts................................................................................................................ 39

4.4. Deployment on Tomcat startup ............................................................................................ 39

4.5. Deploying on a running Tomcat server ............................................................................... 40

4.6. Deploying using the Tomcat Manager ................................................................................ 41

4.7. Deploying using the Client Deployer Package ................................................................... 41

Chapter 5. Manager App HOW-TO .............................................................................................. 43

5.1. Introduction ............................................................................................................................. 43

5.2. Configuring Manager Application Access .......................................................................... 44

5.3. Supported Manager Commands .......................................................................................... 45

5.3.1. Deploy A New Application Remotely .......................................................................... 46

5.3.2. Deploy A New Application from a Local Path ............................................................ 47

5.3.2.1. Deploy a version of a previously deployed webapp ............................... 48

5.3.2.2. Deploy a Directory or WAR by URL .......................................................... 48

5.3.2.3. Deploy a Directory or War from the Host appBase ................................. 48

5.3.2.4. Deploy using a Context configuration ".xml" file ..................................... 48

5.3.2.5. Deployment Notes ........................................................................................ 49

5.3.2.6. Deploy Response ........................................................................................... 49

5.3.3. List Currently Deployed Applications.......................................................................... 50

5.3.4. Reload An Existing Application .................................................................................... 51

5.3.5. List OS and JVM Properties ............................................................................................ 51

5.3.6. List Available Global JNDI Resources .......................................................................... 52

5.3.7. Session Statistics ............................................................................................................... 52

5.3.8. Start an Existing Application ......................................................................................... 53

5.3.9. Stop an Existing Application .......................................................................................... 53

5.3.10. Undeploy an Existing Application .............................................................................. 54

5.3.11. Finding memory leaks ................................................................................................... 55

background image

Table of Contents

5

5.3.12. Server Status ................................................................................................................... 55

5.4. Executing Manager Commands With Ant .......................................................................... 56

5.4.1. Tasks output capture ....................................................................................................... 58

5.5. Using the JMX Proxy Servlet ................................................................................................. 61

5.5.1. What is JMX Proxy Servlet .............................................................................................. 61

5.5.2. JMX Query command ...................................................................................................... 61

5.5.3. JMX Set command ............................................................................................................ 61

Chapter 6. Realm Configuration HOW-TO ................................................................................. 63

6.1. Quick Start................................................................................................................................ 63

6.2. Overview .................................................................................................................................. 63

6.2.1. What is a Realm? .............................................................................................................. 63

6.2.2. Configuring a Realm ........................................................................................................ 64

6.3. Common Features ................................................................................................................... 65

6.3.1. Digested Passwords ......................................................................................................... 65

6.3.2. Example Application ....................................................................................................... 66

6.3.3. Manager Application ....................................................................................................... 66

6.3.4. Realm Logging .................................................................................................................. 67

6.4. Standard Realm Implementations ........................................................................................ 67

6.4.1. JDBCRealm ........................................................................................................................ 67

6.4.1.1. Introduction .................................................................................................. 67

6.4.1.2. Quick Start ..................................................................................................... 67

6.4.1.3. Realm Element Attributes ........................................................................... 68

6.4.1.4. Example ......................................................................................................... 68

6.4.1.5. Additional Notes .......................................................................................... 69

6.4.2. DataSourceRealm ............................................................................................................. 69

6.4.2.1. Introduction .................................................................................................. 69

6.4.2.2. Quick Start ..................................................................................................... 70

6.4.2.3. Realm Element Attributes ........................................................................... 70

6.4.2.4. Example ......................................................................................................... 70

6.4.2.5. Additional Notes .......................................................................................... 71

6.4.3. JNDIRealm ........................................................................................................................ 71

6.4.3.1. Introduction .................................................................................................. 71

6.4.3.2. Quick Start ..................................................................................................... 74

6.4.3.3. Realm Element Attributes ........................................................................... 74

6.4.3.4. Example ......................................................................................................... 75

6.4.3.5. Additional Notes .......................................................................................... 77

6.4.4. UserDatabaseRealm ......................................................................................................... 78

6.4.4.1. Introduction .................................................................................................. 78

background image

Apache Tomcat 7

User Guide

6

6.4.4.2. Realm Element Attributes ............................................................................ 78

6.4.4.3. User File Format ............................................................................................ 78

6.4.4.4. Example .......................................................................................................... 78

6.4.4.5. Additional Notes ........................................................................................... 79

6.4.5. MemoryRealm .................................................................................................................. 79

6.4.5.1. Introduction ................................................................................................... 79

6.4.5.2. Realm Element Attributes ............................................................................ 79

6.4.5.3. User File Format ............................................................................................ 79

6.4.5.4. Additional Notes ........................................................................................... 80

6.4.6. JAASRealm ....................................................................................................................... 80

6.4.6.1. Introduction ................................................................................................... 80

6.4.6.2. Quick Start ...................................................................................................... 81

6.4.6.3. Realm Element Attributes ............................................................................ 82

6.4.6.4. Example .......................................................................................................... 82

6.4.6.5. Additional Notes ........................................................................................... 82

6.4.7. CombinedRealm............................................................................................................... 83

6.4.7.1. Introduction ................................................................................................... 83

6.4.7.2. Realm Element Attributes ............................................................................ 83

6.4.7.3. Example .......................................................................................................... 83

6.4.8. LockOutRealm .................................................................................................................. 83

6.4.8.1. Introduction ................................................................................................... 83

6.4.8.2. Realm Element Attributes ............................................................................ 84

6.4.8.3. Example .......................................................................................................... 84

Chapter 7. Security Manager HOW-TO ....................................................................................... 85

7.1. Background .............................................................................................................................. 85

7.2. Permissions .............................................................................................................................. 85

7.2.1. Standard Permissions ...................................................................................................... 86

7.2.2. Tomcat Custom Permissions .......................................................................................... 86

7.3. Configuring Tomcat With A SecurityManager .................................................................. 87

7.3.1. Policy File Format ............................................................................................................ 87

7.3.2. The Default Policy File .................................................................................................... 87

7.3.3. Starting Tomcat With A SecurityManager ................................................................... 92

7.4. Configuring Package Protection in Tomcat ........................................................................ 92

7.4.1. The Default Properties File ............................................................................................. 92

7.5. Troubleshooting ...................................................................................................................... 93

Chapter 8. JNDI Resources HOW-TO .......................................................................................... 94

8.1. Introduction ............................................................................................................................. 94

background image

Table of Contents

7

8.2. web.xml configuration ........................................................................................................... 94

8.3. context.xml configuration ...................................................................................................... 95

8.4. Global configuration ............................................................................................................... 96

8.5. Using resources ....................................................................................................................... 96

8.6. Tomcat Standard Resource Factories ................................................................................... 96

8.6.1. Generic JavaBean Resources ........................................................................................... 97

8.6.1.1. Introduction .................................................................................................. 97

8.6.1.2. Create Your JavaBean Class ........................................................................ 97

8.6.1.3. Declare Your Resource Requirements ....................................................... 98

8.6.1.4. Code Your Application's Use Of This Resource ...................................... 98

8.6.1.5. Configure Tomcat's Resource Factory ....................................................... 98

8.6.2. UserDatabase Resources ................................................................................................. 99

8.6.2.1. Introduction .................................................................................................. 99

8.6.2.2. Create/edit the XML file ............................................................................. 99

8.6.2.3. Declare Your Resource ................................................................................ 99

8.6.2.4. Configure the Realm .................................................................................. 100

8.6.3. JavaMail Sessions ........................................................................................................... 100

8.6.3.1. Introduction ................................................................................................ 100

8.6.3.2. Declare Your Resource Requirements ..................................................... 100

8.6.3.3. Code Your Application's Use Of This Resource .................................... 101

8.6.3.4. Configure Tomcat's Resource Factory ..................................................... 101

8.6.3.5. Install the JavaMail libraries ..................................................................... 102

8.6.3.6. Restart Tomcat ............................................................................................ 102

8.6.3.7. Example Application ................................................................................. 102

8.6.4. JDBC Data Sources ......................................................................................................... 102

8.6.4.1. Introduction ................................................................................................ 102

8.6.4.2. Install Your JDBC Driver ........................................................................... 103

8.6.4.3. Declare Your Resource Requirements ..................................................... 103

8.6.4.4. Code Your Application's Use Of This Resource .................................... 104

8.6.4.5. Configure Tomcat's Resource Factory ..................................................... 104

8.7. Adding Custom Resource Factories ................................................................................... 107

8.7.1. Write A Resource Factory Class ................................................................................... 107

8.7.2. Declare Your Resource Requirements ......................................................................... 109

8.7.3. Code Your Application's Use Of This Resource ........................................................ 109

8.7.4. Configure Tomcat's Resource Factory ......................................................................... 109

Chapter 9. JNDI Datasource HOW-TO ....................................................................................... 111

9.1. Introduction ........................................................................................................................... 111

background image

Apache Tomcat 7

User Guide

8

9.2. Database Connection Pool (DBCP) Configurations ......................................................... 111

9.2.1. Installation ...................................................................................................................... 112

9.2.2. Preventing dB connection pool leaks .......................................................................... 112

9.2.3. MySQL DBCP Example ................................................................................................ 113

9.2.3.1. Introduction ................................................................................................. 113

9.2.3.2. MySQL configuration ................................................................................. 113

9.2.3.3. Context configuration ................................................................................. 114

9.2.3.4. web.xml configuration ............................................................................... 114

9.2.3.5. Test code ....................................................................................................... 115

9.2.4. Oracle 8i, 9i & 10g .......................................................................................................... 116

9.2.4.1. Introduction ................................................................................................. 116

9.2.4.2. Context configuration ................................................................................. 116

9.2.4.3. web.xml configuration ............................................................................... 116

9.2.4.4. Code example .............................................................................................. 117

9.2.5. PostgreSQL ..................................................................................................................... 117

9.2.5.1. Introduction ................................................................................................. 117

9.2.5.2. Required files ............................................................................................... 117

9.2.5.3. Resource configuration .............................................................................. 117

9.2.5.4. web.xml configuration ............................................................................... 118

9.2.5.5. Accessing the datasource ........................................................................... 118

9.3. Non-DBCP Solutions ............................................................................................................ 118

9.4. Oracle 8i with OCI client ..................................................................................................... 118

9.4.1. Introduction .................................................................................................................... 118

9.4.2. Putting it all together ..................................................................................................... 119

9.5. Common Problems ............................................................................................................... 119

9.5.1. Intermittent dB Connection Failures ........................................................................... 120

9.5.2. Random Connection Closed Exceptions..................................................................... 120

9.5.3. Context versus GlobalNamingResources ................................................................... 121

9.5.4. JNDI Resource Naming and Realm Interaction ........................................................ 121

Chapter 10. Class Loader HOW-TO ............................................................................................ 122

10.1. Overview .............................................................................................................................. 122

10.2. Class Loader Definitions .................................................................................................... 122

10.3. XML Parsers and Java ........................................................................................................ 125

10.4. Running under a security manager .................................................................................. 125

Chapter 11. Jasper 2 JSP Engine How To ................................................................................... 126

11.1. Introduction ......................................................................................................................... 126

11.2. Configuration ...................................................................................................................... 126

11.3. Known issues ....................................................................................................................... 129

background image

Table of Contents

9

11.4. Production Configuration .................................................................................................. 129

11.5. Web Application Compilation .......................................................................................... 129

Chapter 12. SSL Configuration HOW-TO .................................................................................. 132

12.1. Quick Start............................................................................................................................ 132

12.2. Introduction to SSL ............................................................................................................. 132

12.3. SSL and Tomcat ................................................................................................................... 133

12.4. Certificates ............................................................................................................................ 133

12.5. General Tips on Running SSL ........................................................................................... 134

12.6. Configuration....................................................................................................................... 135

12.6.1. Prepare the Certificate Keystore ................................................................................ 135

12.6.2. Edit the Tomcat Configuration File ........................................................................... 136

12.7. Installing a Certificate from a Certificate Authority ...................................................... 139

12.7.1. Create a local Certificate Signing Request (CSR) ..................................................... 139

12.7.2. Importing the Certificate ............................................................................................. 139

12.8. Troubleshooting .................................................................................................................. 140

12.9. Using the SSL for session tracking in your application ................................................. 141

12.10. Miscellaneous Tips and Bits ............................................................................................ 142

Chapter 13. SSI How To ................................................................................................................. 143

13.1. Introduction ......................................................................................................................... 143

13.2. Installation ............................................................................................................................ 143

13.3. Servlet Configuration ......................................................................................................... 144

13.4. Filter Configuration ............................................................................................................ 144

13.5. Directives .............................................................................................................................. 145

13.6. Variables ............................................................................................................................... 146

Chapter 14. CGI How To ............................................................................................................... 148

14.1. Introduction ......................................................................................................................... 148

14.2. Installation ............................................................................................................................ 148

14.3. Configuration....................................................................................................................... 148

Chapter 15. Proxy Support HOW-TO .......................................................................................... 150

15.1. Introduction ......................................................................................................................... 150

15.2. Apache 1.3 Proxy Support ................................................................................................. 150

15.3. Apache 2.0 Proxy Support ................................................................................................. 152

Chapter 16. MBean Descriptor How To ...................................................................................... 153

16.1. Introduction ......................................................................................................................... 153

16.2. Adding MBean descriptions .............................................................................................. 153

Chapter 17. Default Servlet Reference ........................................................................................ 154

17.1. What is the DefaultServlet ................................................................................................. 154

17.2. Where is it declared?........................................................................................................... 154

17.3. What can I change? ............................................................................................................. 154

background image

Apache Tomcat 7

User Guide

10

17.4. How do I customize directory listings? ........................................................................... 156

17.5. How do I secure directory listings? .................................................................................. 158

Chapter 18. Clustering/Session Replication HOW-TO ........................................................... 159

18.1. For the impatient ................................................................................................................. 159

18.2. Cluster Basics ....................................................................................................................... 161

18.3. Overview .............................................................................................................................. 161

18.4. Cluster Information ............................................................................................................ 162

18.5. Bind session after crash to failover node ......................................................................... 163

18.6. Configuration Example ...................................................................................................... 164

18.7. Cluster Architecture ........................................................................................................... 169

18.8. How it Works ...................................................................................................................... 170

18.9. Monitoring your Cluster with JMX .................................................................................. 172

18.10. FAQ ..................................................................................................................................... 173

Chapter 19. Load Balancer HOW-TO .......................................................................................... 174

19.1. Using the JK 1.2.x native connector .................................................................................. 174

19.2. Using Apache HTTP Server 2.x with mod_proxy .......................................................... 174

Chapter 20. Connectors How To .................................................................................................. 175

20.1. Introduction ......................................................................................................................... 175

20.2. HTTP ..................................................................................................................................... 175

20.3. AJP ........................................................................................................................................ 175

Chapter 21. Monitoring and Managing Tomcat........................................................................ 176

21.1. Introduction ......................................................................................................................... 176

21.2. Enabling JMX Remote ........................................................................................................ 176

21.3. Manage Tomcat with JMX remote Ant Tasks ................................................................. 177

21.4. JMXAccessorOpenTask - JMX open connection task .................................................... 179

21.5. JMXAccessorGetTask: get attribute value Ant task ....................................................... 180

21.6. JMXAccessorSetTask: set attribute value Ant task ........................................................ 181

21.7. JMXAccessorInvokeTask: invoke MBean operation Ant task ...................................... 181

21.8. JMXAccessorQueryTask: query MBean Ant task........................................................... 183

21.9. JMXAccessorCreateTask: remote create MBean Ant task ............................................. 184

21.10. JMXAccessorUnregisterTask: remote unregister MBean Ant task ............................ 185

21.11. JMXAccessorCondition: express condition ................................................................... 185

21.12. JMXAccessorEqualsCondition: equals MBean Ant condition .................................... 186

Chapter 22. Logging in Tomcat .................................................................................................... 188

22.1. Introduction ......................................................................................................................... 188

22.1.1. Java logging API — java.util.logging ........................................................................ 189

22.1.2. Servlets logging API .................................................................................................... 189

22.1.3. Console .......................................................................................................................... 189

22.1.4. Access logging .............................................................................................................. 190

background image

Table of Contents

11

22.2. Using java.util.logging (default) ....................................................................................... 190

22.2.1. Documentation references .......................................................................................... 193

22.2.2. Considerations for productive usage ........................................................................ 193

22.3. Using Log4j .......................................................................................................................... 193

Chapter 23. Apache Portable Runtime (APR) based Native library for Tomcat ................. 197

23.1. Introduction ......................................................................................................................... 197

23.2. Installation ............................................................................................................................ 197

23.2.1. Windows ....................................................................................................................... 197

23.2.2. Linux .............................................................................................................................. 198

23.3. APR Components ................................................................................................................ 198

23.4. APR Lifecycle Listener Configuration ............................................................................. 199

23.4.1. AprLifecycleListener .................................................................................................... 199

23.5. APR Connectors Configuration ........................................................................................ 199

23.5.1. HTTP/HTTPS ............................................................................................................... 199

23.5.2. AJP .................................................................................................................................. 199

Chapter 24. Virtual Hosting and Tomcat .................................................................................... 200

24.1. Assumptions ........................................................................................................................ 200

24.2. server.xml ............................................................................................................................. 200

24.3. Webapps Directory ............................................................................................................. 200

24.4. Configuring Your Contexts ............................................................................................... 201

24.4.1. General ........................................................................................................................... 201

24.4.2. context.xml - approach #1 ........................................................................................... 201

24.4.3. context.xml - approach #2 ........................................................................................... 201

24.4.4. Further Information ..................................................................................................... 201

Chapter 25. Advanced IO and Tomcat ........................................................................................ 202

25.1. Introduction ......................................................................................................................... 202

25.2. Comet support ..................................................................................................................... 202

25.2.1. CometEvent ................................................................................................................... 202

25.2.2. CometFilter.................................................................................................................... 204

25.2.3. Example code ................................................................................................................ 204

25.2.4. Comet timeouts ............................................................................................................ 207

25.3. Asynchronous writes .......................................................................................................... 207

Chapter 26. Additional Components ........................................................................................... 208

26.1. Introduction ......................................................................................................................... 208

26.2. Downloading ....................................................................................................................... 208

26.3. Building ................................................................................................................................ 208

26.4. Components list................................................................................................................... 208

26.4.1. Full commons-logging implementation.................................................................... 208

26.4.2. Web Services support (JSR 109) ................................................................................. 209

background image

Apache Tomcat 7

User Guide

12

26.4.3. JMX Remote Lifecycle Listener .................................................................................. 209

Chapter 27. Apache Tomcat - Using Tomcat libraries with Maven ...................................... 210

27.1. Using Tomcat libraries With Maven ................................................................................ 210

27.1.1. Tomcat Snapshots ........................................................................................................ 210

27.1.2. Tomcat Releases ........................................................................................................... 210

Chapter 28. Security Considerations ........................................................................................... 211

28.1. Introduction ......................................................................................................................... 211

28.2. Non-Tomcat settings .......................................................................................................... 211

28.3. Default web applications ................................................................................................... 212

28.4. Security manager ................................................................................................................ 212

28.5. server.xml ............................................................................................................................. 212

28.5.1. General .......................................................................................................................... 212

28.5.2. Server ............................................................................................................................. 213

28.5.3. Listeners ........................................................................................................................ 213

28.5.4. Connectors .................................................................................................................... 213

28.5.5. Host ................................................................................................................................ 214

28.5.6. Context .......................................................................................................................... 214

28.5.7. Valves ............................................................................................................................ 215

28.5.8. Realms ........................................................................................................................... 215

28.5.9. Manager......................................................................................................................... 216

28.6. System Properties ............................................................................................................... 216

28.7. CATALINA_BASE/conf/web.xml .................................................................................. 216

28.8. General ................................................................................................................................. 217

Chapter 29. Windows service HOW-TO .................................................................................... 218

29.1. Tomcat7 service application .............................................................................................. 218

29.2. Tomcat7w monitor application ......................................................................................... 218

29.3. Command line arguments ................................................................................................. 218

29.4. Command line parameters ................................................................................................ 219

29.5. Installing services ................................................................................................................ 221

29.6. Updating services ............................................................................................................... 221

29.7. Removing services .............................................................................................................. 221

29.8. Debugging services............................................................................................................. 221

Chapter 30. Windows Authentication How-To......................................................................... 222

30.1. Overview .............................................................................................................................. 222

30.2. Built-in Tomcat support ..................................................................................................... 222

30.2.1. Domain Controller ....................................................................................................... 223

30.2.2. Tomcat instance ............................................................................................................ 223

30.2.3. Web application ........................................................................................................... 225

30.2.4. Client .............................................................................................................................. 225

background image

Table of Contents

13

30.2.5. References ...................................................................................................................... 225

30.3. Third party libraries ............................................................................................................ 226

30.3.1. Waffle ............................................................................................................................. 226

30.3.2. Spring Security - Kerberos Extension ........................................................................ 226

30.3.3. SPNEGO project at SourceForge ................................................................................ 226

30.4. Reverse proxies .................................................................................................................... 227

30.4.1. Microsoft IIS .................................................................................................................. 227

30.4.2. Apache httpd ................................................................................................................ 227

Chapter 31. The Tomcat JDBC Connection Pool ....................................................................... 228

31.1. Introduction ......................................................................................................................... 228

31.2. How to use ........................................................................................................................... 230

31.2.1. Additional features ...................................................................................................... 230

31.2.2. Inside the Apache Tomcat Container ........................................................................ 231

31.2.3. Standalone ..................................................................................................................... 231

31.2.4. JMX ................................................................................................................................. 231

31.3. Attributes.............................................................................................................................. 231

31.3.1. JNDI Factory and Type ................................................................................................ 231

31.3.2. Common Attributes ..................................................................................................... 232

31.3.3. Tomcat JDBC Enhanced Attributes ........................................................................... 234

31.4. Advanced usage .................................................................................................................. 237

31.4.1. JDBC interceptors ......................................................................................................... 237

31.4.2. JDBC interceptors ......................................................................................................... 237

31.4.3. org.apache.tomcat.jdbc.pool.JdbcInterceptor ........................................................... 237

31.4.4. org.apache.tomcat.jdbc.pool.interceptor.ConnectionState ..................................... 238

31.4.5. org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer ................................ 238

31.4.6. org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor ........... 238

31.4.7. org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport .................................. 238

31.4.8. org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx ........................... 238

31.4.9. org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer ......................... 239

31.5. Code Example ...................................................................................................................... 239

31.5.1. Plain Ol' Java ................................................................................................................. 239

31.5.2. As a Resource ................................................................................................................ 240

31.5.3. Asynchronous Connection Retrieval ......................................................................... 241

31.5.4. Interceptors ................................................................................................................... 241

31.5.5. Getting the actual JDBC connection .......................................................................... 243

31.6. Building ................................................................................................................................ 243

31.6.1. Building from source ................................................................................................... 244

Linbrary™ Advertising Club (LAC) ............................................................................................ 245

Your Advertising Here ................................................................................................................ 253

background image

Apache Tomcat 7

User Guide

14

Abstract

Welcome to the Apache Tomcat 7.0 User Guide! Apache Tomcat version 7.0 implements the

Servlet 3.0 and JavaServer Pages 2.2 specifications from the Java Community Process

1

1

http://www.jcp.org/

, and

includes many additional features that make it a useful platform for developing and

deploying web applications and web services.

background image

Chapter 1.

Introduction

15

Chapter 1.

Introduction

1.1.

Introduction

For administrators and web developers alike, there are some important bits of information

you should familiarize yourself with before starting out. This document serves as a brief

introduction to some of the concepts and terminology behind the Tomcat container. As well,

where to go when you need help.

1.2.

Terminology

In the course of reading these documents, you'll run across a number of terms; some specific

to Tomcat, and others defined by the Servlet

1

or JSP

2

Context - In a nutshell, a Context is a web application.

specifications.

Term2 - This is it.

Term3 - This is it!

1.3.

Directories and Files

Throughout the docs, you'll notice there are numerous references to $CATALINA_HOME.

This represents the root of your Tomcat installation. When we say, "This information can be

found in your $CATALINA_HOME/README.txt file" we mean to look at the README.txt

file at the root of your Tomcat install. Optionally, Tomcat may be configured for multiple

instances by defining $CATALINA_BASE for each instance. If multiple instances are not

configured, $CATALINA_BASE is the same as $CATALINA_HOME.
These are some of the key tomcat directories:

/bin - Startup, shutdown, and other scripts. The

*.sh

files (for Unix systems) are

functional duplicates of the

*.bat

files (for Windows systems). Since the Win32

command-line lacks certain functionality, there are some additional files in here.

1

http://java.sun.com/products/servlet/

2

http://java.sun.com/products/jsp/

background image

Apache Tomcat 7

User Guide

16

/conf - Configuration files and related DTDs. The most important file in here is

server.xml. It is the main configuration file for the container.

/logs - Log files are here by default.

/webapps - This is where your webapps go.

1.4.

Configuring Tomcat

This section will acquaint you with the basic information used during the configuration of

the container.
All of the information in the configuration files is read at startup, meaning that any change

to the files necessitates a restart of the container.

1.5.

Where to Go for Help

While we've done our best to ensure that these documents are clearly written and easy to

understand, we may have missed something. Provided below are various web sites and

mailing lists in case you get stuck.
As Tomcat 7 is a new release of Tomcat, keep in mind that some of the issues and solutions

vary between the major versions of Tomcat (6.x versus 7.x). As you search around the web,

there will be some documentation that is not relevant to Tomcat 7, but 6.x, 5.x or earlier

versions. Doing 3.x or 4.x things to 7 will probably not work in most cases as the server.xml

files are very different.

• Current document - most documents will list potential hangups. Be sure to fully read

the relevant documentation as it will save you much time and effort. There's nothing

like scouring the web only to find out that the answer was right in front of you all

along!

Tomcat FAQ

3

Tomcat WIKI

4

• Tomcat FAQ at jGuru

5

• Tomcat mailing list archives - numerous sites archive the Tomcat mailing lists. Since

the links change over time, clicking here will search Google

6

• The TOMCAT-USER mailing list, which you can subscribe to here

.

7

3

http://wiki.apache.org/tomcat/FAQ

. If you don't get a

reply, then there's a good chance that your question was probably answered in the

4

http://wiki.apache.org/tomcat/

5

http://www.jguru.com/faq/home.jsp?topic=Tomcat

6

http://www.google.com/search?q=tomcat+mailing+list+archives

background image

Chapter 1.

Introduction

17

list archives or one of the FAQs. Although questions about web application

development in general are sometimes asked and answered, please focus your

questions on Tomcat-specific issues.

• The TOMCAT-DEV mailing list, which you can subscribe to here

8

And, if you think something should be in the docs, by all means let us know on the

TOMCAT-DEV list.

. This list is

reserved for discussions about the development of Tomcat itself. Questions about

Tomcat configuration, and the problems you run into while developing and running

applications, will normally be more appropriate on the TOMCAT-USER list instead.

7

http://tomcat.apache.org/lists.html

8

http://tomcat.apache.org/lists.html

background image

Apache Tomcat 7

User Guide

18

Chapter 2.

Tomcat Setup

2.1.

Introduction

This document introduces several ways to set up Tomcat for running on different platforms.

Please note that some advanced setup issues are not covered here: the full distribution (ZIP

file or tarball) includes a file called RUNNING.txt which discusses these issues. We

encourage you to refer to it if the information below does not answer some of your

questions.

2.2.

Windows

Installing Tomcat on Windows can be done easily using the Windows installer. Its interface

and functionality is similar to other wizard based installers, with only a few items of

interest.

Installation as a service: Tomcat will be installed as a Windows NT/2k/XP service

no matter what setting is selected. Using the checkbox on the component page sets

the service as "auto" startup, so that Tomcat is automatically started when Windows

starts. For optimal security, the service should be run as a separate user, with

reduced permissions (see the Windows Services administration tool and its

documentation).

Java location: The installer will use the registry or the JAVA_HOME environment

variable to determine the base path of a Java SE 6 JRE.

Tray icon: When Tomcat is run as a service, there will not be any tray icon present

when Tomcat is running. Note that when choosing to run Tomcat at the end of

installation, the tray icon will be used even if Tomcat was installed as a service.

• Refer to the Windows service HOW-TO (see Chapter 29, page 218) for information on

how to manage Tomcat as Windows NT service.

The installer will create shortcuts allowing starting and configuring Tomcat. It is important

to note that the Tomcat administration web application can only be used when Tomcat is

running.

background image

Chapter 2.

Tomcat Setup

19

2.3.

Unix daemon

Tomcat can be run as a daemon using the jsvc tool from the commons-daemon project.

Source tarballs for jsvc are included with the Tomcat binaries, and need to be compiled.

Building jsvc requires a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.
Before running the script, the

JAVA_HOME

environment variable should be set to the base

path of the JDK. Alternately, when calling the

./configure

script, the path of the JDK may

be specified using the

--with-java

parameter, such as

./configure --with-java=/usr/java

.

Using the following commands should result in a compiled jsvc binary, located in the

$CATALINA_HOME/bin

folder. This assumes that GNU TAR is used, and that

CATALINA_HOME

is an environment variable pointing to the base path of the Tomcat installation.
Please note that you should use the GNU make (gmake) instead of the native BSD make on

FreeBSD systems.

cd $CATALINA_HOME/bin

tar xvfz commons-daemon-native.tar.gz

cd commons-daemon-1.0.x-native-src/unix

./configure

make

cp jsvc ../..

cd ../..

Tomcat can then be run as a daemon using the following commands.

cd $CATALINA_HOME

./bin/jsvc -cp ./bin/bootstrap.jar:./bin/tomcat-juli.jar \

-outfile ./logs/catalina.out -errfile ./logs/catalina.err \

org.apache.catalina.startup.Bootstrap

You may also need to specify

-jvm server

if the JVM defaults to using a server VM rather

than a client VM. This has been observed on OSX.
jsvc has other useful parameters, such as

-user

which causes it to switch to another user

after the daemon initialization is complete. This allows, for example, running Tomcat as a

non privileged user while still being able to use privileged ports. Note that if you use this

option and start Tomcat as root, you'll need to disable the

org.apache.catalina.security.SecurityListener

check that prevents Tomcat starting

when running as root.

jsvc --help

will return the full jsvc usage information. In particular, the

-debug

option is

useful to debug issues running jsvc.
The file

$CATALINA_HOME/bin/commons-daemon-1.0.x-native-

src/unix/native/Tomcat5.sh

can be used as a template for starting Tomcat

automatically at boot time from

/etc/init.d

. The file is currently setup for running

Tomcat 5.5.x, so it will be necessary to edit it a little.

background image

Apache Tomcat 7

User Guide

20

Note that the Commons-Daemon JAR file must be on your runtime classpath to run Tomcat

in this manner. The Commons-Daemon JAR file is in the Class-Path entry of the

bootstrap.jar manifest, but if you get a ClassNotFoundException or a

NoClassDefFoundError for a Commons-Daemon class, add the Commons-Daemon JAR to

the -cp argument when launching jsvc.

background image

Chapter 3.

First webapp

21

Chapter 3.

First webapp

3.1.

Preface

This manual includes contributions from many members of the Tomcat Project developer

community. The following authors have provided significant content:

• Craig R. McClanahan (craigmcc@apache.org)

3.2.

Introduction

3.2.1.

Overview

Congratulations! You've decided to (or been told to) learn how to build web applications

using servlets and JSP pages, and picked the Tomcat server to use for your learning and

development. But now what do you do?
This manual is a primer covering the basic steps of using Tomcat to set up a development

environment, organize your source code, and then build and test your application. It does

not discuss architectures or recommended coding practices for web application

development, or provide in depth instructions on operating the development tools that are

discussed. References to sources of additional information are included in the following

subsections.
The discussion in this manual is aimed at developers who will be using a text editor along

with command line tools to develop and debug their applications. As such, the

recommendations are fairly generic -- but you should easily be able to apply them in either a

Windows-based or Unix-based development environment. If you are utilizing an Interactive

Development Environment (IDE) tool, you will need to adapt the advice given here to the

details of your particular environment.

3.2.2.

Links

The following links provide access to selected sources of online information, documentation,

and software that is useful in developing web applications with Tomcat.

background image

Apache Tomcat 7

User Guide

22

http://java.sun.com/products/jsp/ - JavaServer Pages (JSP) Specification, Version 2.0.

Describes the programming environment provided by standard implementations of

the JavaServer Pages (JSP) technology. In conjunction with the Servlet API

Specification (see below), this document describes what a portable API page is

allowed to contain. Specific information on scripting (Chapter 6), tag extensions

(Chapter 7), and packaging JSP pages (Appendix A) is useful. The Javadoc API

Documentation is included in the specification, and with the Tomcat download.

http://java.sun.com/products/servlet/download.html - Servlet API Specification, Version 3.0.

Describes the programming environment that must be provided by all servlet

containers conforming to this specification. In particular, you will need this

document to understand the web application directory structure and deployment

file (Chapter 9), methods of mapping request URIs to servlets (Chapter 11), container

managed security (Chapter 12), and the syntax of the

web.xml

Web Application

Deployment Descriptor (Chapter 13). The Javadoc API Documentation is included in

the specification, and with the Tomcat download.

http://java.sun.com/j2ee/blueprints/ - Sun BluePrints (tm) Design Guidelines for J2EE.

Comprehensive advice and examples on application design for the Java2 Enterprise

Edition (J2EE) platform, which includes servlets and JSP pages. The chapters on

servlet and JSP design are useful even when your application does not require other

J2EE platform components.

TODO -- Add more entries here!

3.3.

Installation

In order to use Tomcat for developing web applications, you must first install it (and the

software it depends on). The required steps are outlined in the following subsections.

3.3.1.

JDK

Tomcat 7.0 was designed to run on Java SE 6.
Compatible JDKs for many platforms (or links to where they can be found) are available at

http://www.oracle.com/technetwork/java/javase/downloads/index.html.

3.3.2.

Tomcat

Binary downloads of the Tomcat server are available from http://tomcat.apache.org/. This

manual assumes you are using the most recent release of Tomcat 7. Detailed instructions for

downloading and installing Tomcat are available here (see Chapter 2, Tomcat Setup page 18).
In the remainder of this manual, example shell scripts assume that you have set an

environment variable

CATALINA_HOME

that contains the pathname to the directory in which

background image

Chapter 3.

First webapp

23

Tomcat has been installed. Optionally, if Tomcat has been configured for multiple instances,

each instance will have its own

CATALINA_BASE

configured.

3.3.3.

Ant

Binary downloads of the Ant build tool are available from http://ant.apache.org/. This manual

assumes you are using Ant 1.8 or later. The instructions may also be compatible with other

versions, but this has not been tested.
Download and install Ant. Then, add the

bin

directory of the Ant distribution to your

PATH

environment variable, following the standard practices for your operating system platform.

Once you have done this, you will be able to execute the

ant

shell command directly.

3.3.4.

CVS

Besides the required tools described above, you are strongly encouraged to download and

install a source code control system, such as the Concurrent Version System (CVS), to

maintain historical versions of the source files that make up your web application. Besides

the server, you will also need appropriate client tools to check out source code files, and

check in modified versions.
Detailed instructions for installing and using source code control applications is beyond the

scope of this manual. However, CVS server and client tools for many platforms (along with

documentation) can be downloaded from http://www.cvshome.org/.

3.4.

Deployment

3.4.1.

Background

Before describing how to organize your source code directories, it is useful to examine the

runtime organization of a web application. Prior to the Servlet API Specification, version 2.2,

there was little consistency between server platforms. However, servers that conform to the

2.2 (or later) specification are required to accept a Web Application Archive in a standard

format, which is discussed further below.
A web application is defined as a hierarchy of directories and files in a standard layout.

Such a hierarchy can be accessed in its "unpacked" form, where each directory and file exists

in the filesystem separately, or in a "packed" form known as a Web ARchive, or WAR file.

The former format is more useful during development, while the latter is used when you

distribute your application to be installed.
The top-level directory of your web application hierarchy is also the document root of your

application. Here, you will place the HTML files and JSP pages that comprise your

application's user interface. When the system administrator deploys your application into a

background image

Apache Tomcat 7

User Guide

24

particular server, he or she assigns a context path to your application (a later section of this

manual describes deployment on Tomcat). Thus, if the system administrator assigns your

application to the context path

/catalog

, then a request URI referring to

/catalog/index.html

will retrieve the

index.html

file from your document root.

3.4.2.

Standard Directory Layout

To facilitate creation of a Web Application Archive file in the required format, it is

convenient to arrange the "executable" files of your web application (that is, the files that

Tomcat actually uses when executing your app) in the same organization as required by the

WAR format itself. To do this, you will end up with the following contents in your

application's "document root" directory:

*.html, *.jsp, etc. - The HTML and JSP pages, along with other files that must be

visible to the client browser (such as JavaScript, stylesheet files, and images) for your

application. In larger applications you may choose to divide these files into a

subdirectory hierarchy, but for smaller apps, it is generally much simpler to

maintain only a single directory for these files.

/WEB-INF/web.xml - The Web Application Deployment Descriptor for your application.

This is an XML file describing the servlets and other components that make up your

application, along with any initialization parameters and container-managed

security constraints that you want the server to enforce for you. This file is discussed

in more detail in the following subsection.

/WEB-INF/classes/ - This directory contains any Java class files (and associated

resources) required for your application, including both servlet and non-servlet

classes, that are not combined into JAR files. If your classes are organized into Java

packages, you must reflect this in the directory hierarchy under

/WEB-

INF/classes/

. For example, a Java class named

com.mycompany.mypackage.MyServlet

would need to be stored in a file named

/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class

.

/WEB-INF/lib/ - This directory contains JAR files that contain Java class files (and

associated resources) required for your application, such as third party class libraries

or JDBC drivers.

When you install an application into Tomcat (or any other 2.2/2.3-compatible server), the

classes in the

WEB-INF/classes/

directory, as well as all classes in JAR files found in the

WEB-INF/lib/

directory, are made visible to other classes within your particular web

application. Thus, if you include all of the required library classes in one of these places (be

sure to check licenses for redistribution rights for any third party libraries you utilize), you

will simplify the installation of your web application -- no adjustment to the system class

path (or installation of global library files in your server) will be necessary.

background image

Chapter 3.

First webapp

25

Much of this information was extracted from Chapter 9 of the Servlet API Specification,

version 2.3, which you should consult for more details.

3.4.3.

Shared Library Files

Like most servlet containers, Tomcat also supports mechanisms to install library JAR files

(or unpacked classes) once, and make them visible to all installed web applications (without

having to be included inside the web application itself. The details of how Tomcat locates

and shares such classes are described in the Class Loader HOW-TO (see Chapter 10, page 122)

documentation. The location commonly used within a Tomcat installation for shared code is

$CATALINA_HOME/lib. JAR files placed here are visible both to web applications and

internal Tomcat code. This is a good place to put JDBC drivers that are required for both

your application or internal Tomcat use (such as for a JDBCRealm).
Out of the box, a standard Tomcat installation includes a variety of pre-installed shared

library files, including:

• The Servlet 3.0 and JSP 2.1 APIs that are fundamental to writing servlets and

JavaServer Pages.

• An XML Parser compliant with the JAXP (version 1.2) APIs, so your application can

perform DOM-based or SAX-based processing of XML documents.

3.4.4.

Shared Library Files

Like most servlet containers, Tomcat also supports mechanisms to install library JAR files

(or unpacked classes) once, and make them visible to all installed web applications (without

having to be included inside the web application itself. The details of how Tomcat locates

and shares such classes are described in the Class Loader HOW-TO (see Chapter 10, page 122)

documentation. The location commonly used within a Tomcat installation for shared code is

$CATALINA_HOME/lib. JAR files placed here are visible both to web applications and

internal Tomcat code. This is a good place to put JDBC drivers that are required for both

your application or internal Tomcat use (such as for a JDBCRealm).
Out of the box, a standard Tomcat installation includes a variety of pre-installed shared

library files, including:

• The Servlet 3.0 and JSP 2.1 APIs that are fundamental to writing servlets and

JavaServer Pages.

• An XML Parser compliant with the JAXP (version 1.2) APIs, so your application

can perform DOM-based or SAX-based processing of XML documents.

3.4.5.

Web Application Deployment Descriptor

As mentioned above, the

/WEB-INF/web.xml

file contains the Web Application Deployment

Descriptor for your application. As the filename extension implies, this file is an XML

background image

Apache Tomcat 7

User Guide

26

document, and defines everything about your application that a server needs to know

(except the context path, which is assigned by the system administrator when the application

is deployed).
The complete syntax and semantics for the deployment descriptor is defined in Chapter 13

of the Servlet API Specification, version 2.3. Over time, it is expected that development tools

will be provided that create and edit the deployment descriptor for you. In the meantime, to

provide a starting point, a basic web.xml file

1

NOTE - The Servlet Specification includes a Document Type Descriptor (DTD) for the web

application deployment descriptor, and Tomcat enforces the rules defined here when

processing your application's

/WEB-INF/web.xml

file. In particular, you must enter your

descriptor elements (such as

<filter>

,

<servlet>

, and

<servlet-mapping>

in the order

defined by the DTD (see Section 13.3).

is provided. This file includes comments that

describe the purpose of each included element.

3.4.6.

Tomcat Context Descriptor

A /META-INF/context.xml file can be used to define Tomcat specific configuration options,

such as loggers, data sources, session manager configuration and more. This XML file must

contain one Context element, which will be considered as if it was the child of the Host

element corresponding to the Host to which the The Tomcat configuration documentation

contains information on the Context element.

3.4.7.

Deployment With Tomcat

The description below uses the variable name $CATALINA_BASE to refer the base directory against

which most relative paths are resolved. If you have not configured Tomcat for multiple instances by

setting a CATALINA_BASE directory, then $CATALINA_BASE will be set to the value of

$CATALINA_HOME, the directory into which you have installed Tomcat.
In order to be executed, a web application must be deployed on a servlet container. This is

true even during development. We will describe using Tomcat to provide the execution

environment. A web application can be deployed in Tomcat by one of the following

approaches:

Copy unpacked directory hierarchy into a subdirectory in directory

$CATALINA_BASE/webapps/

. Tomcat will assign a context path to your application

based on the subdirectory name you choose. We will use this technique in the

build.xml

file that we construct, because it is the quickest and easiest approach

during development. Be sure to restart Tomcat after installing or updating your

application.

1

http://tomcat.apache.org/tomcat-7.0-doc/appdev/web.xml.txt

background image

Chapter 3.

First webapp

27

Copy the web application archive file into directory

$CATALINA_BASE/webapps/

. When

Tomcat is started, it will automatically expand the web application archive file into

its unpacked form, and execute the application that way. This approach would

typically be used to install an additional application, provided by a third party

vendor or by your internal development staff, into an existing Tomcat installation.

NOTE - If you use this approach, and wish to update your application later, you

must both replace the web application archive file AND delete the expanded

directory that Tomcat created, and then restart Tomcat, in order to reflect your

changes.

Use the Tomcat "Manager" web application to deploy and undeploy web applications.

Tomcat includes a web application, deployed by default on context path

/manager

,

that allows you to deploy and undeploy applications on a running Tomcat server

without restarting it. See the administrator documentation (TODO: hyperlink) for

more information on using the Manager web application.

Use "Manager" Ant Tasks In Your Build Script. Tomcat includes a set of custom task

definitions for the

Ant

build tool that allow you to automate the execution of

commands to the "Manager" web application. These tasks are used in the Tomcat

deployer.

Use the Tomcat Deployer. Tomcat includes a packaged tool bundling the Ant tasks,

and can be used to automatically precompile JSPs which are part of the web

application before deployment to the server.

Deploying your app on other servlet containers will be specific to each container, but all

containers compatible with the Servlet API Specification (version 2.2 or later) are required to

accept a web application archive file. Note that other containers are NOT required to accept

an unpacked directory structure (as Tomcat does), or to provide mechanisms for shared

library files, but these features are commonly available.

3.5.

Source Organization

3.5.1.

Directory Structure

The description below uses the variable name $CATALINA_BASE to refer the base directory against

which most relative paths are resolved. If you have not configured Tomcat for multiple instances by

setting a CATALINA_BASE directory, then $CATALINA_BASE will be set to the value of

$CATALINA_HOME, the directory into which you have installed Tomcat.
A key recommendation of this manual is to separate the directory hierarchy containing your

source code (described in this section) from the directory hierarchy containing your

deployable application (described in the preceding section). Maintaining this separation has

the following advantages:

background image

Apache Tomcat 7

User Guide

28

• The contents of the source directories can be more easily administered, moved, and

backed up if the "executable" version of the application is not intermixed.

• Source code control is easier to manage on directories that contain only source files.
• The files that make up an installable distribution of your application are much easier

to select when the deployment hierarchy is separate.

As we will see, the

ant

development tool makes the creation and processing of such

directory hierarchies nearly painless.
The actual directory and file hierarchy used to contain the source code of an application can

be pretty much anything you like. However, the following organization has proven to be

quite generally applicable, and is expected by the example

build.xml

configuration file that

is discussed below. All of these components exist under a top level project source directory for

your application:

docs/ - Documentation for your application, in whatever format your development

team is using.

src/ - Java source files that generate the servlets, beans, and other Java classes that are

unique to your application. If your source code is organized in packages (highly

recommended), the package hierarchy should be reflected as a directory structure

underneath this directory.

web/ - The static content of your web site (HTML pages, JSP pages, JavaScript files,

CSS stylesheet files, and images) that will be accessible to application clients. This

directory will be the document root of your web application, and any subdirectory

structure found here will be reflected in the request URIs required to access those

files.

web/WEB-INF/ - The special configuration files required for your application,

including the web application deployment descriptor (

web.xml

, defined in the

Servlet Specification

2

During the development process, two additional directories will be created on a temporary

basis:

), tag library descriptors for custom tag libraries you have

created, and other resource files you wish to include within your web application.

Even though this directory appears to be a subdirectory of your document root, the

Servlet Specification prohibits serving the contents of this directory (or any file it

contains) directly to a client request. Therefore, this is a good place to store

configuration information that is sensitive (such as database connection usernames

and passwords), but is required for your application to operate successfully.

2

http://java.sun.com/products/servlet

background image

Chapter 3.

First webapp

29

build/ - When you execute a default build (

ant

), this directory will contain an exact

image of the files in the web application archive for this application. Tomcat allows

you to deploy an application in an unpacked directory like this, either by copying it

to the

$CATALINA_BASE/webapps

directory, or by installing it via the "Manager" web

application. The latter approach is very useful during development, and will be

illustrated below.

dist/ - When you execute the

ant dist

target, this directory will be created. It will

create an exact image of the binary distribution for your web application, including

an license information, documentation, and README files that you have prepared.

Note that these two directories should NOT be archived in your source code control system,

because they are deleted and recreated (from scratch) as needed during development. For

that reason, you should not edit any source files in these directories if you want to maintain

a permanent record of the changes, because the changes will be lost the next time that a

build is performed.

3.5.1.1.

External Dependencies

What do you do if your application requires JAR files (or other resources) from external

projects or packages? A common example is that you need to include a JDBC driver in your

web application, in order to operate.
Different developers take different approaches to this problem. Some will encourage

checking a copy of the JAR files you depend on into the source code control archives for

every application that requires those JAR files. However, this can cause significant

management issues when you use the same JAR in many applications - particular when

faced with a need to upgrade to a different version of that JAR file.
Therefore, this manual recommends that you NOT store a copy of the packages you depend

on inside the source control archives of your applications. Instead, the external

dependencies should be integrated as part of the process of building your application. In

that way, you can always pick up the appropriate version of the JAR files from wherever

your development system administrator has installed them, without having to worry about

updating your application every time the version of the dependent JAR file is changed.
In the example Ant

build.xml

file, we will demonstrate how to define build properties that

let you configure the locations of the files to be copied, without having to modify

build.xml

when these files change. The build properties used by a particular developer can

be customized on a per-application basis, or defaulted to "standard" build properties stored

in the developer's home directory.
In many cases, your development system administrator will have already installed the

required JAR files into the

lib

directory of Tomcat. If this has been done, you need to take

background image

Apache Tomcat 7

User Guide

30

no actions at all - the example

build.xml

file automatically constructs a compile classpath

that includes these files.

3.5.2.

Source Code Control

As mentioned earlier, it is highly recommended that you place all of the source files that

comprise your application under the management of a source code control system like the

Concurrent Version System (CVS). If you elect to do this, every directory and file in the

source hierarchy should be registered and saved -- but none of the generated files. If you

register binary format files (such as images or JAR libraries), be sure to indicate this to your

source code control system.
We recommended (in the previous section) that you should not store the contents of the

build/

and

dist/

directories created by your development process in the source code

control system. An easy way to tell CVS to ignore these directories is to create a file named

.cvsignore

(note the leading period) in your top-level source directory, with the following

contents:

build

dist

build.properties

The reason for mentioning

build.properties

here will be explained in the Development

Processes section (see Section 3.6, page 32).
Detailed instructions for your source code control environment are beyond the scope of this

manual. However, the following steps are followed when using a command-line CVS client:

• To refresh the state of your source code to that stored in the the source repository, go

to your project source directory, and execute

cvs update -dP

.

• When you create a new subdirectory in the source code hierarchy, register it in CVS

with a command like

cvs add {subdirname}

.

• When you first create a new source code file, navigate to the directory that contains

it, and register the new file with a command like

cvs add {filename}

.

• If you no longer need a particular source code file, navigate to the containing

directory and remove the file. Then, deregister it in CVS with a command like

cvs

remove {filename}

.

• While you are creating, modifying, and deleting source files, changes are not yet

reflected in the server repository. To save your changes in their current state, go to

the project source directory and execute

cvs commit

. You will be asked to write a

brief description of the changes you have just completed, which will be stored with

the new version of any updated source file.

background image

Chapter 3.

First webapp

31

CVS, like other source code control systems, has many additional features (such as the

ability to tag the files that made up a particular release, and support for multiple

development branches that can later be merged). See the links and references in the

Introduction (see Section 3.2, page 21) for more information.

3.5.3.

BUILD.XML Configuration File

We will be using the ant tool to manage the compilation of our Java source code files, and

creation of the deployment hierarchy. Ant operates under the control of a build file,

normally called

build.xml

, that defines the processing steps required. This file is stored in

the top-level directory of your source code hierarchy, and should be checked in to your

source code control system.
Like a Makefile, the

build.xml

file provides several "targets" that support optional

development activities (such as creating the associated Javadoc documentation, erasing the

deployment home directory so you can build your project from scratch, or creating the web

application archive file so you can distribute your application. A well-constructed

build.xml

file will contain internal documentation describing the targets that are designed

for use by the developer, versus those targets used internally. To ask Ant to display the

project documentation, change to the directory containing the

build.xml

file and type:

ant -projecthelp

To give you a head start, a basic build.xml file

3

clean - This target deletes any existing

build

and

dist

directories, so that they can

be reconstructed from scratch. This allows you to guarantee that you have not made

source code modifications that will result in problems at runtime due to not

recompiling all affected classes.

is provided that you can customize and install

in the project source directory for your application. This file includes comments that

describe the various targets that can be executed. Briefly, the following targets are generally

provided:

compile - This target is used to compile any source code that has been changed since

the last time compilation took place. The resulting class files are created in the

WEB-

INF/classes

subdirectory of your

build

directory, exactly where the structure of a

web application requires them to be. Because this command is executed so often

during development, it is normally made the "default" target so that a simple

ant

command will execute it.

all - This target is a short cut for running the

clean

target, followed by the

compile

target. Thus, it guarantees that you will recompile the entire application, to ensure

that you have not unknowingly introduced any incompatible changes.

3

http://tomcat.apache.org/tomcat-7.0-doc/appdev/build.xml.txt

background image

Apache Tomcat 7

User Guide

32

javadoc - This target creates Javadoc API documentation for the Java classes in this

web application. The example

build.xml

file assumes you want to include the API

documentation with your app distribution, so it generates the docs in a subdirectory

of the

dist

directory. Because you normally do not need to generate the Javadocs on

every compilation, this target is usually a dependency of the

dist

target, but not of

the

compile

target.

dist - This target creates a distribution directory for your application, including any

required documentation, the Javadocs for your Java classes, and a web application

archive (WAR) file that will be delivered to system administrators who wish to

install your application. Because this target also depends on the

deploy

target, the

web application archive will have also picked up any external dependencies that

were included at deployment time.

For interactive development and testing of your web application using Tomcat, the

following additional targets are defined:

install - Tell the currently running Tomcat to make the application you are

developing immediately available for execution and testing. This action does not

require Tomcat to be restarted, but it is also not remembered after Tomcat is

restarted the next time.

reload - Once the application is installed, you can continue to make changes and

recompile using the

compile

target. Tomcat will automatically recognize changes

made to JSP pages, but not to servlet or JavaBean classes - this command will tell

Tomcat to restart the currently installed application so that such changes are

recognized.

remove - When you have completed your development and testing activities, you

can optionally tell Tomcat to remove this application from service.

Using the development and testing targets requires some additional one-time setup that is

described on the next page.

3.6.

Development Processes

Although application development can take many forms, this manual proposes a fairly

generic process for creating web applications using Tomcat. The following sections

highlight the commands and tasks that you, as the developer of the code, will perform. The

same basic approach works when you have multiple programmers involved, as long as you

have an appropriate source code control system and internal team rules about who is

working on what parts of the application at any given time.
The task descriptions below assume that you will be using CVS for source code control, and

that you have already configured access to the appropriate CVS repository. Instructions for

background image

Chapter 3.

First webapp

33

doing this are beyond the scope of this manual. If you are using a different source code cont-

rol environment, you will need to figure out the corresponding commands for your system.

3.6.1.

One-Time Setup of Ant and Tomcat for Development

In order to take advantage of the special Ant tasks that interact with the Manager web

application, you need to perform the following tasks once (no matter how many web

applications you plan to develop).

Configure the Ant custom tasks. The implementation code for the Ant custom tasks is

in a JAR file named

$CATALINA_HOME/lib/catalina-ant.jar

, which must be

copied in to the

lib

directory of your Ant installation.

Define one or more Tomcat users. The Manager web application runs under a security

constraint that requires a user to be logged in, and have the security role

manager-

script

assigned to him or her. How such users are defined depends on which

Realm you have configured in Tomcat's

conf/server.xml

file -- see the Realm

Configuration HOW-TO (Chapter 6, page 63) for more information. You may define

any number of users (with any username and password that you like) with the

manager-script

role.

3.6.2.

Create Project Source Code Directory

The first step is to create a new project source directory, and customize the

build.xml

and

build.properties

files you will be using. The directory structure is described in the

previous section (see Section 3.5, Source Organization page 27), or you can use the Sample

Application (see Section 3.7, page 37) as a starting point.
Create your project source directory, and define it within your CVS repository. This might

be done by a series of commands like this, where

{project}

is the name under which your

project should be stored in the CVS repository, and {username} is your login username:

cd {my home directory}

mkdir myapp <-- Assumed "project source directory"

cd myapp

mkdir docs

mkdir src

mkdir web

mkdir web/WEB-INF

cvs import -m "Initial Project Creation" {project} \

{username} start

Now, to verify that it was created correctly in CVS, we will perform a checkout of the new

project:

cd ..

mv myapp myapp.bu

cvs checkout {project}

background image

Apache Tomcat 7

User Guide

34

Next, you will need to create and check in an initial version of the

build.xml

script to be

used for development. For getting started quickly and easily, base your

build.xml

on the

basic build.xml file

4

cd {my home directory}

, included with this manual, or code it from scratch.

cd myapp

emacs build.xml <-- if you want a real editor :-)

cvs add build.xml

cvs commit

Until you perform the CVS commit, your changes are local to your own development

directory. Committing makes those changes visible to other developers on your team that

are sharing the same CVS repository.
The next step is to customize the Ant properties that are named in the

build.xml

script. This

is done by creating a file named

build.properties

in your project's top-level directory.

The supported properties are listed in the comments inside the sample

build.xml

script. At

a minimum, you will generally need to define the

catalina.home

property defining where

Tomcat is installed, and the manager application username and password. You might end

up with something like this:

# Context path to install this application on

app.path=/hello

# Tomcat 7 installation directory

catalina.home=/usr/local/apache-tomcat-7.0

# Manager webapp username and password

manager.username=myusername

manager.password=mypassword

In general, you will not want to check the

build.properties

file in to the CVS repository,

because it is unique to each developer's environment.
Now, create the initial version of the web application deployment descriptor. You can base

web.xml

on the basic web.xml file

5

, or code it from scratch.

cd {my home directory}

cd myapp/web/WEB-INF

emacs web.xml

cvs add web.xml

cvs commit

Note that this is only an example web.xml file. The full definition of the deployment

descriptor file is in the Servlet Specification

6

4

http://tomcat.apache.org/tomcat-7.0-doc/appdev/build.xml.txt

.

5

http://tomcat.apache.org/tomcat-7.0-doc/appdev/web.xml.txt

background image

Chapter 3.

First webapp

35

3.6.3.

Edit Source Code and Pages

The edit/build/test tasks will generally be your most common activities during

development and maintenance. The following general principles apply. As described in

Source Organization (see Section 3.5, page 27), newly created source files should be located in

the appropriate subdirectory, under your project source directory.
Whenever you wish to refresh your development directory to reflect the work performed by

other developers, you will ask CVS to do it for you:

cd {my home directory}

cd myapp

cvs update -dP

To create a new file, go to the appropriate directory, create the file, and register it with CVS.

When you are satisfied with it's contents (after building and testing is successful), commit

the new file to the repository. For example, to create a new JSP page:

cd {my home directory}

cd myapp/web <-- Ultimate destination is document root

emacs mypage.jsp

cvs add mypage.jsp

... build and test the application ...

cvs commit

Java source code that is defined in packages must be organized in a directory hierarchy

(under the src/ subdirectory) that matches the package names. For example, a Java class

named

com.mycompany.mypackage.MyClass.java

should be stored in file

src/com/mycompany/mypackage/MyClass.java

. Whenever you create a new subdirectory,

don't forget to register it with CVS.
To edit an existing source file, you will generally just start editing and testing, then commit

the changed file when everything works. Although CVS can be configured to required you

to "check out" or "lock" a file you are going to be modifying, this is generally not used.

3.6.4.

Build the Web Application

When you are ready to compile the application, issue the following commands (generally,

you will want a shell window open that is set to the project source directory, so that only the

last command is needed):

cd {my home directory}

cd myapp <-- Normally leave a window open here

ant

6

http://java.sun.com/products/servlet

background image

Apache Tomcat 7

User Guide

36

The Ant tool will be execute the default "compile" target in your

build.xml

file, which will

compile any new or updated Java code. If this is the first time you compile after a "build

clean", it will cause everything to be recompiled.
To force the recompilation of your entire application, do this instead:

cd {my home directory}

cd myapp

ant all

This is a very good habit immediately before checking in changes, to make sure that you

have not introduced any subtle problems that Javac's conditional checking did not catch.

3.6.5.

Test Your Web Application

To test your application, you will want to install it under Tomcat. The quickest way to do

that is to use the custom Ant tasks that are included in the sample

build.xml

script. Using

these commands might follow a pattern like this:

Start Tomcat if needed. If Tomcat is not already running, you will need to start it in the

usual way.

Compile your application. Use the

ant compile

command (or just

ant

, since this is the

default). Make sure that there are no compilation errors.

Install the application. Use the

ant install

command. This tells Tomcat to

immediately start running your app on the context path defined in the

app.path

build property. Tomcat does NOT have to be restarted for this to take effect.

Test the application. Using your browser or other testing tools, test the functionality of

your application.

Modify and rebuild as needed. As you discover that changes are required, make those

changes in the original source files, not in the output build directory, and re-issue

the

ant compile

command. This ensures that your changes will be available to be

saved (via

cvs commit

) later on -- the output build directory is deleted and

recreated as necessary.

Reload the application. Tomcat will recognize changes in JSP pages automatically, but

it will continue to use the old versions of any servlet or JavaBean classes until the

application is reloaded. You can trigger this by executing the

ant reload

command.

Remove the application when you re done. When you are through working on this

application, you can remove it from live execution by running the

ant remove

command.

Do not forget to commit your changes to the source code repository when you have

completed your testing!

background image

Chapter 3.

First webapp

37

3.6.6.

Creating a Release

When you are through adding new functionality, and you've tested everything (you DO

test, don't you :-), it is time to create the distributable version of your web application that

can be deployed on the production server. The following general steps are required:

• Issue the command

ant all

from the project source directory, to rebuild everything

from scratch one last time.

• Use the

cvs tag

command to create an identifier for all of the source files utilized to

create this release. This allows you to reliably reconstruct a release (from sources) at

a later time.

• Issue the command

ant dist

to create a distributable web application archive

(WAR) file, as well as a JAR file containing the corresponding source code.

• Package the contents of the

dist

directory using the tar or zip utility, according to

the standard release procedures used by your organization.

3.7.

Sample Application

The example app has been packaged as a war file and can be downloaded here

7

The easiest way to run this application is simply to move the war file to your

CATALINA_HOME/webapps directory. Tomcat will automatically expand and deploy the

application for you. You can view it with the following URL (assuming that you're running

tomcat on port 8080 as is the default): http://localhost:8080/sample

(Note: make

sure your browser doesn't change file extension or append a new one).

If you just want to browse the contents, you can unpack the war file with the jar command.

jar -xvf sample.war

7

http://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war

background image

Linbrary™ Advertising Club (LAC)

background image

Advertising

Linux Documentation Project - Machtelt Garrels

http://www.tldp.org

Version

Title

Edition

ISBN- 10

ISBN- 13

TLDP

Introduction to Linux

(Third Edition)

paperback

1-59682-199-X 978-1-59682-199-6

eBook (pdf)

1-59682-200-7

978-1-59682-200-9

Bash Guide for Beginners

(Second Edition)

paperback

1-59682-201-5

978-1-59682-201-6

eBook (pdf)

1-59682-202-3

978-1-59682-202-3

http://www.linbrary.com/linux-tldp/

background image

Advertising

Fedora Project Official Documentation

http://docs.fedoraproject.org

Version

Title

Edition

ISBN- 10

ISBN- 13

Fedora

15

Fedora 15

Installation Guide

paperback

1-59682-231-7

978-1-59682-231-3

eBook (pdf)

1-59682-236-8

978-1-59682-236-8

Fedora 15

Deployment Guide

paperback

1-59682-232-5

978-1-59682-232-0

eBook (pdf)

1-59682-237-6

978-1-59682-237-5

Fedora

14

Fedora 14

Installation Guide

paperback

1-59682-228-7

978-1-59682-228-3

eBook (pdf)

1-59682-233-3

978-1-59682-233-7

Fedora 14

User Guide

paperback

1-59682-229-5

978-1-59682-229-0

eBook (pdf)

1-59682-234-1

978-1-59682-234-4

Fedora 14

Security Guide

paperback

1-59682-230-9

978-1-59682-230-6

eBook (pdf)

1-59682-235-X 978-1-59682-235-1

Fedora

13

Fedora 13

Installation Guide

paperback

1-59682-212-0

978-1-59682-212-2

eBook (pdf)

1-59682-217-1

978-1-59682-217-7

Fedora 13

User Guide

paperback

1-59682-213-9

978-1-59682-213-9

eBook (pdf)

1-59682-218-X 978-1-59682-218-4

Fedora 13

Security Guide

paperback

1-59682-214-7

978-1-59682-214-6

eBook (pdf)

1-59682-219-8

978-1-59682-219-1

Fedora 13

SE Linux User Guide

paperback

1-59682-215-5

978-1-59682-215-3

eBook (pdf)

1-59682-220-1

978-1-59682-220-7

Fedora 13

Virtualization Guide

paperback

1-59682-216-3

978-1-59682-216-0

eBook (pdf)

1-59682-221-X 978-1-59682-221-4

http://www.linbrary.com/fedora/

background image

Advertising

Fedora Project Official Documentation

http://docs.fedoraproject.org

Version

Title

Edition

ISBN- 10

ISBN- 13

Fedora

12

Fedora 12

Installation Guide

paperback

1-59682-179-5

978-1-59682-179-8

eBook (pdf)

1-59682-184-1

978-1-59682-184-2

Fedora 12

User Guide

paperback

1-59682-180-9

978-1-59682-180-4

eBook (pdf)

1-59682-185-X 978-1-59682-185-9

Fedora 12

Security Guide

paperback

1-59682-181-7

978-1-59682-181-1

eBook (pdf)

1-59682-186-8

978-1-59682-186-6

Fedora 12

SE Linux User Guide

paperback

1-59682-182-5

978-1-59682-182-8

eBook (pdf)

1-59682-187-6

978-1-59682-187-3

Fedora 12

Virtualization Guide

paperback

1-59682-183-3

978-1-59682-183-5

eBook (pdf)

1-59682-188-4

978-1-59682-188-0

Fedora

11

Fedora 11

Installation Guide

paperback

1-59682-142-6

978-1-59682-142-2

eBook (pdf)

1-59682-146-9

978-1-59682-146-0

Fedora 11

User Guide

paperback

1-59682-143-4

978-1-59682-143-9

eBook (pdf)

1-59682-147-7

978-1-59682-147-7

Fedora 11

Security Guide

paperback

1-59682-144-2

978-1-59682-144-6

eBook (pdf)

1-59682-148-5

978-1-59682-148-4

Fedora 11

SE Linux User Guide

paperback

1-59682-145-0

978-1-59682-145-3

eBook (pdf)

1-59682-149-3

978-1-59682-149-1

http://www.linbrary.com/fedora/










background image

Advertising

Ubuntu Official Documentation

http://www.ubuntu.com

Version

Title

Edition

ISBN- 10

ISBN- 13

Ubuntu

11.04

Ubuntu 11.04

Installation Guide

paperback

1-59682-257-0

978-1-59682-257-3

eBook (pdf)

1-59682-262-7

978-1-59682-262-7

Ubuntu 11.04

Unity Desktop Guide

paperback

1-59682-258-9

978-1-59682-258-0

eBook (pdf)

1-59682-263-5

978-1-59682-263-4

Ubuntu 11.04

Classic Desktop Guide

paperback

1-59682-259-7

978-1-59682-259-7

eBook (pdf)

1-59682-264-3

978-1-59682-264-1

Ubuntu 11.04

Server Guide

paperback

1-59682-260-0

978-1-59682-260-3

eBook (pdf)

1-59682-265-1

978-1-59682-265-8

Ubuntu

10.10

Ubuntu 11.04

Packaging Guide

paperback

1-59682-261-9

978-1-59682-261-0

eBook (pdf)

1-59682-266-X 978-1-59682-266-5

Ubuntu 10.10

Installation Guide

paperback

1-59682-238-4

978-1-59682-238-2

eBook (pdf)

1-59682-242-2

978-1-59682-242-9

Ubuntu 10.10

Desktop Guide

paperback

1-59682-239-2

978-1-59682-239-9

eBook (pdf)

1-59682-243-0

978-1-59682-243-6

Ubuntu 10.10

Server Guide

paperback

1-59682-240-6

978-1-59682-240-5

eBook (pdf)

1-59682-244-9

978-1-59682-244-3

http://www.linbrary.com/ubuntu/

background image

Advertising

Ubuntu Official Documentation

http://www.ubuntu.com

Version

Title

Edition

ISBN- 10

ISBN- 13

Ubuntu

10.04 LTS

Ubuntu 10.04 LTS

Installation Guide

paperback

1-59682-203-1

978-1-59682-203-0

eBook (pdf)

1-59682-207-4

978-1-59682-207-8

Ubuntu 10.04 LTS

Desktop Guide

paperback

1-59682-204-X 978-1-59682-204-7

eBook (pdf)

1-59682-208-2

978-1-59682-208-5

Ubuntu 10.04 LTS

Server Guide

paperback

1-59682-205-8

978-1-59682-205-4

eBook (pdf)

1-59682-209-0

978-1-59682-209-2

Ubuntu 10.04 LTS

Packaging Guide

paperback

1-59682-206-6

978-1-59682-206-1

eBook (pdf)

1-59682-210-4

978-1-59682-210-8

Ubuntu

9.10

Ubuntu 9.10

Installation Guide

paperback

1-59682-171-X 978-1-59682-171-2

eBook (pdf)

1-59682-175-2

978-1-59682-175-0

Ubuntu 9.10

Desktop Guide

paperback

1-59682-172-8

978-1-59682-172-9

eBook (pdf)

1-59682-176-0

978-1-59682-176-7

Ubuntu 9.10

Server Guide

paperback

1-59682-173-6

978-1-59682-173-6

eBook (pdf)

1-59682-177-9

978-1-59682-177-4

Ubuntu 9.10

Packaging Guide

paperback

1-59682-174-4

978-1-59682-174-3

eBook (pdf)

1-59682-178-7

978-1-59682-178-1

Ubuntu

9.04

Ubuntu 9.04

Installation Guide

paperback

1-59682-150-7

978-1-59682-150-7

eBook (pdf)

1-59682-154-X 978-1-59682-154-5

Ubuntu 9.04

Desktop Guide

paperback

1-59682-151-5

978-1-59682-151-4

eBook (pdf)

1-59682-155-8

978-1-59682-155-2

Ubuntu 9.04

Server Guide

paperback

1-59682-152-3

978-1-59682-152-1

eBook (pdf)

1-59682-156-6

978-1-59682-156-9

Ubuntu 9.04

Packaging Guide

paperback

1-59682-153-1

978-1-59682-153-8

eBook (pdf)

1-59682-157-4

978-1-59682-157-6

http://www.linbrary.com/ubuntu/

background image

Advertising

PostgreSQL Official Documentation

http://www.postgresql.org

Version

Title

Edition

ISBN- 10

ISBN- 13

PostgreSQL

9.0

PostgreSQL 9.0

Volume I. The SQL Language

paperback

1-59682-246-5

978-1-59682-246-7

eBook (pdf)

1-59682-251-1

978-1-59682-251-1

PostgreSQL 9.0

Volume II. Server Administration

paperback

1-59682-247-3

978-1-59682-247-4

eBook (pdf)

1-59682-252-X 978-1-59682-252-8

PostgreSQL 9.0

Volume III. Server Programming

paperback

1-59682-248-1

978-1-59682-248-1

eBook (pdf)

1-59682-253-8

978-1-59682-253-5

PostgreSQL 9.0

Volume IV. Reference

paperback

1-59682-249-X 978-1-59682-249-8

eBook (pdf)

1-59682-254-6

978-1-59682-254-2

PostgreSQL 9.0

Volume V. Internals & Appendixes

paperback

1-59682-250-3

978-1-59682-250-4

eBook (pdf)

1-59682-255-4

978-1-59682-255-9

PostgreSQL

8.04

PostgreSQL 8.04

Volume I. The SQL Language

paperback

1-59682-158-2

978-1-59682-158-3

eBook (pdf)

1-59682-163-9

978-1-59682-163-7

PostgreSQL 8.04

Volume II. Server Administration

paperback

1-59682-159-0

978-1-59682-159-0

eBook (pdf)

1-59682-164-7

978-1-59682-164-4

PostgreSQL 8.04

Volume III. Server Programming

paperback

1-59682-160-4

978-1-59682-160-6

eBook (pdf)

1-59682-165-5

978-1-59682-165-1

PostgreSQL 8.04

Volume IV. Reference

paperback

1-59682-161-2

978-1-59682-161-3

eBook (pdf)

1-59682-166-3

978-1-59682-166-8

PostgreSQL 8.04

Volume V. Internals & Appendixes

paperback

1-59682-162-0

978-1-59682-162-0

eBook (pdf)

1-59682-167-1

978-1-59682-167-5

http://www.linbrary.com/postgresql/

background image

Advertising

The Apache Software Foundation Official Documentation

http://www.apache.org

Version

Title

Edition

ISBN- 10

ISBN- 13

Apache

Web Server

2.2

Apache HTTP Server 2.2
Vol.I. Server Administration

paperback 1-59682-191-4

978-1-59682-191-0

eBook (pdf)

1-59682-195-7

978-1-59682-195-8

Apache HTTP Server 2.2
Vol.II. Security & Server Programs

paperback 1-59682-192-2

978-1-59682-192-7

eBook (pdf)

1-59682-196-5

978-1-59682-196-5

Apache HTTP Server 2.2
Vol.III. Modules (A-H)

paperback 1-59682-193-0

978-1-59682-193-4

eBook (pdf)

1-59682-197-3

978-1-59682-197-2

Apache HTTP Server 2.2
Vol.IV. Modules (I-V)

paperback 1-59682-194-9

978-1-59682-194-1

eBook (pdf)

1-59682-198-1

978-1-59682-198-9

http://www.linbrary.com/apache-http/

Version

Title

Edition

ISBN- 10

ISBN- 13

Apache

Tomcat 7

Apache Tomcat 7
User Guide

paperback 1-59682-271-6

978-1-59682-271-9

eBook (pdf)

1-59682-272-4

978-1-59682-272-6

http://www.linbrary.com/tomcat/

Version

Title

Edition

ISBN- 10

ISBN- 13

Subversion

1.6

Subversion 1.6
Version Control with Subversion

paperback 1-59682-169-8

978-1-59682-169-9

eBook (pdf)

1-59682-170-1

978-1-59682-170-5

http://www.linbrary.com/subversion/

background image

Your Advertising Here

More Books Coming Soon!!!

Please Feel Free to Contact Us at

production@fultus.com


Document Outline


Wyszukiwarka

Podobne podstrony:
iR Shell 3 9 User Guide
FX2N 422 BD User's Guide JY992D66101
NoteWorthy Composer 2 1 User Guide
BlackBerry 8820 User Guide Manual (EN)
intel fortran user guide 2
06 User Guide for Artlantis Studio and Artlantis Render Export Add ons
Flash Lite User Guide Q6J2VKS3J Nieznany
Active HDL 63SE User Guide
ACCU Check compact user guide products
Proc SQL User's Guide
01 vpuml user guide
01 bpva user guide
arduino mini user guide id 6826 Nieznany (2)
cinestyle profile user guide v1 Nieznany
ANSYS LS Dyna User's Guide
AE CS3 USER GUIDE EPIC TRAILER TEMPLATE
PayPal Virtual Terminal User’s Guide
iR Shell 3 8 User Guide
CPLD I O user guide

więcej podobnych podstron