SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
Building Enterprise Web Applications with Spring 3.0 and Spring 3.0 MVC ,[object Object],JavaOne 2010,[object Object],By,[object Object],AbdelmonaimRemani,[object Object],abdelmonaim.remani@gmail.com,[object Object]
Creative Commons Attribution-NonCommercial 3.0 Unported,[object Object],http://creativecommons.org/licenses/by-nc/3.0/,[object Object],License,[object Object]
Software Engineer at Overstock.com,[object Object],Particularly interested in technology evangelism and enterprise software development and architecture,[object Object],President and Founder of a number of organizations,[object Object],The Chico Java User Group,[object Object],The Chico Flex User Group,,[object Object],The Chico Google Technology User Group.,[object Object],LinkedIn,[object Object],http://www.linkedin.com/in/polymathiccoder,[object Object],Twitter,[object Object],http://twitter.com/polymathiccoder,[object Object],Who Am I?,[object Object]
Warning,[object Object],This presentation is very long and covers a lot of material,[object Object]
Introduction,[object Object]
Complex,[object Object],In terms of requirements,[object Object],Functional,[object Object],Non-Functional,[object Object],Execution,[object Object],Performance,[object Object],Reliability,[object Object],Security,[object Object],Evolution,[object Object],Testability,[object Object],Maintainability,[object Object],Extendibility,[object Object],Scalability (Horizontal and Vertical),[object Object],Enterprise Application Software (EAS),[object Object]
In the words of Edsger W. Dijkstra:,[object Object],[…] The Separation of Concerns […] is yet the only available technique for effective ordering of one’s thoughts […],[object Object],Artificially Reducing complexity by means of Abstraction,[object Object],Specific Choices of abstraction,[object Object],Produces a architectures,[object Object],Enterprise Application Software (EAS),[object Object]
The Architecture,[object Object],Layered / N-Tiered,[object Object],Presentation Layer,[object Object],Web Layer,[object Object],Service Layer,[object Object],Persistence Layer,[object Object],Aspects,[object Object],Middleware,[object Object],Other,[object Object],Modern Enterprise Application,[object Object]
A Framework is an architecture,[object Object],A well-defined structure to solve a problem,[object Object],A pre-existing hierarchy to be extended,[object Object],Library,[object Object],Framework vs. Library,[object Object],Invoking vs. being invoked,[object Object],Generic vs. specific,[object Object],Tools,[object Object],Compiler, debugger, etc…,[object Object],Scaffolding and other utilities,[object Object],Etc…,[object Object],Frameworks,[object Object]
Heavyweight vs. Lightweight,[object Object],The need for a platform or a stack (JEE as example),[object Object],The ability to load in-demand necessary components,[object Object],The memory footprint,[object Object],The build size,[object Object],Deployment ease,[object Object],Etc…,[object Object],Frameworks,[object Object]
The Spring Framework,[object Object]
Application Framework,[object Object],Java,[object Object],Other implementations are available (Spring .NET),[object Object],Open-Source,[object Object],Lightweight,[object Object],Non-Invasive (POJO Based),[object Object],Extendible,[object Object],A platform with well-defined extension points for other frameworks,[object Object],By Rod Johnson,[object Object],Expert One-on-One J2EE Design and Development, 2002,[object Object],J2EE without EJB, 2004,[object Object],Became the De facto standard of Java Enterprise Applications,[object Object],What is Spring?,[object Object]
20 Modules,[object Object],Spring,[object Object],Source:  Spring 3.0.x Framework Reference,[object Object],http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html,[object Object]
Wrappers for most popular frameworks,[object Object],Allowing injection of dependencies into standard implementation,[object Object],Struts,[object Object],JSF,[object Object],Apache Tapestry,[object Object],Etc…,[object Object],Full Integration with the JEE stack,[object Object],Libraries,[object Object]
The Address Book,[object Object]
The Address Book from polymathic-coder.com,[object Object],A web application for Contact management,[object Object],The Address Book,[object Object]
Details:,[object Object],As a user I should be able to view, add, delete, and edit personal contacts data on my address book including:,[object Object],First Name,[object Object],Last Name,[object Object],Email,[object Object],Phone Number,[object Object],Image,[object Object],Primary Actors: Regular user / Administrator,[object Object],Assumptions: ,[object Object],The user is authenticated and has proper privileges to access the Contact Management Area,[object Object],Access is granted both through the web interface and a RESTful API,[object Object],Functional RequirementsUse Case 1 - Contact Management,[object Object]
Business Rules,[object Object],A First Names are required,[object Object],Phone Numbers must be valid US phone numbers,[object Object],Emails must be valid,[object Object],Functional RequirementsUse Case 1 - Contact Management,[object Object]
Details:,[object Object],As an administrator I should be able to view, add, delete, and edit the user data including:,[object Object],Username,[object Object],Password,[object Object],Role (Regular or Administrator),[object Object],Whether the account is enabled or not,[object Object],Email,[object Object],Primary Actors: Administrator,[object Object],Assumptions:,[object Object],The user is authenticated and has proper privileges to access the User Administration Area,[object Object],Access is granted through the web interface,[object Object],Functional RequirementsUse Case 2 - User Management,[object Object]
Business Rules,[object Object],Username is required and must be unique,[object Object],Passwords must be complex (The should contains at least 1 lowercase letter, 1 uppercase letter, 1 digit, and 1 special character),[object Object],Emails must be valid,[object Object],An email must be sent to the newly created user,[object Object],Functional RequirementsUse Case 2 - User Management,[object Object]
Details:,[object Object],As an administrator I should be able to view audit and health check reports,[object Object],Primary Actors: Administrator,[object Object],Assumptions:,[object Object],The user is authenticated and has proper privileges to access the Reporting Area,[object Object],Access is granted through the web interface,[object Object],The reports are periodically generated by the system,[object Object],Functional RequirementsUse Case 3 - Reporting,[object Object]
RBAC (Role-based access control),[object Object],Authentication,[object Object],Form-based,[object Object],Http Basic,[object Object],Authorization,[object Object],Security Roles,[object Object],Regular User,[object Object],Access to personal contact management area,[object Object],Administrators,[object Object],Access to personal contact management area,[object Object],Access to user administration area,[object Object],Access to reporting area,[object Object],Access Control,[object Object],No Rules,[object Object],Transport Security,[object Object],Not required,[object Object],Non-Functional Requirements Security,[object Object]
Spring Core,[object Object]
The problem:,[object Object],Acquiring Resources via,[object Object],Instantiation of a concrete class,[object Object],Using a static method of a singleton factory,[object Object],Using a Directory Services API that allows for discovery and lookup (JNDI for example),[object Object],Etc..,[object Object],Creates hard dependencies,[object Object],Coupled code is hard to reuse (DRYness),[object Object],Painful Unit Testing,[object Object],Inversion of Control,[object Object]
The Solution:,[object Object],Coding against Interfaces,[object Object],Inversion of Control: Dependency Injection,[object Object],Reflectively supply external dependency at runtime,[object Object],The Hollywood principle: “Don’t call us, we’ll call you”,[object Object],Wait a minute this a lot of work!,[object Object],Spring to the rescue,[object Object],Inversion of Control,[object Object]
Container ,[object Object],POJO,[object Object],Configuration Metadata,[object Object],XML-Based,[object Object],Annotation-Based,[object Object],Java-based,[object Object],Spring Core,[object Object],Source:  Spring 3.0.x Framework Reference,[object Object],http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html,[object Object]
JSR 330 – Dependency Injection for Java ,[object Object],JSR 330,[object Object],@Inject,[object Object],@Named,[object Object],Spring Annotations,[object Object],@Autowire,[object Object],@Qualifier,[object Object],JSR 250 -  Common Annotations,[object Object],javax.annotation,[object Object],JSR 299 – Contexts and Dependency Injection,[object Object],Scopes and contexts: javax.context,[object Object],Dependency injection service: javax.inject,[object Object],Framework integration SPI: javax.inject.manager,[object Object],Event notification service: javax.event,[object Object]
Used to mark a class that fulfills a role or a stereotype,[object Object],Stereotyped classes can be automatically detected,[object Object],Spring Stereotypes,[object Object],@Component,[object Object],@Repository,[object Object],@Service,[object Object],@Controller,[object Object],Stereotypical Spring,[object Object]
Domain Model,[object Object]
Domain Model,[object Object]
A model of the “concepts” involved in the system and their relationships,[object Object],Anemic Domain Model,[object Object],POJOs (Plain Old Java Objects) or VOs (Value Objects),[object Object],Clear separation between logic and data,[object Object],Parallel object hierarchies are evil,[object Object],Metadata is interpreted depending on the context as the object moves across the layers of the application,[object Object],Object-Relational mapping to persistent entities,[object Object],Validation,[object Object],Marshaling / Un-marshaling,[object Object],Etc…,[object Object],Domain Model,[object Object]
Ensuring the correctness of data based on a set predefined rules,[object Object],JSR 303 - Bean Validation,[object Object],Source:  Hibernate Validator Reference Guide 4.1.0.Final,[object Object],http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/,[object Object]
javax.validation,[object Object],Reference Implementation: Hibernate Validator,[object Object],JSR 303 - Bean Validation,[object Object],Source:  Hibernate Validator Reference Guide 4.1.0.Final,[object Object],http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/,[object Object]
Instantiation (Items 1 & 2 of Josh Bloch’s Effective Java),[object Object],Static Factories,[object Object],Telescoping,[object Object],Provide builders,[object Object],Override the default implementations of hashCode(), toString(), and equals(Object) methods,[object Object],Use Pojomatic at http://pojomatic.sourceforge.net/,[object Object],Be aware of any circular dependency in your model,[object Object],Versioning,[object Object],@Version  of JSR 317 – JPA 2.0,[object Object],Domain Model,[object Object]
Persistence Layer,[object Object]
A logical encapsulation of classes and interfaces whose responsibilities fall within the scope of:,[object Object],Create, Read, Update, and Delete (CRUD) operations on persistence storage mechanisms such as file systems and Database Management Systems (DBMS),[object Object],Interacting with Message-Oriented Middleware (MOM) infrastructures or Message Transfer Agents (MTA) such as JMS or mail servers,[object Object],Persistence Layer,[object Object]
javax.persistence,[object Object],Reference Implementation EclipseLink,[object Object],Primer,[object Object],A persistence entity is a POJO whose state is persisted to a table in a relational database according to predefined ORM metadata,[object Object],An entity is managed by an Entity Manager,[object Object],Do we still need a Persistence Layer?,[object Object],Highlights,[object Object],Support for JSR 303 validation,[object Object],JSR 317 – JPA 2.0,[object Object]
Beans Stereotyped with @Repository,[object Object],Enables exception translation to a consistent exception hierarchy,[object Object],Run-time exceptions and do not have to be declared or caught,[object Object],Use JPA annotations to inject EntityManager and EntityManagerFactory,[object Object],@PersistenceContext,[object Object],@PersistenceUnit,[object Object],Follow a convention (I suggest CRUD),[object Object],Declaring transaction semantics,[object Object],@Transactional,[object Object],Spring Data Access / Integration,[object Object]
Java Mail API,[object Object],javax.mail,[object Object],Spring Helpers for various Templating Engines,[object Object],Velocity,[object Object],FreeMarker,[object Object],Spring Data Access / Integration,[object Object]
Testing,[object Object],JUnit,[object Object],Take advantage of what JUnit 4.7 has to offer (Explore Theories, Rules, Etc…) ,[object Object],Libraries,[object Object],DbUnithttp://www.dbunit.org/,[object Object],Dumpster http://quintanasoft.com/dumbster/,[object Object],Consider HADES http://redmine.synyx.org/projects/show/hades,[object Object],Persistence Layer,[object Object]
Service Layer,[object Object]
A logical encapsulation of classes and interfaces that provide the system functionality consolidating Units of work. Service layer classes should be:,[object Object],Transactional ,[object Object],Stateless,[object Object],Beans Stereotyped with @Service,[object Object],Follow a convention (I suggest VADER),[object Object],Service Layer,[object Object]
Web Layer,[object Object]
A logical encapsulation of classes and interfaces whose responsibilities fall within the scope of:,[object Object],Navigational logic,[object Object],Rendering page views in the proper order,[object Object],As simple as mapping a single URL to a single page,[object Object],As complex as a full work flow engine,[object Object],Web concerns (Request variables, session variables, HTTP methods, HTTP response codes, Etc…) should be separated from business logic,[object Object],Web Layer,[object Object]
Two types of Web Frameworks,[object Object],Request / Response Web Frameworks,[object Object],Wrap the Servlet API,[object Object],Adopt push model,[object Object],Compile result,[object Object],Push it out to be rendered in a view,[object Object],Struts, Spring MVC, Etc…,[object Object],Component Web Frameworks,[object Object],Dot only hide the Servlet API,[object Object],Event-driven component,[object Object],JSF, Tapestry, Etc…,[object Object],Web Layer,[object Object]
Spring MVC,[object Object]
Request / Response Web Frameworks,[object Object],A Front Controller Pattern,[object Object],One Dispatcher servlet,[object Object],Application Contexts,[object Object],Application Context,[object Object],Web Application Context,[object Object],Spring MVC,[object Object]
The promise Non-invasiveness,[object Object],Fully annotation-driven,[object Object],No extension of framework classes ,[object Object],No overriding methods,[object Object],Controllers,[object Object],Beans (Spring Managed-POJOs) Stereotyped with @Controller,[object Object],Spring MVC - Controllers,[object Object]
Mapping Rules,[object Object],@RequestMapping,[object Object],By,[object Object],Path,[object Object],HTTP method,[object Object],Query Parameters,[object Object],Request  Headers,[object Object],Spring MVC - Controllers,[object Object]
Handler Methods,[object Object],Parameters are request inputs,[object Object],Request data,[object Object],@RequestParam,[object Object],@PathVariable,[object Object],@RequestHeader,[object Object],@CookieValue,[object Object],Command Objects (Domain Objects),[object Object],Injection of standard objects,[object Object],Automatic Type Conversion,[object Object],Custom Type Conversion,[object Object],JSR 303 Support,[object Object],@Valid,[object Object],Exposing reference data to the views,[object Object],@ModelAttribute,[object Object],Spring MVC - Controllers,[object Object]
RESTfulSpring MVC 3.0,[object Object]
Representational State Transfer,[object Object],Architectural Style,[object Object],Identifiable Resources,[object Object],Everything is a resource accessible URI,[object Object],Uniform Interface based on HTTP methods,[object Object],GET /contacts 		reads all contacts,[object Object],GET /contacts/1 		reads the contact whose id is 1,[object Object],POST /contacts		creates a contact ,[object Object],PUT /contacts/1	updates the contact whose id is 1,[object Object],DELETE /contacts/1	deletes the contact whose id is 1	,[object Object],RESTful Architecture,[object Object]
Architectural Style,[object Object],Resource Representations,[object Object],Multiple data representation (MIME types) can be specified,[object Object],Request,[object Object],Accept HTTP header field or file extension,[object Object],Response,[object Object],Content-Type HTTP header field,[object Object],Stateless Conversion,[object Object],No session,[object Object],Scalable,[object Object],Loosely coupled,[object Object],RESTful Architecture,[object Object]
Annotations,[object Object],@RequestMapping,[object Object],@PathVariable,[object Object],@RequestBody,[object Object],@ResponceBody,[object Object],Spring OXM (Object-XML Mapping),[object Object],Marshaling / Unmarshaling,[object Object],RESTful Spring,[object Object]
Presentation Layer,[object Object]
“Deciding to use Velocity or XSLT in place of an existing JSP is primarily a matter of configuration” Spring 3.0 Documentation,[object Object],View technologies,[object Object],JSP & JSTL,[object Object],Tiles,[object Object],Velocity,[object Object],FreeMarker,[object Object],XSLT,[object Object],JasperReports,[object Object],Etc…,[object Object],Spring MVC - Views,[object Object]
Views are rendered based on handler methods return,[object Object],@ResponseBody or ResponseEntity<T>,[object Object],Many HttpMessageConverters,[object Object],StringHttpMessageConverter,[object Object],Jaxb2RootElementHttpMessageConverter,[object Object],MappingJacksonHttpMessageConverter,[object Object],AtomFeed/RssChannelHttpMessageConverter,[object Object],Etc…,[object Object],Register your own,[object Object],String,[object Object],View Resolver and a View,[object Object],Spring MVC - Views,[object Object]
View Resolvers,[object Object],InternalResourceViewResolver,[object Object],ContentNegotiatingViewResolver,[object Object],BeanNameViewResolver,[object Object],JasperReportsViewResolver,[object Object],TilesViewResolver,[object Object],Etc…,[object Object],Spring MVC - Views,[object Object]
JSP & JSTL,[object Object],Spring Tag Library,[object Object],Spring Form Tag Library,[object Object],Refer to spring-form.tld,[object Object],Themes,[object Object],Overall look-and-feel of your application,[object Object],A collection of style sheets and images,[object Object],<spring:theme />,[object Object],Theme resolvers,[object Object],I18N,[object Object],Spring MVC - Views,[object Object]
Spring Web Flow,[object Object],For Web Application that are,[object Object],More dynamic,[object Object],Non-linear without arbitrary end points,[object Object],Spring Portlet MVC,[object Object],A JSR 168 compliant Portlet environnent,[object Object],Large web application composed with subcomponents on the same web page,[object Object],Spring MVC Complements,[object Object]
Aspects,[object Object]
Spring AOP,[object Object]
OOP creates a hierarchical object model by nature,[object Object],Cross cutting concerns,[object Object],Are not necessarily a part of the application logic,[object Object],Occur across the object hierarchy in unrelated parts,[object Object],Examples,[object Object],Logging,[object Object],Security,[object Object],Transaction management,[object Object],Etc…,[object Object],Aspect-Oriented Programming,[object Object]
The Problem,[object Object],Code Tangling,[object Object],No Cohesion,[object Object],Code Scattering,[object Object],Not DRY,[object Object],The Solution,[object Object],Aspect Oriented Programming,[object Object],AspectJ,[object Object],Modulation of Aspects and weaving into the application code,[object Object],Aspect Oriented Programming,[object Object]
Spring AOP,[object Object],Java based AOP Framework,[object Object],Built on top of AspectJ,[object Object],Interception based,[object Object],Spring APO,[object Object]
Joint Point,[object Object],A point in the execution of the program,[object Object],Point Cut,[object Object],An expression that selects one or more joint point,[object Object],AspectJ Expression Language,[object Object],Advice,[object Object],The code to be weaved at a joint point,[object Object],Aspect,[object Object],Point Cut + Advice,[object Object],AOP Terminology,[object Object]
Annotations,[object Object],Before,[object Object],AfterReturning,[object Object],AfterThrowing,[object Object],After,[object Object],Around,[object Object],Types of Advices,[object Object]
Spring Security,[object Object]
Authentication,[object Object],the verification of the user identity,[object Object],Authorization,[object Object],Permissions granted to the identified user,[object Object],Access Control,[object Object],By arbitrary conditions that may depend to ,[object Object],Attributes of clients,[object Object],Temporal and Local Condition,[object Object],Human User Detection,[object Object],Other,[object Object],Channel or Transport Security,[object Object],Encryption,[object Object],Security Terminology,[object Object]
Realm,[object Object],A Defined the authentication policy,[object Object],User,[object Object],A defined individual in the Application Server,[object Object],Group,[object Object],A defined classification of users by common traits in the Application Server.,[object Object],Role,[object Object],An abstract name of the permissions to access a particular set of resources in an application,[object Object],Security Terminology,[object Object]
Spring Security,[object Object],JAAS (Java Authentication and Authorization Service),[object Object],jGuard,[object Object],Apache Shiro,[object Object],Available Frameworks,[object Object]
Security is your responsibility,[object Object],Features:,[object Object],It is not the standard,[object Object],No class loader authorization capabilities,[object Object],Simple configuration,[object Object],Portable across containers,[object Object],Customizable and extendable,[object Object],Pluggable authentication and web request URI security,[object Object],Support method interception, Single Sign-On, and Swing clients,[object Object],Spring Security,[object Object]
Authentication,[object Object],Form-Based,[object Object],Basic,[object Object],Digest,[object Object],LDAP,[object Object],NTLM (NT LAN Manager),[object Object],SSO (Single Sign-On),[object Object],JA-SIG CAS,[object Object],Open ID,[object Object],Atlassian Crowd,[object Object],SiteMinder,[object Object],X.509,[object Object],Authentication,[object Object]
Mechanisms,[object Object],Interact with the user,[object Object],Providers,[object Object],Check credentials,[object Object],Bundles details in a Thread Local security context holder,[object Object],Repositories,[object Object],Store roles and profile info,[object Object],In Memory,[object Object],JDBC,[object Object],LDAP,[object Object],Etc…,[object Object],Authentication,[object Object]
Web Authorization,[object Object],URL-Based,[object Object],Which URL patterns and HTTP methods are allowed to be accessed by which role,[object Object],Method Authorization,[object Object],Reusable,[object Object],Protocol Agnostic,[object Object],Uses AOP,[object Object],Annotations Support,[object Object],JSR 250,[object Object],Spring @Secured,[object Object],Spring Security EL,[object Object],Authorization,[object Object]
Other,[object Object]
Job Scheduling,[object Object],Bulk Processing ,[object Object],Integration,[object Object],Etc…,[object Object],Other,[object Object]
If you are interested in,[object Object],The full-source code of the Address Book Application,[object Object],A Step-By-Step tutorial,[object Object],Possibly a screen cast,[object Object],Go to,[object Object],http://bit.ly/ad4VGh,[object Object],Support Material,[object Object]
The Silicon Valley Spring User Group,[object Object],http://www.meetup.com/sv-sug,[object Object]
Q & A,[object Object]
Thank You!,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Java j2ee interview_questions
Java j2ee interview_questionsJava j2ee interview_questions
Java j2ee interview_questionsppratik86
 
J2EE Architecture Explained
J2EE  Architecture ExplainedJ2EE  Architecture Explained
J2EE Architecture ExplainedAdarsh Kr Sinha
 
Dh2 Apps Training Part2
Dh2   Apps Training Part2Dh2   Apps Training Part2
Dh2 Apps Training Part2jamram82
 
Devoid Web Application From SQL Injection Attack
Devoid Web Application From SQL Injection AttackDevoid Web Application From SQL Injection Attack
Devoid Web Application From SQL Injection AttackIJRESJOURNAL
 
Innovate2011 Keys to Building OSLC Integrations
Innovate2011 Keys to Building OSLC IntegrationsInnovate2011 Keys to Building OSLC Integrations
Innovate2011 Keys to Building OSLC IntegrationsSteve Speicher
 
Complete java syllabus 7448062045 Yesdo Sddd
Complete java syllabus 7448062045 Yesdo SdddComplete java syllabus 7448062045 Yesdo Sddd
Complete java syllabus 7448062045 Yesdo SdddYesdo Softindia Pvt Ltd
 
Unit 1st and 3rd notes of java
Unit 1st and 3rd notes of javaUnit 1st and 3rd notes of java
Unit 1st and 3rd notes of javaNiraj Bharambe
 
Lecture 8 Enterprise Java Beans (EJB)
Lecture 8  Enterprise Java Beans (EJB)Lecture 8  Enterprise Java Beans (EJB)
Lecture 8 Enterprise Java Beans (EJB)Fahad Golra
 
Hibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jHibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jSatya Johnny
 
AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012Luca Carettoni
 
Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013Edward Burns
 
Security Issues in HTML 5
Security Issues in HTML 5Security Issues in HTML 5
Security Issues in HTML 5Wasif Altaf
 
Core java interview questions
Core java interview questionsCore java interview questions
Core java interview questionsRohit Singh
 

Was ist angesagt? (20)

Hibernate Advance Interview Questions
Hibernate Advance Interview QuestionsHibernate Advance Interview Questions
Hibernate Advance Interview Questions
 
Java j2ee interview_questions
Java j2ee interview_questionsJava j2ee interview_questions
Java j2ee interview_questions
 
J2ee
J2eeJ2ee
J2ee
 
J2EE Architecture Explained
J2EE  Architecture ExplainedJ2EE  Architecture Explained
J2EE Architecture Explained
 
Dh2 Apps Training Part2
Dh2   Apps Training Part2Dh2   Apps Training Part2
Dh2 Apps Training Part2
 
Devoid Web Application From SQL Injection Attack
Devoid Web Application From SQL Injection AttackDevoid Web Application From SQL Injection Attack
Devoid Web Application From SQL Injection Attack
 
J2ee architecture
J2ee architectureJ2ee architecture
J2ee architecture
 
Innovate2011 Keys to Building OSLC Integrations
Innovate2011 Keys to Building OSLC IntegrationsInnovate2011 Keys to Building OSLC Integrations
Innovate2011 Keys to Building OSLC Integrations
 
Complete java syllabus 7448062045 Yesdo Sddd
Complete java syllabus 7448062045 Yesdo SdddComplete java syllabus 7448062045 Yesdo Sddd
Complete java syllabus 7448062045 Yesdo Sddd
 
Unit 1st and 3rd notes of java
Unit 1st and 3rd notes of javaUnit 1st and 3rd notes of java
Unit 1st and 3rd notes of java
 
Lecture 8 Enterprise Java Beans (EJB)
Lecture 8  Enterprise Java Beans (EJB)Lecture 8  Enterprise Java Beans (EJB)
Lecture 8 Enterprise Java Beans (EJB)
 
J2EE Introduction
J2EE IntroductionJ2EE Introduction
J2EE Introduction
 
Hibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_jHibernate complete notes_by_sekhar_sir_javabynatara_j
Hibernate complete notes_by_sekhar_sir_javabynatara_j
 
AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012
 
Java J2EE
Java J2EEJava J2EE
Java J2EE
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
 
Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013Best Practices for JSF, Gameduell 2013
Best Practices for JSF, Gameduell 2013
 
Spring Framework Rohit
Spring Framework RohitSpring Framework Rohit
Spring Framework Rohit
 
Security Issues in HTML 5
Security Issues in HTML 5Security Issues in HTML 5
Security Issues in HTML 5
 
Core java interview questions
Core java interview questionsCore java interview questions
Core java interview questions
 

Ähnlich wie Building enterprise web applications with spring 3

Yii Framework Security
Yii Framework SecurityYii Framework Security
Yii Framework SecurityIlko Kacharov
 
Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2javatrainingonline
 
IRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHPIRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHPIRJET Journal
 
Railsplitter: Simplify Your CRUD
Railsplitter: Simplify Your CRUDRailsplitter: Simplify Your CRUD
Railsplitter: Simplify Your CRUDFlurry, Inc.
 
Software Architecture in Architecture design .ppt
Software Architecture in Architecture design .pptSoftware Architecture in Architecture design .ppt
Software Architecture in Architecture design .pptguruswamyd785
 
Design patterns fast track
Design patterns fast trackDesign patterns fast track
Design patterns fast trackBinu Bhasuran
 
College information management system.doc
College information management system.docCollege information management system.doc
College information management system.docKamal Acharya
 
IRJET- A Review On - Controlchain: Access Control using Blockchain
IRJET- A Review On - Controlchain: Access Control using BlockchainIRJET- A Review On - Controlchain: Access Control using Blockchain
IRJET- A Review On - Controlchain: Access Control using BlockchainIRJET Journal
 
Introduction to Java Enterprise Edition
Introduction to Java Enterprise EditionIntroduction to Java Enterprise Edition
Introduction to Java Enterprise EditionAbdalla Mahmoud
 
Repository Pattern in MVC3 Application with Entity Framework
Repository Pattern in MVC3 Application with Entity FrameworkRepository Pattern in MVC3 Application with Entity Framework
Repository Pattern in MVC3 Application with Entity FrameworkAkhil Mittal
 
Introduction to ejb and struts framework
Introduction to ejb and struts frameworkIntroduction to ejb and struts framework
Introduction to ejb and struts frameworks4al_com
 
Spring training
Spring trainingSpring training
Spring trainingTechFerry
 
Case Study For Data Governance Portal
Case Study For Data Governance PortalCase Study For Data Governance Portal
Case Study For Data Governance PortalMike Taylor
 
Introduction To CodeIgniter
Introduction To CodeIgniterIntroduction To CodeIgniter
Introduction To CodeIgniterschwebbie
 

Ähnlich wie Building enterprise web applications with spring 3 (20)

Yii Framework Security
Yii Framework SecurityYii Framework Security
Yii Framework Security
 
Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2
 
Java J2EE Interview Question Part 2
Java J2EE Interview Question Part 2Java J2EE Interview Question Part 2
Java J2EE Interview Question Part 2
 
Struts Ppt 1
Struts Ppt 1Struts Ppt 1
Struts Ppt 1
 
Struts
StrutsStruts
Struts
 
IRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHPIRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHP
 
Railsplitter: Simplify Your CRUD
Railsplitter: Simplify Your CRUDRailsplitter: Simplify Your CRUD
Railsplitter: Simplify Your CRUD
 
Software Architecture in Architecture design .ppt
Software Architecture in Architecture design .pptSoftware Architecture in Architecture design .ppt
Software Architecture in Architecture design .ppt
 
Design patterns fast track
Design patterns fast trackDesign patterns fast track
Design patterns fast track
 
College information management system.doc
College information management system.docCollege information management system.doc
College information management system.doc
 
IRJET- A Review On - Controlchain: Access Control using Blockchain
IRJET- A Review On - Controlchain: Access Control using BlockchainIRJET- A Review On - Controlchain: Access Control using Blockchain
IRJET- A Review On - Controlchain: Access Control using Blockchain
 
Struts N E W
Struts N E WStruts N E W
Struts N E W
 
Introduction to Java Enterprise Edition
Introduction to Java Enterprise EditionIntroduction to Java Enterprise Edition
Introduction to Java Enterprise Edition
 
Lecture 10.pptx
Lecture 10.pptxLecture 10.pptx
Lecture 10.pptx
 
Oracle Identity Manager Basics
Oracle Identity Manager BasicsOracle Identity Manager Basics
Oracle Identity Manager Basics
 
Repository Pattern in MVC3 Application with Entity Framework
Repository Pattern in MVC3 Application with Entity FrameworkRepository Pattern in MVC3 Application with Entity Framework
Repository Pattern in MVC3 Application with Entity Framework
 
Introduction to ejb and struts framework
Introduction to ejb and struts frameworkIntroduction to ejb and struts framework
Introduction to ejb and struts framework
 
Spring training
Spring trainingSpring training
Spring training
 
Case Study For Data Governance Portal
Case Study For Data Governance PortalCase Study For Data Governance Portal
Case Study For Data Governance Portal
 
Introduction To CodeIgniter
Introduction To CodeIgniterIntroduction To CodeIgniter
Introduction To CodeIgniter
 

Mehr von Abdelmonaim Remani

The Economies of Scaling Software
The Economies of Scaling SoftwareThe Economies of Scaling Software
The Economies of Scaling SoftwareAbdelmonaim Remani
 
The Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot PersistenceThe Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot PersistenceAbdelmonaim Remani
 
The Art of Metaprogramming in Java
The Art of Metaprogramming in Java  The Art of Metaprogramming in Java
The Art of Metaprogramming in Java Abdelmonaim Remani
 
Introduction To Rich Internet Applications
Introduction To Rich Internet ApplicationsIntroduction To Rich Internet Applications
Introduction To Rich Internet ApplicationsAbdelmonaim Remani
 

Mehr von Abdelmonaim Remani (6)

The Eschatology of Java
The Eschatology of JavaThe Eschatology of Java
The Eschatology of Java
 
The Economies of Scaling Software
The Economies of Scaling SoftwareThe Economies of Scaling Software
The Economies of Scaling Software
 
The Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot PersistenceThe Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot Persistence
 
The Art of Metaprogramming in Java
The Art of Metaprogramming in Java  The Art of Metaprogramming in Java
The Art of Metaprogramming in Java
 
Le Tour de xUnit
Le Tour de xUnitLe Tour de xUnit
Le Tour de xUnit
 
Introduction To Rich Internet Applications
Introduction To Rich Internet ApplicationsIntroduction To Rich Internet Applications
Introduction To Rich Internet Applications
 

Kürzlich hochgeladen

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 

Kürzlich hochgeladen (20)

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 

Building enterprise web applications with spring 3

  • 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.

Hinweis der Redaktion

  1. Enterprise applications dealcomplex problems.This complexity manifests itself inThe ramification of their functional requirementsThe intricacy of their non-functional requirementsThe latter can be classified asThe ones that are related to the execution of the application (such as performance, reliability, and security)The ones that pertain to its evolution (such as testability, maintainability, extensibility, and scalability whether it is horizontal or vertical)
  2. Here I am using the termsseparation of concerns and abstraction interchangeably, which is not necessarily not true. Separation of concerns is a form abstraction.Abstraction manifested by modularization, encapsulation, etc… within the OOP paradigmReducing complexity is artificial because the complexity of the problem remains the same no matter what abstraction we apply to deal itIf you contemplate on Dijkstra’s quote
  3. Established the fact that EAS is far more complex to fit in a monolithic The terms tier and layer are used loosely (logical/physical)As you move up to the next level of abstraction, the lower level serves as a platform to the one on top of itMiddleware: RPC, WS, MOM, or as sophisticated as an ESB or a full blown SOA
  4. Tradeoff: Since it is done at runtime, no static type checking
  5. Spring Web FlowAllows web apps to act like state machinesEvents are raised to change to statesSpring Portlet MVCShared StateSSO and User authentication and authorization
  6. AspectJ vs. Spring AOPAspectJ uses Byte code modification for code weavingSpring AOP uses dynamic proxies for code weavingInterception removes the need for compilation or load-time weavingBut only allows for public or protected method execution at a join point
  7. Access control is like a gate that is either closed or open under certain conditions and designated to certain people only
  8. Compare to JAASSimple configuration compared with .policy whose authors still need to be trustedNot all the containers implement JAAS-based authorization
  9. BasicHTTP Standard (Pop-up)HTTPS is used for EncryptionDigest: S-HTTPSSL is designed to establish a secure connection, whereas S-HTTP is designed to send individual messages securely