Index


 
Symbols
 
.NET, as a web services platform 552
 
A
 
abstract 331
abstract Action
     Parameterized Commands 120
     Struts 137
abstract class 330
     alternative to interfaces 332
AbstractAction 305
     in Cocoon 300
AbstractComponent 170
AbstractLoggable in Cocoon 300
AbstractTableDataModel 172
AbstractTableModel 171–172, 332
accessor method generated by DataExpress 232
action, as proxies for controllers 389
Action class
     Command design pattern 120
     Command pattern 117
     Struts 12
     WebWork 203, 213, 216
Action interface in Cocoon 300
action mapping 140
Action objects, advantages 127
Action servlet 141
     using object pools 440
ActionContext.getContext() 205
ActionError 154
ActionForm
     in Struts 136
     reset() method for object reuse 424
ActionForward 139, 156
ActionInterface 204
ActionListener 170
     in Tapestry 169
Actions 158
     chain 202
     comparing Struts to Cocoon 297
     in Cocoon 297
     Model 2 117
     Struts 13
     using Velocity in Struts 264
     WebWork 201
ActionSupport 204, 211–212, 216
activateObject() 433
adaptor class, definition 64
Add class in Tapestry Schedule application 188
Add page
     InternetBeans Express Schedule application 245
     specification 186
     Tapestry Schedule application 185
     Velocity Schedule application 274
     WebWork’s Schedule application 214
Add servlet in InternetBeans Express Schedule application 245
Add template in InternetBeans Express Schedule application 248
AddDbPoolTagExtraInfo 78
AddDbPoolToApplication 76
AddSchedule View in WebWork 217
AddScheduleBase in WebWork 214–215
AddScheduleEntry in WebWork 214, 219
AddScheduleEntry servlet in InternetBeans Express Schedule application 252
AddScheduleEntryBeanInfo 222
AddScheduleItem in WebWork 214, 216
AddScheduleItem.properties 218
AddToScheduleAction in Struts 155
addUser 37
aggregation compared to composition 383
Aggregator 336
agile
     development 522
     methodologies, characteristics 523
Alexander, Christopher 6
AllTests suite 530
Ant 195, 203
     as an alternative to IDEs 493
     automating JUnit regression testing 536
     use with JUnit 534
Apache 12, 14, 160, 545
Apache Extensible Interaction System 545
application context
     and caching 448
     hidden resource cost 87
application deployment descriptor file 77
Application Engine in Tapestry 161
application server required to host EJBs 441
application servlet in Tapestry 162
application specification 180
     and Visit 167
     in Tapestry 162
     in Tapestry Schedule application 179
Application, Jakarta Taglib 84
ApplicationServlet 161–162
     for Schedule application 173
Architectural Spikes 442
architecture and process intensive 228
ArrayIndexOutOfBoundsException
     as a RuntimeException 403
ArrayList 97
     thread safety 97
Arrays 385
Art of War xvii
art_emotherearth_base 373
art_emotherearth_cachingpool 434
art_emotherearth_facade 454
art_emotherearth_flyweight 448
art_emotherearth_junit 526
art_emotherearth_log4j 516
art_emotherearth_ws 553
art_parameterizedcommands 118
art_sched_ejb 341, 470
art_sched_js 363
art_sched_mvc 93
art_sched_struts 134
art_sched_velocity 270
art_sched_webwork 208
Assembler Broker 18
Assemblers 18
assertEquals() 527
     characteristics 528
assertions web specific 538
assertNotNull() 527
assertSame() 527
assertTrue() 527
association class 452
attribute collection effective use strategy 472
attribute collections 472
attributeRemoved() 461
authentication 470
autoCommit 49
automatic generation of key values 49
automatic paging in Tapestry 184
automatic population of values in Struts 136
automatic validation in Struts 149, 156
Avalon 296
Axis 24, 545
     calling web services 551
     characteristics 546
     configuration 547
     generation of simple web services 548
     publishing web services 556
     tools 547
AxisServlet 553
 
B
 
BaseComponent 171, 181–182
BaseEngine 170
BasePage 179, 189
     in Tapestry 166
BaseURL 537
BaseWebTestCase 537
BDUF 522
BEA Jolt framework 12
bean authors in Model 2 applications 93
bean managed 348
     entity bean defined 348
Bean tags 143
BeanInfo 207, 220, 222
Beck, Kent xxvi
beginResponse() method 189
Benchmark, Jakarta Taglib 84
best practices, definition 20
Big Design Up Front 522
binary RPC, common technical problem 544
Bob’s Framework 312
body element, definition 65
BodyContent 66
BodyTag 63, 65
Booch, Grady 335
bookmark pages, preventing 128
bookmarks in eMotherEarth 395
Borland 417
borrowBoundary() 465
borrowObject() 439
borrowOrderBoundary() 458
bottleneck
     memory in web applications 446
     mistaken optimization 442
boundary and entity classes and resource management 469
boundary and resource management 469
boundary classes
     common characteristics used by Facade 464
     decoupled from web services 559
     defined 336
     encapsulate transaction processing 392
     proxies for EJB 565
     replaced by JDO 565
     stateless classes 422
     unit tests 524
boundary façade, generic version 464
boundary package in eMotherEarth 372
boundary pool in eMotherEarth 439
BoundaryBase 464
BoundaryFacade 457
breakpoint 486, 489
     command while stopped 490
     NetBeans 496
browser, difficulting in testing 536
BSF, Jakarta Taglib 84
build logic into pages 62
buildFlyweightReferences() 448–449
building nested tags 64
business analyst, defining business rules 22
business logic
     in Model 2 applications 92
     placed in the middle tier 23
     business rules 92
     exceptions 402
     HTML select options 113
     unit tests 524
     working definition 20
Business Rules Classes 250, 258
 
C
 
C 424, 508
.class modifier 465
C Language 4–5
C# as web service client 561
C++ 330, 403, 424
Cache, Jakarta Taglib 84
Cacheable 467
     uses 467
cacheable action 128
cached resources 428
caching 468
     application servers 339–340
     as a concern 330
     caution 467
     changing through web.xml 460
     data 233
     defined 446
     JNDI context 361
     motivation 446
     side effect 451
     strategies 470
     Tapestry 469
     using parameterized commands 127
     using soft references 431
call stack 407, 413
CallableStatement 231
callback method 70
     for pooling objects 433
candidate for optimization 416
canonical
     and FlyWeight 449
     list 447
     object defined 447
     objects 428
Caretaker 395
Cascading Style Sheets 74, 567
     in WebWork 207
Castor in Turbine 18
Catalina.bat 414
catalog controller
     eMotherEarth base 374–375
     in servlet-only eMotherEarth 30, 32
     JSP-only eMotherEarth 51
     refactored using JSTL 85
catch, jdb command 487
catching exceptions 403
CDATA 307
central controller 201
CGI 4
chain 546
chained constructor calls 422
class attribute
     JSP 110
     Tapestry page specification 176
Class class 465
     used in JUnit 530
class diagram 335
Class object 465
ClassNotFoundException, technical exception 402
classpath
     investigating through the debugger 486
     jdb command 488
     used in WebWork 203
ClasspathResourceLoader 266
clean separation
     boundary classes and entities 441
     concept in Model 2 applications 100
     responsibilities 113
clear, jdb command 487
client/server 4
     advantages and disadvantages 362
     application 470
     compared to web applications 362
     InternetBeans Express 228
     model object flexibility 104
     scalability 337
     timeframe compared to web projects 522
     using DataExpress 230
     validation 362
     validation with DataExpress 250
clustered environment 107
     and Velocity 267
     application servers 340
COBOL 258
Cocoon 284
     advanced user interface techniques 390
     debugging 508
     documentation of upcoming features 315
     documentation shortcomings 315
     non-transparent infrastructure 323
     performance characteristics 421
     performance profiling 421
     servlet 288
     tool support 317
     use of innovatrive ideas 324
Cocoon 2, details 284
Cocoon.xconf, defined 296
code reviews, consistency in Model 2 applications 117
cohesive method 33, 35, 37
     and unit testing 524
collaboration diagram 94
collection 385
     API 97
     disadvantage 100
     extraneous object references 424
     resizing 427
Collections.synchronizedMap() 432
column object 241, 250
COM/DCOM 544
combination of specification, template, and class 184
Command design pattern 117
     Cocoon 304
     Struts 13
     Struts implementation 137
     WebWork 201, 203
commented out code, warning sign 317
Commercial Profilers 416
commit 50, 391
Common Gateway Interface 4
common resources used by custom tags 87
Commons pool 433, 454
Comparable 385
Comparator 385, 404, 451
     defined 385–389
     recipe for building 386
ComparatorFactory 388
compareTo() 385
compile-time checking 75
complex interactions between objects and Façade 453
Component Reference hyperlink 193
component-based development 228
components in Cocoon 295
components to handle database connectivity 228
Composed Method design pattern xxvii
composition compared to aggregation 382
concat() 426
conceptual stack for undo operations 390
concern, defined 330
concurrent development using Model 2 93
concurrent users 6
configuration document in WebWork 208
configuration for Velocity 265
Confirmation
     in JSP-only eMotherEarth 58
     in servlet-only eMotherEarth 45
Connection 230, 525
connection pool 32, 97, 459
     JNDI 470
     JSP-only eMotherEarth 51
     web services 559
ConnectionPoolProxy 554, 559
consistency in servlet-only eMotherEarth 36
constants for SQL text 97
cont, jdb command 487
container managed entity bean 348
     advantages 348
context object, Velocity 263, 269
context parameter, Tapestry 162
contextInitialized() method 456
contrib library 180
controller
     advantages of trivial controllers 109
     Cocoon 300
     Command pattern 117
     eMotherEarth 373
     façade 469
     frameworks 11
     handling exceptions 403, 406
     Model 2 9, 92, 94, 104
     MVC 8
     optional 123
     publishing framework 293
     servlet and unit testing 524
     Struts 139–140
     VelocityServlet 263
cookies 497
CORBA 544
     hurdles to widespread adoption 544
Core 80
CPU SAMPLES 414
CPU sampling technique 417
create() 358
createColumnModel() 183
cross-cutting API defined 332
Crystal methodologies 523
CSS and generated code 567
custom exception 100, 402
custom JSP tag 10, 157
     in WebWork 200, 202
     InternetBeans Express 255
custom table component in WebWork 213
custom tag library 6, 320
     API 71
     compared to JSTL 382
     debugging 478, 482
     Struts 156–157
     Struts configuration 142
custom taglib in InternetBeans Express 228
custom WebWork tags, value stack and expression language 213
 
D
 
.do 140
data
     encapsulated by model 387
     in cached data 233
data aware 235
     controls 233, 248
     non-suitability to porting to EJB 360
data connectivity in InternetBeans Express Schedule application 238
Data Definition Language 81
Data Express 229–230
     defined 230
     relationship to JDBC 230
data integrity 23
database 230
     connection 68
     connection, eMotherEarth 374
     connection pooling, Struts 13
     connection, servlet-only eMotherEarth 30
     cursor 233
     hosting business rules 22
     servers and transaction processing 391
     structure for Model 2 Schedule application 94
data-centric 289
DataModule 230, 236
     as a singleton 232
     as boundary and entity 234
     defined 231
DataRow, defined 241
DataSet 231, 250
     references DataModule 232
     property 232
DataSource 266
     use in EJB 343–344
     used in Struts 139
DataSourceResourceLoader 266
Date
     java.sql.Date 331
     java.util.Date 331
DateTime, Jakarta Taglib 84
DBTags, Jakarta Taglib 84
DbUnit 534
deadline pressure 92
debug command 492
debugging
     Cocoon 308
     cost vs. time savings of IDE 506
     difficulties 476
     evaluating 505
     frameworks 506
     no-cost 505
     open source vs. commercial 506
     problems with web applications 476
     support in Tapestry 195
declarative validation 156
     defined 152
     Struts validator 151
Decorator design pattern 278
     generic validations in WebWork 224
decoupled classes 332
dedicated user interface designers 55
deltas in cached data 233
deployment descriptor 97
design and architecture using JavaScript 365
design pattern 6, 320, 446
     absence of 10
     Alexander’s book 6
     applied to open source frameworks 228
     definition 6
     framework facilitators 11
Design Patterns:Elements of Reusable Object-oriented Software xxvi, 6
designers in JBuilder 231
desktop application 24, 230, 559
     compared to distributed applications 28
     compared to InternetBeans Express 229, 236
     exception handling 407
     similarity to Tapestry applications 321
     Tapestry 190
     web services client 559
destroyObject() 433
DevelopMentor 545
directives, Velocity Template Language 268
disconnected updates 233
discriminator 467
displacing standard HTML controls 62
displayable hyperlink 379
distributed application, web applications 28
doclet 225
Document Object Model 284
documentation for Cocoon 307
doEndTag 63–64
doExecute() method 211
doghouse, design metaphor 92
domain exception
     defined 402
     thrown by entities 403, 406
     using 402
doStartTag 63–64
dot notation 83
down, jdb command 487
Dreamweaver 157, 318
     MX 318
     UltraDev and integration with Struts 157
DriverManager 230
dt_shmem 483
dt_socket 484
     launching the debugger 484
dump, jdb command 487
DurationEditor 222
dynamic content 5–6, 228
dynamic controls 245
dynamic generation of HTML pages 229
dynamic information 93
dynamic instantiation 127
 
E
 
ebjPassivate() 343
Eclipse 317
EJB
     bean code 341
     complexity 441
     deployment descriptors 72
     disadvantages 565
     home interface 341
     method prefix 353
     remote interface 341
ejbActivate() 343
ejbCreate() 352
ejbLoad() 353
ejbPostCreate() 352
ejbRemove() 353
ejbStore() 353
embedded HTML
     directly into a class 83
     preventing with JSP 50
embedded properties 213
eMotherEarth
     building the base 372
     built with only servlets 29
     with pooled boundary classes 434
EMotherServletBase 34, 43
empty catch block 405
encapsulation 532
     as a concern 330
     complex snippets of code 62
entering() 517
Enterprise JavaBean 97
     business rules scalability 23
     compared to JavaBeans 338
     JNDI 470
     Model 2 9
     persistence layer 564
     scaling applications up to 441
     used in framework comparison 314
entities
     defined 334
     resource management 469
     servlet-only eMotherEarth 43
     unit tests 524
entity bean 339
     complexity 441
     used to update entites 348
     when to use 341
entity package in eMotherEarth 372
EntityBean 350
EntryAction in Parameterized Commands 123
equals() 349
ERROR 220
error handling 68
     in custom tags 75
Error JSP 406
error log 100
errors bean for validations 110
eToys.com 337
EVAL_BODY_AGAIN 65
event driven 4, 407
     paradigm 251
event handlers
     using adaptor classes 64
     using InternetBeans Express 229
exception 101, 402
     handling 401
     problems 402
execute
     front controllers 117
     Struts 138
execution context 477
exit, jdb command 488
exiting() 517
expression language
     defined 206
     related to value stack and custom tags 213
     used with custom tags 213
Extensible Server Pages 289
Extensible Stylesheet Language 284
extension mapping in Struts 140
extraneous object references 424
Extreme Programming 523
 
F
 
Façade design pattern 446, 453
     benefits 463
     benefits of gericity 469
     compared to Flyweight 453
     effectiveness 464
     eMotherEarth 457
     façade class 457-462
     factory object 454, 464
     goal for using 463
     making more generic 464
factory 231, 464
factory class 387
     class advantages 389
     implementation options 389 Factory design pattern 509
     used in logging 509
faster performance, using caching 450
fields, jdb command 487
FileResourceLoader 266
findByPrimaryKey() 355, 358
finder method, defined 355
finite resource pools 87
firePageBeginRender()method 179
fixture
     example 527
     in JUnit 525
Flyweight design pattern 446
     and mutable objects 452
     characteristics 452
     considerations 452
     described 447
     implementation 448
     limitations of mutable objects 453
     object 452
     reference 452
     when it is not suitable 453
focusLost() 364
foreach
     debugging 479
     in Tapestry 192
     in Velocity 273
     JSTL 83
     simplifying complex relationship notation 384
foreign keys 49, 102
form beans 140, 151
formatNumber tag 83
formatting 207
Forte for Java 493
framework
     building from custom tags 88
     callback 179
     component 134
     Critical Mass 318
     definition 11
     design considerations 319
     Developer Community 319
     Documentation 315
     ease of use 320
     feel 322
     flexibility 321
     innovative ideas 323
     insularity 322
     JavaDoc 316
     lifetime and maintainability 315
     Model 2 11
     places in use 319
     power 321
     scalability 314
     source code 316
     speed of development 313
     suitability to the application 312
     tool support 317
     transparent infrastructure 323
     user interface 320
     using custom tags 62
freeMemory() 412
Front Controller 201
     design pattern 118, 204
     in WebWork 200
FTP 419
 
G
 
Gamma, Helm, Johnson, and Vlissides 6
Gang of Four 117, 447
generator, FileGenerator 294
generic Action 137
generic controller servlet 123
     in Model 2 118
generic editors, validations in WebWork 224
generic Exception 101
generic framework 134
generic Model 2 application as base for Velocity Schedule application 262
generic parts 11
generic type 97
generic versions of concrete objects using the JSP useBean 110
Generically Returning Boundaries 467
GenericKeyedObjectPool 434, 454, 458
     compared to SoftReferences 440
GenericKeyedObjectPool.Config 437
GenericServlet 435, 454
getApplicationSpecificationPath in Tapestry's Hello, World application 164
getEngine() method 167
getLogger() 513
getOut 70
getPage() method 182
getProductBoundary() 460
getVisit() 168
global properties compared to context parameters 174
GoF 6
good design practices at the expense of memory usage 100
granular methods 33
     as support for unit testing 524
     difficulty in JSP 60
graphic designers, user interfaces in Struts 157
 
H
 
handleBookmark() 399
Handler chains 547
handleRequest(), method in Velocity 264
handleRestore() 399
handlers 546
     compared to filter servlets 546
     examples 546
handling presentation with JSP 62
Hangman tutorial
     for Tapestry 168
     Tapestry sample 194
hard coded into the JSP 113
hashCode() 349
HashMap
     compared to WeakHashMap 431
     used for lazy loading 102
Hashtable 127
     used in Velocity Template Language 268
heap 411
heavy mixture of presentation and code elements 55
heavy weight methodologies
     characteristics of 522
heavyweight resources 472
Hello, World
     in Tapestry 162
help, jdb command 488
Herculean effort 313
Hibernate
     described 566
     disadvantages 566
hidden resource cost, potential in custom tags 87
high cohesion 89, 320
     as a framework consideration 324
     desirability in frameworks 361
high coupling 88
highly cohesive classes in Model 2 116
Historical HTML comments 5
Home class in Tapestry's Schedule application 179
home interface use 345
Home page in Tapestry Schedule application 176
home page 189
     specification in Tapestry 162
     template in Tapestry 162
hopelessly coupled 50
Howard Lewis Ship 160, 193
HTML
     as JSP pages 124
     generated from code 567
HTML components
     in Tapestry 160
HTML select tag
     generating in Model 2 113
     in WebWork 216
HTML serializer 287
HTML tables, generating tests 539
HTML tags 143
HTML template 161, 233
HtmlSQLResult 38, 66, 80
HTTP get/post semantics 190
HTTP header 285
HttpMonitor 497
HttpServletRequest 204
     and WebWork 204
     framework replacements 322
HttpSession
     as memento caretaker 401
     automatic handling in Tapestry 186
     compared to Tapestry's Visit 167
     implemented as a Map in WebWork 205
HttpSessionAttributeListener 461
HttpUnit 537
     used when evaluating frameworks 314
Husted, Ted xvii
 
I
 
I18N 80
I18N, Jakarta Taglib 84
IComponent 170
IdComparator 451
identical controller servlets 117
idl2java, similarity to WSDL2Java 549
IEngine 169
     defined 167
IEngineService 169
IllegalArgumentException 222
IMarkupWriter 170
immutable 426, 452
     Flyweight design pattern 452
implicit exception object 406
implicit JSP objects replaced by custom tags 85
inBounds() method 248
info() 517
information flow between development teams 93
inheritance, suitability 320
init parameter 32, 75
     and Struts controller 141
     in Parameterized Commands 125
inner class, used as a memento 396
Input, Jakarta Taglib 84
Insert component 192
Inspector 195
     debugging support 507
instanceof 467
Insularity, defined 322
interaction with a framework as a concern 330
interface
     decouple implementation, defined 332
     hide implementation in frameworks 331
     implementation hiding technque 330
     Model 2 applications 93
internationalization
     in WebWork 204
     Struts 13, 145
     Tapestry 194
     using JSTL 83
     WebWork 213
Internet Engineering Task Force 545
Internet Express Controls 234
Internet time 522
     as related to unit testing 522
InternetBeans Express 228
     advanced user interface techniques 390
     and exceptions 407
     and transaction processing 401
     debugging 507
     non-suitability for EJB 314
     non-suitability for optimization 469
     non-suitability when porting to EJB 360
     object pooling 440
intersperse utility code 37
InvalidBalanceException 402
IO, Jakarta Taglib 84
IPropertySelectionModel 189
IRender 170
IRequestCycle 171
     defined 169
ITableDataModel 172
ITableModel 172
iterate
     Struts 145
     using JSTL 82
     WebWork 206
iterator
     Tag, definition 64
     Tapestry’s ITableDataModel 172
     WebWork 206, 213
ixCheckBox 236
ixComboBox 237, 248
ixComponents 257
     defined 236
ixControl 234, 236
     related to PageProducer 235
ixHidden 237
ixImage 236
ixImageButton 237
ixLink 236
ixListBox 237
ixPassword 237
ixPushButton 237
ixRadioButton 237
ixSpan 236
ixSubmitButton 236–237
ixTable 236, 257
ixTextArea 237
ixTextField 237
 
J
 
.jws 547
J2EE 28
Jackson, M.A. 442
Jacobson, Ivar 335
Jakarta 157, 160, 262, 368, 454
     Commons Pools 433
     JSTL implementation 80
     Log4J 508
     Struts 12
     Turbine 14
JarResourceLoader 266
Java Community Process 80
Java Data Objects 565
Java developers, focus on model building 93
Java Naming and Directory Interface 361
Java reflection 161
     Struts 13
Java Server Pages 6
java.hprof.txt 413
java.sql., as alternative to collections 99
Java2WSDL 551
JavaBean
     and Tapestry's Visit object 167
     API in WebWork 207
     as the model 92
     compared to EJB 338
     criteria 333
     hosting business rules 22
     in Model 2 9
     in Tapestry 161
     specification 220
     Struts 13
     used in JSP 6
     using 333
JavaDoc 72
     for WebWork 225
     in InternetBeans Express 257
     in Tapestry 192
JavaScript 363, 568
     business rules 24
     client-side validation 362
     embedded in model 368
     including 364
     placement in the model bean 365
     placement of the code 363
     testing 537
     used in XSP 301
     Velocity comparison 263
     when to use 368
javax.servlet.jsp.jspException 406
jbInit() 232
JBoss 340
     configuration 343
jboss.jcml 343
JBuilder 228, 257, 259, 498
     Code Insight 504
     Code Insight and debugging 505
     debugger capabilities 502
     debugging in alternative servlet engines 499
     dynamically investigate variables 505
     Enterpise Edition 498
     evaluate and modfiy dialog 503
     evaluating as a debugger 506
     incorporating JRun 499
     JavaDoc 316
     loaded classes view 503
     project setup 498
     starting the debugger 501
     Struts 157
     support for frameworks 317
     support for JUnit 535
     thread view 502
jdb
     breakpoint options 489
     catch command 489
     command options 486
     cont command 490
     description 483
     dump command 490
     list command 489
     locals command 490
     motivation for use 483
     next command 489
     rational for use 493, 505
     roadmap for use 492
     run command 489
     running 486
     sourcepath command 489
     starting 483
     step 489
     stop at command 489
     stop in command 489
     thread command 489
     thread command to restict servlet engine 490
     threads command 488
     viewing expressions 491
JDBC 534
     and DataExpress 230
     interfaces 331
     models 99
JDBCFixture 534
JDO
     defined 565
     underlying implementation 565
JEdit 317
Jetty 195
JMeter 419, 421
JMS, Jakarta Taglib 84
JNDI 343
     compared to database connection 361, 470
     defined 361
     Jakarta Taglib 84
     mangaged resource 470
     pooling 470
     typical strategy 470
Jolt 12
JRun, incorporating into JBuilder 499
JS_ITEM_VALIDATION 367
JScript 362
JSP 4
     as substitute for servlets in Model 2 116
     as view framework for WebWork 202
     as view in Model 2 9
     breakpoints in NetBeans 496
     coding horrors in 6
     compared to Velocity 262, 282
     compared to XSP 289
     debugging 477–478
     debugging in NetBeans 493
     disadvantage 55
     ideal for response 92
     in Model 2 9
JSP * 151
JSP custom tag library
     automatic behavior and pitfalls 116
     InternetBeans Express 229
     manipulating JavaBeans 62
     runtime 68, 70
     Struts 13
     tool support 318
JSP expression 72
     compared to JSTL 83
JSP-centric 9
JspException 68
jspInit 52
JSR 80
JSTL 80, 107
     advanced data type handling 381
     advantage over scriptlets and expressions 381
     combined with Struts 323
     debugging 478
     dot notation 382
     handling complex relationships 384
     InternetBeans Express custom tags comparison 257
     JBuilder 259
     limitations of some tags 319
     Model 2 applications 110
     RAD frameworks comparison 314
     simplifying usabilty coding 380
     tool support 318
     transaction processing 393
     universal plug-in 321
     used in WebWork 324
     Velocity comparison 274, 282
JTable 8, 172
JTextField 364
JTree 8
JUnit
     assertEquals() 527
     assertNotNull 527
     assertSame() 527
     assertTrue() 527
     Automating Regression Testing 535
     DbUnit 534
     described 525
     fixture 525
     Running Tests 528
     test suite 529
     TestCase 525
     to call web services 559
just in time repository of data 205
jwc extension 184
jwcid attribute 178
JWebUnit 536
     described 537
     similarity to JUnit 537
 
K
 
Kernighan, Brian 508
key generation 23, 393
     isolation 393
KeyedBoundaryPoolFactory, used in Facade 466
KeyedPoolableObjectFactory 433
     defined 433
     in eMotherEarth 434
     used in Facade 466
kill, jdb command 487
Knuth , Donald 442
 
L
 
LabelValueBean 134
large HTML data structure 40
Lazy instantiation
     compared to application server caching 472
     defined 472
lazy loading 102, 428
less code, using caching 450
less memory, using caching 450
level, used in loggers 510
library
     in JBuilder 498
     in Tapestry 174
lightweight exception, defined 101
List
     EJB 346
     eMotherEarth base 377
     generic type 97
     sorting 385
list, jdb command 488
list resource bundle 241
Listeners, defined 420
listeners, in JMeter 420
ListingAction in Parameterized Commands 121
load balancing using Velocity 267
Load Runner 419
load testing
     compared to profilers 419
     frameworks 421
     motivation 419
local forward 140
local object vs. remote interface 360
local variables
     and threads 476, 502
     debugging in NetBeans 496
locale 145
     in Tapestry 162
localization 83
     properties 145, 205
locals, jdb command 487
locate() method 241
log, from servlet context 33
Log, Jakarta Taglib 84
Log4J 508
     Appender 512
     configuration options 518
     described 516
     formatting options 511
     in Tapestry 164, 179
     in WebWork 209
     pattern formatter 516
logger
     capturing memory measurements 412
     choosing 519
     configuration elements 510
     differences in XML output 518
     helper methods 516
     hierarchy 509
     in frameworks 519
     levels 510
     Log4J default output format 511
     namespace hierarchy 509
     output format 511
     package name hierarchy 509
     parent logger 509
     primary differences 516
     related to debugging 508
     SDK compared to Log4J 512
     SDK convenience methods 514
     SDK default output format 511
     SDK Handlers 512
     speed of initial test 511
     Velocity 266
Logic tags 144
loose coupling 197, 204
     systems 320
low coupling 89, 320
     as a framework consideration 324
     desirability in frameworks 361
     in Tapestry 323
 
M
 
Macintosh Computer 5
Macromedia 499
magic markers 5
Mailer, Jakarta Taglib 84
maintenance
     application 60
     in Model 2 applications 117
     JSP problems 62
     too much Java in JSP 6
makeObject() 433
Map
     similarity of Velocity Context 269
     used in Cocoon 300
     used in EJB 348
mapping 156
master controller servlet in Struts 137
maxMemory() 412
Mazzocchi, Stefano 284
measuring memory via the operating system 411
Memento
     applied to web applications 395
     design pattern 395
     impact on Model 2 401
     participant classes 395
     suitability of inner classes 397
memory 470
     intensive cache 430
     leak, defined 424
     measuring usage 410
     motivation for caching 446
     profiler 412
     speed tradeoff characteristics 377
     usage measuring 410
Mercury Interactive 419
mess of mixed presentation and logic 59
messy code in JSP-only eMotherEarth 55
metadata
     and scoped DataRow 241
     in cached data 233
meta-property information, defined 207
method sampling technique 413
Microsoft and web services 545
mixed HTML and scriptlet debugging 479
mixed Java and HTML 74
mixed scriptlet and presentation code 55
     eliminated with custom tags 73
mixing of code and presentation logic 60
model
     defined 334
     in Model 2 applications 94
     in publishing framework 293
     MVC 7
     order of creation in Model 2 93
     to provide sorting 384
     used in Model 2 92
Model 2 201
     application and InternetBeans Express 237
     building modular applications 337
     changes required for EJB 360
     compared to Tapestry 196
     compared to WebWork 201
     comparing frameworks 322
     definition 9
     disadvantages 116
     distinction between design pattern and framework 12
     easily optimized architecture 469
     Emergence 9
     eMotherEarth 372
     error pages 406
     evolution towards 10
     framework 92
     in Struts 12
     incorporating web services 556
     information flow 94
     migrating to EJB 340
     migration 338
     overview 92
     porting to EJB 565
     related to Pull Hierarchical MVC 200
     resource management 469
     separating concerns 330
     sorting user interface elements 384
     Struts 156
     suitability for use with EJB 315
     transaction processing 391
     undo 401
     unit testing 524
     use of EJB 360
     use of model beans 334
     user interfaces 566
     using Cocoon 288
     using memento 401
model bean
     as value objects 102
     in Model 2 10
     Struts 13
     used in WebWork 201
Model-View-Controller 200
     and Tapestry components 170
     building modular applications 337
     definition 7
     in Cocoon 284
     in Tapestry 197
     in WebWork 200
     model beans 334
     related to publishing framework 293
modular application, defined 337
modulus 379
multi-cast for loggers, defined 512
multi-page scrolling in Tapestry 184
multi-threaded access 28
MVC 7, 9, 20
MySQL 49, 331, 348
     key generation 393
 
N
 
naming service, defined 361
narrow() method 343
NASA 313
Navigation assembler 18
NetBeans 493
     compared to jdb 497
     description 493
     evaluating as a debugger 506
     starting debugger 493
     support for JUnit 535
newsgroups 319
next, jdb command 487, 489
NoNullNameException, domain exception 402
NullPointerException
     as a RuntimeException 403
     as a technical exception 402
 
O
 
Object Creation 422
Object Management Group 544
object pool 463
     and Tapestry 469
     defined 427
     in application servers 339
     in Tapestry 160, 168, 189
object reference, compared to soft and weak references 428
Object Reuse, motivation 423
ObjectModelHelper 305
Object-oriented programming 7, 319
OMG 544
onBlur 364
open source 200, 318, 566
     application servers 340
     compared to commercial frameworks 228
     documentation 315
     frameworks 12
     JSTL 80
     JUnit 525
     Log4J 516
Open Symphony project 200
opportunities for code reuse 69
Optimizeit 417
Oracle 331
Order boundary class, in eMotherEarth 391
OrderInfo 558
Originator 395
outline, in composed method 33
 
P
 
.page in Tapestry 165
package structure, in eMotherEarth 372
packages, advantages of inherent design 466
page
     Jakarta Taglib 84
     properties 168
     specification in Tapestry 165
page-at-a-time scrolling 372
     motivation 378
pageContext 77
     and scriptlets 384
     used in JSTL 83
PageProducer 233–234
     as controller 234
     defined 234
     for event notification 234
     related to ixControls 235
     roles in the application 235
parallel development hindered by JSP 60
parameterized commands 118
     advantages 127
     disadvantages 127
     in models 100
     Struts 137, 158
parameterless constructor in stateless classes 422
parse() 517
Parsing HTML 6
passivateObject() 433
path of least resistance 258
pattern 7
PDF 289, 295
peak concurrent users 440
performance
     keys to effective 472
     motivation 410
     penalty, using thread safe collections 97
     profiling components 412
     tuning 24
Perl 4–5
persistence 197
     and EJB 360
     as a concern 330
     defined 564
PHP, replaced by Velocity 262
Pike, Rob 508
pipeline 294
     components 295
     defined 286, 298
     in Cocoon 284
     setup 300
     stage in Cocoon 287
     types of steps 287
pivot point handler 546
Plain Old Java Objects 564
     defined 564
pluggable services, Turbine 14
POJO
     developer attitude 564
     ideal for model 92
Pollo 299, 317
pool of objects 447
pooling page objects
     in Tapestry 170
PoolNotSetException 403
pop, jdb command 488
post(), in DataSet 233
post-back servlet 378, 384
     debugging in InternetBeans Express 507
premature optimization is the root of all evil 442
PreparedStatement 49, 231
presentation layer, using JSP 50
primary key class 349
print writer 34
print, jdb command 487
private member variables, while debugging 491
private methods, used in composed method 33
private nested classes 183
ProcedureDataSet 231
processor resources in Cocoon 286
product boundary class in eMotherEarth base 377
Profiling, motivation 410
promoted to the base class servlet 34
proof-of-concept 442
     application 314
Properties 144
     in Velocity 268
     tag 206
PropertyDescriptors 224
PropertyResourceBundle 144
PropertySelection 187, 189
PropertySelectionModel 189
proxies for the controller servlet 138
pseudo events 197
publishing framework 284, 289
     benefits 286
     defined 285
Pull Hierarchical Model-View-Controller 200
Pull HMVC 200
Pull Model 205
pure virtual class 330
     defined 330
 
Q
 
qryEvents_calcFields() method of DataSet 241
QueryDataSet 231, 238
Queue for object pools 427
quiescent servlets 127
 
R
 
RAD 228, 313, 360, 390
     and resource management 469
     development compared to Model 2 228
     framework 255, 313
     problems 258
     shortcomings 390
     web development framework 228
     when it makes sense 313
Random, Jakarta Taglib 84
Range checking 102
Rapid Application Development. See RAD
Rational Software 335
redefine 492
     jdb command 488
refactor 523
     to support composed method xxvii
references, Velocity Template Language 268
referential integrity 23
reflection 464–465
     and efficiency 566
     and hibernate 566
     in WebWork 213
Regexp, Jakarta Taglib 84
regression test
     benefits 540
     defined 523
remote object, desirable characteristics 360
remote procedure calls 544
render phase, in Tapestry 169
Rendering Pages, InternetBeans Express 235
Request, Jakarta Taglib 85
request/response pairs 92
RequestCycle 169–170
RequestDispatcher
     in Model 2 applications 105
     Struts' alternative 139
requestor 546
requirements 92
     document business rules 22
reset() method 423
resource allocation, distributed applications 28
resource loading in Velocity 266
resource management 24
resource protection 36
ResourceBundle 205
resources, HTML parsing 6
response code used in WebWork 202
Response, Jakarta Taglib 85
restoreMemento() 397
ResultSet 231
     exposing through the model 99
ResultSetMetaData 68, 231
resume, jdb command 487
rethrow 404
returing objects to a pool 460
returnBoundaries() 468
reusable library 454
rewind phase in Tapestry 169
RMI 544
     over IIOP protocol 544
rmic, similarity to WSDL2Java 549
rollback 50, 391
root directory 547
Rules of Optimization 442
Rumbaugh, James 335
run 492
     jdb command 487
Runtime class, measuring memory 412
run-time expression, custom tag deployment descriptor 72
RuntimeException 101, 403
 
S
 
safety features in Java 403
save points in JDBC 3 391
SaveAction in Parameterized Commands 124
saveChanges() in DataSet 233
SaveEntry in Model 2 94, 113
saveMemento() 397
SAX events 287, 294
scalability 97, 314, 467
     concerns 337
     problems 6
     using web services 545
SchedTable 181
     component 174
sched-template
     in InternetBeans Express Schedule application 245
     InternetBeans Express schedule application 244
Schedule Application using EJB 340
Schedule boundary class in Velocity 276
ScheduleAddException in Model 2 100
ScheduleBean
     changed to EJB proxy 357
     in Model 2 94
     in UML 336
ScheduleDb in Struts sample 134
ScheduleEntry in Model 2 94, 109
ScheduleEntryAction in Struts 147
ScheduleEntryView
     in Model 2 94
     using JavaScript 364
ScheduleItem
     as a local entity class 359
     changed for WebWork 221
     in Struts 136
     in Tapestry 183
     in Tapestry Schedule application 190
     in UML 335
     in Velocity 276
ScheduleView
     in Model 2 94, 105
     in Struts 142
Scheduling application in Cocoon 302
Scrape, Jakarta Taglib 85
Screen assembler 18
scriptlet
     replaced by custom tags 85
     to handle complex relationships 383
Scrum 523
SDK profiler, recipe for use 414
secrets to high performance 427
separate resource file in Struts 144
separation of code and presentation 83
separation of concerns 200
     in Model 2 113
     using Velocity 263
     validations 362
separation of logic and presentation 62
     violation in servlets 44
separation of responsibilities 69, 202
     and Struts 157
     failure in using only custom tags 89
     in Model 2 93
     relating to Model 2 and EJB 360
     violated with JSTL SQL tags 394
separation of responsibilities using custom tags 87
serialization 197, 294–295
     compared to JDO 565
     in Cocoon 286
     stateless classes 422
     XMLSerializer 295
server.config 547
server-config.wsdd 556
service-based architecture 19
ServiceLocator 549, 552
servlet
     2.3 specification 461
     API 29
     as controllers 116
     chaining related to Cocoon 294
     configuration parameter 379
     context and caching 447
     context in custom tags 77
     engine 477
     ideal for request 92
     starting in debug mode 485
     to build applications 29
ServletActionContext.getRequest() 205
servlet-centric 9
     approach to Model 2 116
servletConfig 379
ServletContext 100, 455
     accessibility from models 100
     compared to Session Context 343
     for logging in abstract Actions 120
ServletContextListener 455
     defined 455
ServletDispatcher 201, 203, 209
servletGet() method 235
servlet-only framework, disadvantages 255
ServletRequestAware 204
session
     advantages and disadvantages in Model 2 107
     advantages as caching mechanism 107
     and extraneous object references 425
     and facade 459
     as a magical repository 472
     as caretaker 398
     as caretaker for memento 401
     disadvantage of caching mechanism 107
     Jakarta Taglib 85
     manual invalidation 426
Session Bean to encapsulate business rules 356
session cop 473
     defined 87
session event listener 362
session management in Tapestry 160
session tracking and Tapestry 160
SessionAttributeListener 469, 472
SessionAware 205
SessionContext, defined 343
SessionScrubber 461
     use of Facade 463
session-specific DataModule 244
set based 23
set, jdb command 487
setAutoCommit() method 391
setElementId() method in InternetBeans Express 245
setUp() 525
     overriding 531
setupLogger() 513
setVisit() 168
Shakespearean plays 551
shared memory
     and remote machines 484
     model 484
ShoppingCart 43
ShoppingCartItem 43
ShoppingCartMemento 397
ShowCart
     in JSP-only eMotherEarth 55