APPENDIX B 424 Spring-related projects Whether you are using Hibernate or iBATIS, Struts or Tapestry, AppFuse will guide you from writing the actual code, to creating test cases, to editing configu- ration files, to wiring everything together in Spring. When it comes to creating enterprise applications quickly, AppFuse is a quick fuse indeed. B.2 Rich Client Project As you probably have figured out from reading this book, a good portion of the Spring framework is dedicated to simplifying server-side development. The Rich Client Project (RCP) addresses the other side of the equation by creating a frame- work for developing applications for the client side. The goal of the RCP is to provide a framework for developers to follow best practices and create Swing applications quickly. Specifically, it aims to ■ Provide a means to configure Swing actions in a central location and exter- nal to the actual Swing code. ■ Provide integration points with existing rich-client projects (much like Spring’s support for existing projects, such as Hibernate). This includes inte- gration with two existing layout managers: jgoodies-forms and TableLayout. ■ Provide a set of common support classes for common rich client require- ments, such as dialogs, wizards, progress bars, and tables. As of the publishing of this book, RCP was still in the alpha stage. But develop- ment is continuing and you can keep an eye on this project at http://sourceforge. net/projects/spring. B.3 Spring.NET Believe it or not, Java is not the only technology out there. Other languages are flourishing in the enterprise development space. In fact, there is also a com- pany in Redmond, Washington, that is staying competitive with a platform of their own. In case you have not seen through our sarcasm yet, we are talking about Microsoft. Specifically, we are referring to their language that mirrors Java: C#.NET. Recognizing the benefits of a lightweight framework like Spring, some enter- prising (pun intended) developers have created a similar framework for the .NET platform, aptly named Spring.NET. The roadmap for Spring.NET is to pro- vide core container services first—namely inversion of control. This will be fol- lowed by AOP support and enterprise services.
Spring.NET 425 As of the publishing of this book, Spring.NET has not had a production release. However, in August 2004, the first release candidate was published: Spring.NET 0.6. The features already available include ■ Constructor and setter dependency injection ■ Singleton and prototype bean support ■ Autowiring ■ .NET application configuration file support Spring.NET is still in its early stages but is being actively developed. You can find out the latest status of Spring.NET at its cleverly named website: http://www. springframework.net.
index Symbols AbstractJmsMessageDrivenBean 232 AbstractMessageDrivenBean 232 #springBind 326, 331 AbstractPdfView 310, 341 #springBindEscaped 327 example of 341 *, regular expression 110 AbstractStatefulSessionBean 232 +, regular expression 109 AbstractStatelessSessionBean 232 ., regular expression 109 AbstractWizardFormController .NET 195, 226 _cancel 298 \ , regular expression 110 _finish 298 _target 297 _target 297 example of 295 Numerics getInitialPage() 297 getTargetPage() 297 80–20 rule 144 in Controller hierarchy 283 motivations 295 A pages 296 processCancel() 298 AbstractCommandController processFinish() 296–297 example of 287 validatePage() 299 for forms 290 validating 299 in Controller hierarchy 283 when to use 285 when to use 285 AcceptAnyCasProxy, defined 387 wiring 288 access decision manager, explained 370 AbstractController AccessDecisionManager example of 285 decide() 389 for forms 290 defined 389 implementing 286 implementations of 389 in Controller hierarchy 283 supports() 389 when to use 285 AccessDecisionVoter wiring 287 defined 390 AbstractExcelView See also RoleVoter buildExcelDocument 339 Acegi authentication-processing filter 401 content type 340 Acegi Security System 31 decoupling from model 340 authentication entry point 400 described 338 enforcing security 397 example of 338 fundamentals of 369 AbstractFormController overview of 368 in Controller hierarchy 283 security interceptor 369 when to use 285 servlet filters 393 427
428 ACID 176 INDEX publishing events 46 Action, Struts class 38 singleton beans 47 ActionForm, compared to MVC command 289 ApplicationContextAware 50, 87, 89 ActionSupport drawback of using 88, 90 benefits 349 setApplicationContext() 89 defined 349 ApplicationContextAwareProcessor 76 drawbacks 349 See also ApplicationContextAware example of 349 ApplicationContextFactory 46 advice ApplicationEvent 85–86 types 97 ApplicationListener 85–87, 361 wiring 100 onApplicationEvent() 86 advisor 107, 127 ApuKwikEMart 98 AffirmativeBased 390 around advice 102 after advice 101 aspect afterPropertiesSet() 58 as Java class 95 afterReturning() 101 defined 93 AfterReturningAdvice 98, 101–102 AspectJ 96 compared to MethodInterceptor 103 field joinpoints 97 example of 102 Aspect-Oriented Programming. See AOP afterThrowing() 104 asynchronous operation 256 annotations 11 atomic 176 Ant attributes 195 <javac> 200 AttributesTransactionAttributeSource with Jakarta Commons Attributes 199 Jakarta Commons Attributes 197 AOP 4, 9, 57 wiring 196 and declarative transactions 183 Auditable 115 aspects as a blanket 26 AuditableMixin 116 cross-cutting concerns 25 AuthByAuthenticationProvider declarative transactions 32 defined 372 for reuse 93 See also ProviderManager frameworks 95 authentication illustrated 95 entry point diagrammed 401 in the enterprise 30 using database 373 orthogonal services 28 authentication manager 370 proxying classes 96 authentication processing filter separation of concerns 25 diagrammed 401 special syntax 96 AuthenticationDao 375 Spring module 10 See also DaoAuthenticationProvider Spring’s implementation 95 AuthenticationManager 371 terms 93 See also ProviderManager AOP Alliance 10 AuthenticationProcessingFilter 401 benefits of 97 AuthenticationProcessingFilterEntryPoint 400 defined 97 wiring 403 MethodInterceptor 104 AuthenticationProvider AopContext 122 authenticate() 373 Apache OJB. See OJB implementations of 372 applets 4 autodetect, autowiring type 70 application server 241 autoproxing 124 ApplicationContext 44, 46, 90 autowiring 69 bean lifecycle 49 autodetect 70–71 getBean() 47 by deafult 72 getMessage() 85 byName 70–71 implementations of 44, 46 byType 70–71 lazy loading 47 constructor 70–71 publishEvent 87 handling ambiguities 71
autowiring (continued) BeanFactoryPostProcessor 76 INDEX 429 motivations 72 implementations of 77 using with caution 72 postProcessBeanFactory() 77 with explicit wiring 72 registering 77 with HibernateTemplate 162 BeanNameAutoProxyCreator 124–125 Avalon 38 BeanNameAware 47, 87 AWT, compared to JSF 357 drawback of using 88 setBeanName() 88 B use of 89 BeanNameHandlerMapping, defined 279 Babel Fish 234 BeanNameUrlHandlerMapping Bad Thing 134 as default HandlerMapping 277 BaseCommandController drawbacks 280 in Controller hierarchy 283 example of 280 when to use 285 when to define 280 BaseEngine, replacing 353 with Struts 351 BasePage, example of 355 BeanNameViewResolver Basic authentication compared to ResourceBundleViewResolver 311 BasicProcessingFilter 402 compared to XmlFileViewResolver 311 BasicProcessingFilterEntryPoint 402 defined 308 defined 401 wiring 310 BasicDataSource 138 BeanPostProcessor 48, 74 BasicProcessingFilter 401 DefaultAdvisorAutoProxyCreator 127 wiring 402 example of 74 BasicProcessingFilterEntryPoint 400 implementations of 76 wiring 402 postProcessAfterInitialization() 74 batch updates 148 postProcessBeforeInitialization() 74 BatchPreparedStatementSetter 148 registering 76 Batman 142 <beans> 54, 72 BEA WebLogic 274 <default-autowire> attribute 72 bean 54, 61 before advice 99 <constructor-arg> subelement 65 before() 99 defining 55 BeforeAdvice 98 destroy-method attribute 57 bike riding 156 init-method attribute 57 BindStatus 315 parent attribute 202 blue pill 87 post-processing 74 Burlap 209, 218, 220 <property> subelement 59, 61 choosing 219 singleton attribute 56 compared to SOAP 218 bean attribute 202 compared to XML-RPC 218 bean inheritance 202 exporting in Spring 223 bean lifecycle 47 BurlapProxyFactoryBean 219 <bean> 54–57, 59, 61, 65, 202 BurlapServiceExporter 223 BeanCounter example 77 byName, autowiring type 70 BeanFactory 10, 44, 90 ByteMessage 265 addBeanPostProcessor() 76 byType, autowiring type 70 bean lifecycle 47 creating 45 C dependency injection 45 getBean 15 caching 156 getBean() 45 CallableStatementCallback, example of 152 implementations of 44 callback 182 BeanFactoryAware 48, 87, 89 CAS drawback of using 88, 90 benefits of 386 setBeanFactory() 89 CasAuthenticationProvider 373
430 INDEX CAS (continued) with PreparedStatementCreator 146 CasProcessingFilterEntryPoint 405 with transactions 179 history 385 connection pool 138 proxy services 387 ConsensusBased 390 reference 385 consistent 176 workflow 385 constructor injection 64–65 CasAuthenticationProvider advantages 65, 68 defined 372, 386 ambiguous arguments 66 wiring 386 compared to setter injection 68 CasByAuthenticationProvider. disadvantages 69 See ProviderManager example of 52 cascading 156 motivations to use 54 CasProcessingFilter 401 UnsatisfiedDependencyException 67 CasProcessingFilterEntryPoint 400 when to use 69 wiring 405 constructor, autowiring type 70 CasProxyTicketValidator 386 <constructor-arg> Caucho Burlap. See Burlap <bean> subelement 65 Caucho Hessian. See Hessian choosing order vs type 68 Caucho Technology 218 index attribute 67 Central Authentication Service. See CAS order arguments 67 CGLIB 122 resolving by type 67 JAR file 96 typeattribute 67 to create AOP proxy 96 consumer, message 256 checking luggage 139 container-managed transactions. See CMT Class, wiring with ClassEditor 80 content type 340 ClassEditor 80 ContextClosedEvent 85 ClassFilter 106, 113 ContextLoaderListener 274 ClassFilter.TRUE 106 configuring context locations 274 ClassPathXmlApplicationContext 46 configuring in web.xml 274 compared to when to use 274 FileSystemXmlApplicationContext 47 with Acegi 397 creating 47 with JSF 360 defined 54 with Tapestry 354 CleanupFailureDataAccessException 136 with WebWork 363 CMT 177, 206 ContextLoaderPlugIn compared to configuring 348 NameMatchTransactionAttributeSource 194 when delegating 350 transaction propogation 186 ContextLoaderServlet 274 collections, wiring 61 configuring context locations 274 command controller 287 configuring in web.xml 274 CommonsAttributes 282 when to use 274 described 197 with Acegi 397 wiring 197 with Tapestry 354 See also DefaultTransactionAttribute; with WebWork 363 RuleBasedTransactionAttribute ContextRefreshedEvent 85 CommonsPathMapHandlerMapping ControlFlowPointcut 111–112 defined 280 Controller 225 wiring 281 compared to HttpServlet 276 compile-time weaving 94 compared to Struts Action 276 ComponentControllerSupport, example of 336 described 276 ComposablePointcut 113 hierarchy 283–284 Connection 141 implementing 283 commit() 179 in request lifecycle 271 obtaining with Spring 137 when to use 285 rollback() 179 wiring 276
CORBA 212 DataFieldMaxValueIncrementer INDEX 431 corrupt data 134 defined 155 CosMailSenderImpl 245 DataIntegrityViolationException 136 coupling DataRetrievalFailureException 136 example of 20 DataSource static coupling 19 creating connection pool 138 See also decoupling in JNDI 137 credit card 209 JNDI lookup 241 cron 253 transactions 178 CronTriggerBean 252–253, 255 with DataSourceTransactionManager 179 example of BeanNameAware 88 with JdbcTemplate 144 time elements 253 with LocalPersistenceManagerFactoryBean 164 cross-cutting concerns with LocalSessionFactoryBean 160 defined 92 with MappingSqlQuery 154 illustrated 92 with OJB 169 modularizing 93 DataSourceTransactionManager Cruise, Tom 127 defined 178 CustomDateEditor 80 when to use 178 CustomEditorConfigurer 77, 82, 90 wiring 178 registerCustomEditor() 82 Date, wiring with CustomDateEditor 80 DeadlockLoserDataAccessException 136 D declarative transactions 7, 177 example of 32 DAO decoupling, with interfaces 19 accessing with interfaces 134 See also coupling advantages of 134 default autowire 72 callback 140 DefaultAdvisorAutoProxyCreator 124, 126, 128, 205 defined 134 for transactions 203 template 140 defaultDestination 260 unit testing 134 DefaultIntroductionAdvisor 119 DaoAuthenticationProvider DefaultTransactionAttribute authenticationDao 375 example of 190, 198 caching 381 wiring 190 compared to DelegatingActionProxy PasswordDaoAuthenticationProvider 374 benefits of 351 defined 372 configuring 351 diagram of 374 drawbacks 351 encrypting passords 379 Spring configuration file 351 passwordEncoder 380 DelegatingIntroductionInterceptor 117–118 userCache 381 DelegatingRequestProcessor wiring 374 described 352 See also ProviderManager shortcut 352 DaoCasAuthoritiesPopulator, wiring 388 DelegatingTilesRequestProcessor 352 data access object. See DAO delegation, for reuse 92 DataAccessException dependency injection 45 as unchecked exception 136 compared to JNDI 243 benefits of 135 defined 16 hierarchy 136 in JSF 359 DataAccessResourceFailureException 136 deserialization 47, 120 database driver 149 Destination 260 database operation object 152 destroy 49 compared to JdbcTemplate 154 destroy(), DisposableBean method 58 compiling 153 destroy-method, <bean> attribute 57 when to use 154 benefits of 58 database, for authentication 373 example of 57
432 INDEX destruction 57 transaction propogation 186 dirty read 186 transaction support 177 DispatcherServlet 221, 225 EjbServiceExporter 232 as front controller 271 e-mail configuring in web.xml 272 sending with Spring 244 in request lifecycle 271 Spring support 241 naming 272 template message 245 DisposableBean 49, 58 encryption, salt source 380 when to use 58 Enterprise JavaBeans. See EJB distributed transactions, Spring entity beans 36 support 177 compared to JDBC 141 doclet tags 197 error messages, JSP 316 class level 198 Errors 292 method level 198 event handling 85 parsing 199 event publishing 86 DriverManagerDataSource 139, 244 exception handling in DAO templates 140 duplicate code 24 Expert One-on-One, J2EE Design and durable 176 Development 8 dynamic pointcut 94, 106, 111, 113 performance considerations 113 F dynamic proxies 122 façade pattern 178, 232 E FacesServlet, servlet filters 362 FacesSpringVariableResolver eager fetching 156 described 359 ehcache 381 features 360 EhCacheBasedUserCache 381 wiring 360 EJB 8, 206, 232 factory pattern 45 accessing with Spring 226 File wiring with FileEditor 80 as a specification 34 FileEditor 80 CMT 177 FileSystemXmlApplicationContext 46 compared to JDO 164 compared to ClassPathXmlApplicationContext 47 compared to Spring 33 creating 46 complexities 6, 35 defined 54 declarative security 31 FilterSecurityInterceptor 398 declarative transactions 31, 183 See also SecurityEnforcementFilter deployment descriptor 4–5 FilterToBeanProxy 395 developing with 5 bean reference 396 distributed components 4 configuring 395–396 EJBHome 7 explained 395 Entity Beans 36 in general use 397 feature comparisons 34 in web.xml 399 home interface 5, 227, 229 targetClass 396 integration 10 firewall JNDI lookup 7 with Burlap 223 local interface 5, 228 with Hessian 223 proxying 228 with RMI 217 remote interface 228 flexible design 134 remote transactions 35 Ford, Henry 320 remoting 208–209, 211 foreach 322 rollback behavior 193 form validation 292 security 4 forms services 6 cancelling 298 specification 4 handling 289 Spring support classes 232 multiple pages 294
Fowler, Martin 16 Controller 221 INDEX 433 Patterns of Enterprise Application Architecture 176 exporting with Spring 220 FreeMarker 10, 307, 320 writing a service 220 compared to JSP 320 HessianProxyFactoryBean 219 compared to Velocity 327 HessianServiceExporter 221 configuring properties 329 compared to RmiServiceExporter 221 exposing model 330 HessianServlet 220 features 327 Hibernate 11, 40, 120, 134 macros 331 caching 157 resolving views 330 compared to Entity Beans 36 Spring integration 329 compared to iBATIS SQL Maps 166 template example 328 compared to JDBC 141 template path 329 configuring 158 web site 329 distributed caching 157 with InternalResourceViewResolver 308 eager fetching 157 FreeMarkerConfigurer features 157 compared to VelocityConfigurer 329 lazy loading 157 freemarkerSettings 329 mapping files 158, 160–161 template_update_delay 329 properties 160 templateLoaderPath 329–330 Spring abstraction layer 241 wiring 329 Spring transaction support 177 FreeMarkerViewResolver transactions 178–180 exposeMacroHelpers 331 Hibernate in Action 157 exposeRequestAttributes 330 HibernateCallback exposeSessionAttributes 330 as inner class 162 wiring 330 defined 162 FrequentCustomerAdvice 109 using implicitly 162 Friends 368 HibernateDaoSupport, example of 163 front controller 271 HibernateException 135 Fudd, Elmer 74 HibernateTemplate autowiring 162 G convenience methods 162 find() 163 GET 290 load() 162 global 353 queries 163 GoldbergRube 270 update() 163 Good Thing 134 wiring 161 with HibernateCallback 162 H with HibernateDaoSupport 163 HibernateTransactionManager 33 HandlerMapping defined 178 described 279 wiring 179 implementations of 279 Hitchhikers Guide to the Galaxy, The 234 in request lifecycle 271 HiveMind 38 ordering 282 HQL 163 using multiple implementations 282 HTTP handling events 85 Basic authentication 401 heavyweight containers 6 challenges of using 270 Hello World 12 GET 290 GreetingService 12 POST 290 GreetingServiceImpl 13 HTTP invoker 208, 224 XML configuration 13 exposing services 225 Hessian 209, 218, 220 limitation 226 choosing 219 HTTP tunneling 218 compared to RMI 218 HttpInvokerProxyFactoryBean 224
434 INDEX HttpInvokerServiceExporter 225 introduction 97, 115 HttpServlet 111 compared to other advice types 105 compared to Controller 276 considerations 120 HttpSession, CAS tickets 388 defined 94 hubris 244 IntroductionAdvisor 119 Hunter, Jason 245 IntroductionInterceptor 117, 119 Husted, Ted 39 IntroductionMethodInterceptor 115 Hypersonic, generating sequences 155 example of 116 InvalidDataAccessApiUsageException 137 I InvalidDataAccessResourceUsageException 137 Inversion of Control. See IoC I18N 10, 12, 46 invoke() 115, 117 configuring with MessageSource 83 IoC 4 iBATIS SQL Maps 11, 40 Constructor Injection 37 compared to Hibernate 166 in enterprise applications 23 configuring 167 Setter Injection 37 mapping file 167 to create associations 44 web site 166 to manage components 44 IBM WebSphere 274 types of 37 IDL 218 isMatch() 107 impatience 244 isolated 176 implementsInterface() 115, 117 isolation levels 186 IncorrectUpdateSemanticsDataAccessException consequences of 187 136 dirty read 186 index, <constructor-arg> attribute 67 in Spring 187 inheritance, for reuse 92 non-repeatable read 187 initialization 57 phantom read 187 InitializingBean 58 transaction property descriptor 192 DAO support classes 141 isRuntime() 106, 113 when to use 58 iText 341 init-method, <bean> attribute 57 InMemoryDaoImpl J limitations of 376 passwords 376 J2EE 5 roles 376 J2EE Web-Services 234 userMap 375 JaasAuthenticationProvider 373 usernames 376 defined 372 when to use 375 See also ProviderManager wiring 375 Jakarta Commons Attributes 196–197, 199 See also AuthenticationDao background 197 inner beans 61 configuring Ant 199 int, querying for 151 configuring Maven 200 interceptor. See around advice doclet tags 197 interceptorNames 122–123 precompiler 199 interface21 8 Jakarta Commons DBCP 138 InternalPathMethodNameResolver 303 Jakarta Commons Validator 39 InternalResourceViewResolver Jakarta POI 339 as default ViewResolver 277 Jakarta Struts compared to VelocityViewResolver 323 Action 276 defined 307 ActionForm 288 viewClass 310, 335 compared to Spring MVC 38, 283 wiring 277, 309 coupling with Spring 349 with Jakarta Tiles 334 DispatchAction 303 internationalization. See I18N history of 347 intersection() 113 plugin 348
Jakarta Struts (continued) Spring transaction support 177 INDEX 435 proxy action 351 transactions 178 Spring-aware Action 348 type safety 148 Jakarta Tiles 320, 332 types 148 as part of Struts 332 updating data 142 definition file 333 JdbcDaoImpl personalization 335 customizing 378 template example 332 customizing queries 377 Java 2 Enterprise Edition. See J2EE database tables 376 Java Data Objects. See JDO queries 376 Java Message Service. See JMS wiring 376, 378 Java Naming and Directory Interface. See also AuthenticationDao See JNDI JdbcDaoSupport 141 Java Transaction API. See JTA JdbcTemplate JavaBeans 44, 55, 122 batch updates 148 collaborating with 16 compared to database operation objects 154 creating with new 47 convenience methods 147, 151 deserializing 47 debugging 147 in user interfaces 4 described 144 loosely coupled 7 example of 145 specification 4 execute() 147–148 with Jakarta Commons Attributes 197 inserting data 147 JavaMail 245 logging SQL 146 JavaMailSenderImpl 245 querying for simple types 151 JavaOne 357 stored procedures 152 JavaServer Faces in Action 357 using implicitly 153 JavaServer Faces. See JSF using JBDC types 148 JAX-RPC 209, 211, 233 wiring 145 JaxRpcPortProxyFactoryBean 236–237 with callbacks 145 JbdcTemplate 145 JDO 11, 40, 134 JBoss, field joinpoints 97 compared to EJB 164 JDBC 134 compared to Entity Beans 36 advantages 141 compared to JDBC 141 as objects 152 exception hierarchy 136 batch updates 148 specification 164 boilerplate code 11, 143–144 Spring transaction support 177 compared to entity beans 141 supported in OJB 169 compared to Hibernate 141 transactions 178, 180 compared to JDO 141 JdoCallback compared to ORM 156 as inner class 166 creating robust code 144 defined 165 database driver 149 example of 165 error handling 144 JdoTemplate exception handing 136 convenience methods 166 generating primary keys 155 wiring 165 handling exceptions 142 with JdoCallback 165 inserting data 142 JdoTransactionManager performance tuning 141 defined 178 problems with 142 wiring 180 resource leaks 144 JMS 256 resource management 144 callback 258 retrieving data 143 setting timeout 262 shortcomings 156 Spring support 241 Spring abstraction layer 241 JMSConnectionFactory 260 Spring module 10–11 JMSException 257
436 INDEX JmsTemplate 258, 261 tags 314 compared to JmsTemplate102 261 with InternalResourceViewResolver 308 convertAndSend() 265 JSR-109 236 pubSubDomain 261 JSR-175 196 receive() 261 JSTL, with Tiles 335 receiveAndConvert() 265 JstlView receiveTimeout 262 wiring 310 send() 259 with InternalResourceViewResolver 310 using 258 JTA 178 wiring 259 Spring transaction manager 178 JNDI 137, 227 with EJB 177 DataSource lookup 241 JtaTransactionManager in reverse 8 defined 178 JMSConnectionFactory 260 transactionManagerName 181 lookup in EJB 7 wiring 181 retrieving DataSource 241 jwcid, example of 352 Spring support 241 support for 10 K with JTA 241 JndiObjectFactoryBean 243 Knight of the Round Table for JMSConnectionFactory 260 executing 22 wiring a DataSource 138 HolyGrailQuest 17 wiring a MailSession 245 KnightOfTheRoundTable 16, 27 Job 251 KnightOfTheRoundTableTest 17 JobDetail 255 MinstelAdvice 28 Johnson, Rod 8 Minstrel 27 joinpoint 115 Quest 21 advice 93 Spring configuration file 22 defined 93 weaving advice 29 joinpoint models 95 KwikEMart example 98 on field modification 95 ThankYouAdvice 102 on method invocation 95 WelcomeAdvice 99 JSF KwikEMartExceptionAdvice 104 compared to AWT 357 compared to Swing 357 L configuration file 358 dependency injection 359 laziness 244 event handling 361 lazy loading 156 example page 357 lazy-init, with EJB proxies 229 history of 357 LDAP, for authenticating 382 managed bean 358–359 LdapPasswordAuthenticationDao, configuring 383 <managed-property> 360 Leave it to Beaver 368 setter injection 359 lightweight containers specification 357 alternatives to Spring 36 Spring integration 357 defined 8 tags 358 lightweight directory access protocol. See LDAP <variable-resolver> 359–360 <list> 62 wiring beans 360 load-time weaving 95 JSP LocaleEditor 80 ${} 322 LocalPersistenceManagerFactoryBean 164 binding forms 315 wiring 164 error messages 316 LocalSessionFactoryBean for HTML 320 DataSource 160 for XML 320 mappingDirectoryLocations 161 limitations 320 mappingResources 160
LocalSessionFactoryBean (continued) converting 263 INDEX 437 wiring 159 sending 257 wiring JNDI DataSource 244 MessageSource 84 LocalStatelessSessionProxyFactoryBean 228–230 metadata 11, 128 logging, as an aspect 93 autoproxying 128 loose coupling, benefits of 7 with transactions 195 Lotus Notes 245 MethodBeforeAdvice 28, 99, 102 compared to MethodInterceptor 103 M example of 99 wiring 100 MaidService 108–110 MethodInterceptor 98, 102 MailSender compared to AfterReturningAdvice 103 defined 244 compared to MethodBeforeAdvice 103 implementations of 244 example of 103 in use 246 IntroductionMethodInterceptor 115 wiring 245 MethodInvokingJobDetailFactoryBean 255 MailSession 245 wiring 255 managed-property 360 MethodInvokingTimerTaskFactoryBean 255 Mann, Kito D. 357 wiring 255 <map> 63 MethodMapTransactionAttributeSource 206 MapMessage 258, 265 MethodMatcher 106, 113 using 258 Microsoft Office document in Java 339 MappingSqlQuery MIME messages 245 example of 154, 378 Minority Report 127 using 154 mixin 115–116, 118 with JDbcDaoImpl 377 mocking 134 MatchAlwaysTransactionAttributeSource 190 Model 2 web framework 38 configuring 190 ModelAndView defined 189 explained 286 example of 189 in request lifecycle 272 when to use 190 Model-T Ford 320 matches() Monson-Haefel, Richard 234 ClassFilter 106 motivation 64 MethodMatcher 106, 113 Mousetrap 270 Matrix, The 87 movie credits 43 Maven, with Jakarta Commons MultiActionController 301 Attributes 200 example of 301 McClanahan, Craig in Controller hierarchy 283 and JSF 357 methodNameResolver 303 Struts 347 resolving URLs 302 Md5PasswordEncoder 379 when to use 285, 301 Message 258, 262 multiple inheritance 115 casting to MapMessage 262 MVC framework message queue 256 diagram of request 278 MessageConverter request lifecycle 271 example of 263 MVC Spring module 10–11 fromMessage() 264 MySQL, generating sequences 155 toMessage() 264 wiring 264 N See also SimpleMessageConverter MessageCreator 259 NamedCasProxyDecider, defined 387 messages NamedMethodMatcherPointcut 109 accessing with JSP tag 85 NameMatchAttributeSource 191 configuring with MessageSource 83 NameMatchMethodPointcut 107 consuming 261 wiring 108
438 INDEX NameMatchTransactionAttributeSource Ordered 282 compared to CMT 194 defined 283 isolation level 192 with HandlerMappings 282 properties 192 ORM read-only 193 benefits 157 rollback rules 193 compared to JDBC 156 short cutting 194 defined 157 using implicitly 195 features 156 wild cards 194 Spring services 157 See also transaction property descriptor ORO 110 NameMethodMatcherPointcut 124 compared to P RegexpMethodPointcutAdvisor 110–111 NanoContainer 37 <page-specification> 356 NestedRuntimeException 136 </property-specification> 356 new keyword 47 ParameterMethodNameResolver 303 non-repeatable read 187 compared to DispatchAction 303 <null> 64 paramName 303 NullUserCache 381 wiring 303 parent, <bean> attribute 202 O Pareto’s Principle 144 Parker, Peter 128 O/R mapping, Spring module 10–11 PasswordDaoAuthenticationProvider object definition source compared to DaoAuthenticationProvider 374 Ant-like pattern matching 399 defined 372 configuring 398 wiring 382 property editor 399 See also ProviderManager Object Graph Navigation Language. PathMap 281 See OGNL example of 282 Object Request Broker. See ORB Patterns of Enterprise Application Object/Relational Mapping. Architecture 176 See ORM PDF, generating with Spring 340 ObJectRelationalBridge. See OJB PerformanceMonitorListener 361 objects, creating associations 43 PersistenceBroker, with ODMG, support in OJB 169 PersistenceBrokerTransactionManager 181 OGNL, with Tapestry 356 PersistenceBrokerDaoSupport, example of 170 OJB 40, 157 PersistenceBrokerTemplate configuring 169 configuring 170 ConnectionFactoryClass 170 convenience methods 171 features 169 PersistenceBrokerTransactionManager 181 JDO support 169 defined 178 ODMG support 169 wiring 180 OJB-repository.xml 169 PersistenceManagerFactory 164 Spring transaction support 177 compared to SessionFactory 164 transactions 178, 180 configuring in Spring 164 web site 169 defined 164 wiring in Spring 170 with JdoTransactionManager 180 OnePerCustomerInterceptor 103 phantom read 187 online shopping application 43 PhoneNumberEditor, example of OpenSymphony 248 PropertyEditor 82 WebWork 362 PicoContainer 37 OptimisticLockingFailureException 137 piña colada 208 Oracle OC4J 274 plain old Java interface. See POJI Oracle, generating sequences 155 plain old Java object. See POJO ORB 212 PlaintextPasswordEncoder 379
PlatformTransactionManager <set> subelement 62 INDEX 439 implementations of 178 <value> subelement 59 with TransactionInterceptor 204 PropertyEditor 80 with TransactionTemplate 183 PropertyEditorSupport pointcut 105 customizing 81 defined 94 getAsText() 80 dynamic 106 implementations of 80 intersection 113 setAsText() 80 operations 113 subclassing 80 static 106–107 PropertyPlaceholderConfigurer 77, 90 union 113 example of 78 PointcutAdvisor 107 ProperyEditor, registering with point-to-point message 256 CustomEditorConfigurer 82 POJI 8 <props> 63–64 POJO 8, 44, 206, 216–217 prototype bean declarative transactions 183, 191 configuring 56 pooling 57 motivation for 56 Portable Document Format. performance implications 57 See PDF ProviderManager POST 290 behavior 372 PostgreSQL, generating sequences 155 explained 371 PreparedStatement 147 providers 372 PreparedStatement with wiring 372 PreparedStatementCreator 145 proxy 96 PreparedStatementCreator creating with ProxyFactoryBean 101 defined 145 defined 94 example of 146 proxying classes 96 using implicitly 147 proxy tickets 387 with PreparedStatementSetter 147 ProxyFactoryBean 30, 122, 124, 126 PreparedStatementSetter example of 101 defined 147 for transactions 183 example of 147 properties 122 using implicitly 147 See also TransactionProxyFactoryBean with PreparedStatementCreator 147 proxyInterfaces 122–123 primary key, generating 155 publishing events 46, 86 primitives, configuring 59 publish-subscribe 257 proceed() 102–103, 115 Python 218 programmatic transactions 177, 181 drawbacks 183 Q Programming Perl, 3rd Edition 244 propagation behavior 185 Quartz scheduler 248 Properties defined 250 configuring with QuartzJobBean 251 PropertyPlaceholderConfigurer 78 compared to TimerTask 251 wiring 63 wiring 251 PropertiesMethodNameResolver 303 QueryInterceptor 110 advantages of 304 mappings 304 R wiring 304 property 59 read-mostly 156 <bean> subelement 59, 61 read-only <list> subelement 62 explained 188 <map> subelement 63 transaction property descriptor 193 <props> subelement 63 red pill 87 <ref> subelement 60 <ref> 60
440 INDEX ReflectionSaltSource rmic 215, 217 defined 380 RmiProxyFactoryBean 213, 217, 219 wiring 380 RmiServiceExporter 217 RegexpMethodPointcut 109 compared to HessianServiceExporter 221 RegexpMethodPointcutAdvisor RoleVoter compared to customizing 391 NameMethodMatcherPointcut 110–111 wiring 391 regular expressions 109–110 rollback rules, transaction property descriptor 193 to validate 292 round tripping 156 RejectProxyTickets RowCallbackHandler 150 defined 387 defined 149 wiring 388 example of 149 Remote 215 RowMapper remote procedure call. See RPC defined 150 remote proxy 210 example of 150 RemoteAccessException 211 reusing 151 RemoteAuthenticationProvider RowMapperResultReader 150 defined 372 example of 150 See also ProviderManager RPC 209, 211 RemoteException 211, 213, 231 RuleBasedTransactionAttribute 198 RequestHandledEvent 85, 361 RunAsImplAuthenticationProvider RequestHandledFilter 362 defined 372 Resin 218 See also ProviderManager ResolverSetupServletContextListener 365 runtime pointcut, performance considerations 107 ResourceBundle runtime weaving 95–96 naming properly 84 using with ResourceBundleMessageSource 84 S ResourceBundleMessageSource 84 ResourceBundleResolver salt 380 defined 308 ScheduledTimerTask 249 ResourceBundleViewResolver compared to SimpleTriggerBean 252 advantages 311 delay property 250 basename 312 wiring 249 compared to BeanNameViewResolver 311 SchedulerFactoryBean, wiring 254 compared to XmlViewResolver 311 scheduling, Spring support 241, 248 wiring 312 scriptlet code 320 with AbstractExcelView 340 security interceptor explained 369 resources, loading with ApplicationContext 46 SecurityEnforcementFilter, wiring 397 ResultReader 150 Seinfeld 368 ResultSet Serializable, in remote calls 211 iterating 149 serialization with HTTP invoker 224 mapping with RowMapper 150 ServiceLocator 24 with RowCallbackHandler 149 servlet filter rigid design 135 Acegi 393 RMI 208–209, 212–215, 217 FilterToBeanProxy 399 compared to Hessian 218 handling JSF events 362 compiler 215 Session, getting from SessionFactory 159 difficulties 217 SessionFactory drawbacks 212 compared to PersistenceManagerFactory 164 exporting with Spring 216 configuring 159 lookup 213 using 159 programmatic 212 wiring 159 registry 215, 217 with HibernateDaoSupport 163 skeleton 215 with HibernateTransactionManager 180 stub 215, 217 <set> 62
setApplicationContext() 50 <destroy-method> 49 INDEX 441 setter injection 58 example 22 compared to constructor injection 68 <property> 14 example of 52 <value> 14 in JSF 359 Spring Framework when to use 69 application context module 10 ShaPasswordEncoder 379 compared to EJB 33 Ship, Howard Lewis 353 container 9–10, 44 Simple Object Access Protocol. See SOAP creator of 8 simple type, configuring 59 described 8 SimpleControllerHandlerAdapter 307 modules 9 SimpleFormController origin of 8 doSubmitAction() 290 philosophy 6 example of 290 Spring MVC, alternatives 347 formView 291 Spring Training application in Controller hierarchy 283 CourseService 50 onSubmit() 291 CourseServiceImpl 52 shortcomings 294 enforcePrerequisites() 54 successView 291 StudentService 50 when to use 285 StudentServiceImpl 51 wiring 291 UML diagram 50 SimpleMailMessage 246 <@spring.bind> 326, 331 SimpleMappingExceptionResolver spring.tld 314 exceptionMappings 317 SpringActionFactory 363 wiring 317 configuring 363 SimpleMessageConverter 265 downloading 363 wiring 265 #springBind 326, 331 SimpleRemoteStatelessSessionProxyFactoryBean <spring-bind> 315–316, 326, 331 229 compared to <@spring.bind> 331 SimpleTriggerBean 252 configuring 315 SimpleUrlHandlerMapping 222 example of 315–316, 326 defined 279 properties 315 wiring 281 SpringTapestryEngine 354 Simpsons, The 98 configuring 355 Single Sign-On. See SSO defined 353 SingleRemoteStatelessSessionProxyFactoryBean 231 limitations 354 singleton 120 SQL singleton bean advantages of 141 configuring 56 drawbacks 157 preloading of 47 logging with JdbcTemplate 146 SMTP 245 types 148 SOAP 233 SQL Maps. See iBATIS SQL Maps compared to Burlap 218 SQLException 135 spreadsheet, creating with Spring 338 handling 136 spring SqlMapClient, wiring 167 bind 326, 331 SqlMapClientCallback compared to #springBind 326, 331 defined 168 example of 331 example of 168 Velocity macros 326 SqlMapClientTemplate 166 bindEscaped, example of 331 compared to SqlMapTemplate 166 Spring Cleaning 108, 110 convenience methods 168 Spring configuration file wiring 168 <bean> 14 SqlMapExecutor 168 <beans> 14, 54 SqlMapTemplate, compared to <constructor-arg> 14 SqlMapClientTemplate 166
442 SqlProvider INDEX _target 297 defined 146 target 122 example of 146 defined 94 SqlUpdate teeter-totter 174, 270 compile() 153 template method 139 declareParameter() 153 TestingAuthenticationProvider example of 153 defined 372 using 153 See also ProviderManager Squishee 99 TextMessage 265 SSO, described 385 ThankYouAdvice 102 static pointcut 106–107 ThrowawayController 305 performance considerations 107 compared to WebWork 305 StaticMethodMatcherPointcut 107 described 305 stored procedures example of 305 accessing with Spring 152 execute() 306 motivations for 151 in Controller hierarchy 283 String singleton 306 querying for 151 when to use 285 wiring with StringArrayPropertyEditor 81 wiring 306 StringArrayPropertyEditor 81 ThrowawayControllerHandlerAdapter StringTrimmerEditor 81 wiring 306 Struts Action See also ThrowawayController bean naming 351 ThrowsAdvice 98, 104 delegating 350 Tiles. See Jakarta Tiles example of 347, 350 <tiles:getAsString> 332 Spring-aware 348 <tiles:insert> 332 See also ActionSupport; TilesConfigurer DelegatingActionProxy definitions 334 Struts in Action 39, 332 wiring 334 sub-beaning 202 TilesView 335 Sun Microsystems 4 Timer 248 Sun, JDO 164 limitation of 250 sunbathing 208 TimerFactoryBean surrogate key 155 defined 249 Swing, compared to JSF 357 wiring 249 synchronous operation 256 TimerTask 248 SystemWideSaltSource compared to QuartzJobBean 251 defined 380 run() 249 wiring 380 using 248 wiring 249 T wiring to ScheduldTimerTask 249 topic, message 257 Tapestry 39 Transaction BaseEngine 353 commit() 180 behavior 353 rollback() 180 creator 353 transaction attributes 185 engine 353 with TransactionProxyFactoryBean 189 features 352 transaction property descriptor global 353–354 diagramed 192 jwcid 352 isolation level 192 <page-specification> 356 read-only 193 replacing BaseEngine 353 rollback rules 193 Spring integration 352 TransactionAttribute template 356 wiring 189 Tapestry in Action 353 See also MatchAlwaysTransactionAttributeSource
TransactionAttributeSource 184 U INDEX 443 defined 189 TransactionAttributeSourceAdvisor 204 UnanimousBased TransactionCallback, as inner defined 389–390 class 182 wiring 390 TransactionDefinition 185 UncategorizedDataAccessException 137 TransactionInterceptor, wiring 204 unchecked exceptions, benefits of 135 TransactionManager, with UnicastRemoteObject 214 JtaTransactionManager 181 union 113 TransactionProxyFactoryBean 33 unit testing 134 autoproxying 203 DAOs 138 bean inheritence 202 example of 17 bean naming 184 importance of 17 defined 183 J2EE applications 5, 7 metadata 196 mocking 19, 21 setting transaction policy 189 testing cycle 6 transactionAttributes 194 within a container 7 transactionAttributeSource 184 UnsatisfiedDependencyException 67 transactionManager 184 UserTransaction wiring 183 commit() 181 transactions rollback() 181 ACID 176 with JtaTransactionManager 181 atomic 176 consistent 176 V declarative 177 defined 174 validating with regular expressions 292 diagramed 175 Validator durable 176 defined 292 handling manually 30 example of 292 importance of 175 supports() 292 in DAO templates 140 Value Object pattern 36 isolated 176 <value> 59 isolation levels 186 <property> subelement 59 managing 174 variable-resolver 360 money transfer example 174 Velocity 10, 307, 320 movie ticket example 174 advantages 321 programmatic 177 compared to FreeMarker 327 propagation behavior 185 compared to JSP 320 timeout 188 configuring properties 323 TransactionStatus 182 DateTool 325 TransactionTemplate escaping HTML 327 defined 182 example template 321 example of 182 exposing model 324–325 setRollbackOnly() 182 features 321 transactionManager 183 formatting 324 wih TransactionStatus 182 integrating with Spring 321 wiring 182 NumberTool 325 Trigger 252 popularity 321 tunneling 218 resolving views 323 type, <constructor-arg> attribute 67 Spring macros 326 TypeMismatchDataAccessException 137 web site 322 with InternalResourceViewResolver 308 See also VTL Velocity Template Language. See VTL
444 INDEX VelocityConfigurer WebWork 2 compared to FreeMarkerConfigurer 329 compared to WebWork 1 364 described 323 xwork.xml 364 resourceLoaderPath 323 See also XWork velocityProperties 323 WebWork Action wiring 322 defined 363 VelocityViewResolver example of 363 dateToolAttribute 324 WelcomeAdvice 99 exposeRequestAttributes 325 wiring 101 exposeSessionAttributes 325 whack-a-mole bugs 19 exposeSpringMacroHelpers 327 wildcard, NameMatchMethodPointcut 108 exposing model 325 wireless devices 223 formatting 324 wiring 22, 43, 50 in use 324 bean inner beans 61 numberToolAttribute 324 bean references 60 wiring 323 collections 61 version control 17 defined 50 View List 62 as part of ModelAndView 286 Map 63 in request lifecycle 272 possible sources 54 ViewResolver primitives 59 implementations of 307 Properties 63 in request lifecycle 272 Set 62 VTL 322 simple types 59 #foreach 322 WSDL 218, 235 compared to JSP 322 X W XA. See distributed transactions weaving 94 XDoclet 5 web forms XML configuration file, <bean> 54 handling 289 XmlBeanFactory 45 multiple pages 294 creating 45 web frameworks 38 defined 54 web services 208–209, 218 example 22 web.xml XmlFileViewResolver configuring DispatcherServlet 272 compared to BeanNameViewResolver 311 configuring JSF with Spring 360 location 311 configuring Tapestry 354 views.xml 311 mapping URLs 272 wiring 311 with WebWork 2 365 XML-RPC, compared to Burlap 218 WebApplicationContext, with Struts 349 XmlViewResolver WebApplicationContextUtils, with Tapestry 354 compared to ResourceBundleViewResolver 311 WebWork 39 defined 308 compared to Spring MVC 283 XmlWebApplicationContext 46 compared to ThrowawayController 305 defined 54 Spring integration 362 XWork 364 See also WebWork 1; WebWork 2 XWork Action 364 WebWork 1 compared to WebWork 2 364 Y CVS 363 SpringActionFactory 363 Yale Central Authentication Service. See CAS
JAVA SPRING IN ACTION Craig Walls • Ryan Breidenbach pring is a fresh breeze blowing over the Java landscape. Based on a design principle called Inversion of Control, Spring is a “… a great way of explaining Spowerful but lightweight J2EE framework that does not Spring topics… I enjoyed require the use of EJBs. Spring greatly reduces the complexity of the entire book.” using interfaces, and speeds and simplifies your application development. You get the power and robust features of EJB and —Christian Parker get to keep the simplicity of the non-enterprise JavaBean. President Adigio Inc. Spring in Action introduces you to the ideas behind Spring and “… no other book can then quickly launches into a hands-on exploration of the frame- compare with the practical work. Combining short code snippets and an ongoing example approach of this one.” developed throughout the book, it shows you how to build simple and efficient J2EE applications. You will see how to solve —Olivier Jolly J2EE Architect, Interface SI persistence problems using the leading open-source tools, and also how to integrate your application with the most popular web “I thoroughly enjoyed the frameworks. You will learn how to use Spring to manage the bulk way Spring is presented.” of your infrastructure code so you can focus on what really matters–your critical business needs. —Norman Richards co-author of XDoclet in Action What’s Inside n Persistence using Hibernate, JDO, iBatis, OJB, and JDBC “I highly recommend it!” n Declarative transactions and transaction management —Jack Herrington, author of n Integration with web frameworks: Code Generation in Action Struts, WebWork, Tapestry, Velocity n Accessing J2EE services such as JMS and EJB n Addressing cross-cutting concerns with AOP n Enterprise applications best practices Craig Walls is a software developer with over 10 years’ experience AUTHOR 4 and co-author of XDoclet in Action. He has sucessfully imple- ONLINE 4 mented a number of Spring applications. Craig lives in Denton, Ask the Authors Ebook edition Texas. An avid supporter of open source Java technologies, Ryan www.manning.com/walls2 Breidenbach has developed Java web applications for the past five years. He lives in Coppell, Texas. ,!7IB9D2-djedfb!:p;o;O;t;P MANNING $44.95 US/$60.95 Canada ISBN 1-932394-35-4
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 1 - 50
- 51 - 100
- 101 - 150
- 151 - 200
- 201 - 250
- 251 - 300
- 301 - 350
- 351 - 400
- 401 - 450
- 451 - 472
Pages: