Index
D
DAO (Data Access Object) pattern, 257
code portability, 264
helper classes, testing without EJB container, 412
JDBC abstraction framework, 328
sample application data access, 319, 353
BoxOffice interface, 353
calling stored procedures using JDBC, 357
implementing queries using JDBC, 355
implementing updates using JDBC, 356
testing data access, 354
data accessdisconnected, 267
EJB tier, 273
entity beans, 274, 285-308
exclusive locking, 301
helper interface business methods, 295
issues, 268-73
JDBC RowSets, 267
JSP pages, 276
local interfaces, 294
locking, 269, 283
middle tier, without EJBs, 275
objectives, 252
optimistic locking, 269
pessimistic locking, 269
relational databases, accessing, 311
O/R mapping technologies, 315
SQL-based database access, 312
sample application, 278-83, 319
DAO pattern, 319, 353
JDBC, 319
servlets, 276
session EJBs, 275
technologies, 25-26
268
using EJBs, 22, 24-26
web tier, 276
where to perform (in which tier), 273-78
data bindingdescription, 492
HttpServletRequestDataBinder class, 505
JSP custom tags, 494
JSP pages, 446
<jsp:setProperty> element, 446
problems with, 446
MultiActionController class, 486
MVC web frameworks, 493
JavaBeans, 493
user input, processing, 492
data integritydatabase locking, 302
Data Transfer Object Factory design patternsimplications of using EJB, 21
data validationbusiness logic and, 496
guidelines for validation, 498
moving operation to data, 656
options for validation, 496
sample application, 498
DefaultUserValidator class, 499
FormController class, 500, 501
semantic data validation, 496
syntactic data validation, 496
user input, processing, 496
DataAccessException classcompared to SQLException class, 328
JDBC abstraction framework, 328
subclasses, 328
CleanupFailureDataAccessException class, 328
DataAccessResourceFailureException class, 328
DataintegrityViolationException class, 329
DeadlockLoserDataAccessException class, 329
InvalidDataAccessApiUsageException class, 329
InvalidDataAccessResourceUsageException class, 329
OptimisticLockingViolationException class, 329
UncategorizedDataAccessException class, 329
DataAccessResourceFailureException classJDBC abstraction framework, 328
database driven modeling, 253-55
database interactiontesting, 99
database locking, 302
databasesaccessing relational databases, 311
O/R mapping technologies, 315
SQL-based database access, 312
configuring databases, 631
DataIntegrityViolationException classJDBC abstraction framework, 329
DataSource interfacecompared to Connection interface, 340
creating connection pool, 597
JdbcTemplate class and, 340
RdbmsOperation class and, 343
writing effective tests, 87
DataSourceUtils classJDBC abstraction framework, 336
Date classcompared to Timestamp class, 359
Date class, Java.util packagereplacing by long object, 659
dateTimeElement() method, FormatHelper class, 701
DeadlockLoserDataAccessException classJDBC abstraction framework, 329
deadlocksdatabase locking, 302
debuggingsee also 157
code emitting messages, 161
debugging tools, 160
logging, 160
refactoring, 142
declarative exception handling, 461
declarative transaction managementusing EJBs, 23
declareParameter() method, RdbmsOperation class, 344
decoupling componentsObserver design pattern, 122
decoupling controllers and views, 517, 684
advantages, 517
named view strategy, 517, 684
static attributes, 519
view definitions, 519
View interface, 518
DefaultUserValidator classimplements Validator interface, 499
sample application data validation, 499
denormalization, RDBMS, 263
data access sample application, 281
dependent value classesEJB 2.0 CMP, 298
deploy sub-directory, JBoss server, 601
service definition files, 601
deploying applicationssee also 51
configuring server to run application, 596
authentication, 597
creating connection pools, 597
creating JMS destinations, 597
installing libraries, 598
EAR deployment, 584
risk management, 70
sample applicationcreating connection pools, 602
creating JMS destinations, 603
JBoss deployment descriptors, 605
JBoss server, 601, 607
parameters for deployment, 600
steps in deploying application, 600
Ant build tool, 600
using EJBs, 20
writing proprietary deployment descriptors, 598
deployment descriptorswriting proprietary deployment descriptors, 598
JBoss deployment descriptors, 605
deployment unitsEJB JAR files, 584
extended deployment units, 585
packaging J2EE applications, 584
WARs, 584
653
design considerations, J2EE, 19
see also OO design principles.testing design implications, 105
design patternsBusiness Delegate pattern, 423
business methods interface pattern, 386
Command design pattern, 125
Composite Entity pattern, 290
DAO (Data Access Object) pattern, 257
Data Transfer Object Factory design patterns, 21
EJB Command design patterns, 374
enterprise architecture goals, 16
expressing using reflection, 132
Factory design pattern, 136
Fat Key pattern, 293
frameworks compared, 167
Front Controller pattern, 447
Generic Attribute Access design patterns, 21
implications of using EJB, 21
MVC (Model View Controller) pattern, 36-38
Observer design pattern, 122
Prototype design pattern, 141
Seppaku pattern, 303
Service Locator pattern, 418
Session Facade design patterns, 21
Singleton design pattern, 139
Strategy design pattern, 119
Template Method design pattern, 116-20
Value Object Assembler pattern, 266
Value Object J2EE pattern, 149
Visitor design pattern, 241
design-level optimization, 614
compared to code-level optimization, 614
development environment, 59
development tools, choosing, 63-67
Digester, Apache Commonsinfrastructure, support packages for, 402
DispatchAction class, org.apache.struts.action package, 461
compared to MultiActionController class, 484
Dispatcher class, org.infohazard.maverick package, 461
display show screensample application user interface,, 189
distributed applicationssee distributed architecture.
distributed architecturechecked exceptions, 130
entity beans guidelines, 307
J2EE design, 676
performance, 612, 653
application partitioning, 612
collocating components in JVM, 663
minimizing remote calls, 655
moving data efficiently, 658
RMI (Remote Method Invocation), 653
SLSB implementing design patterns, 373
EJB Command, 374
Session Facade, 374
using EJBs, 21
documentation, 158-60
guidelines, 159
self-documentation, 159
summarized, 176
domificationfacilitating XML generation, 241
Maverick, 462
using with XPath, 553
using with XSLT, 553
sample application views, 556
Domify open source project, 242
installing, 696
Ant build tool, 696
DomifyTag class, com.interface21.web.tags package, 554
doTransform() method, XsltView class, 698
duplication of codesee code duplication.durable subscriptionssee subscription durability.Dynamiedge site caching, 671
dynamic proxiesreflection, 137