实例介绍
Java Web高级编程源码
【实例截图】
【核心代码】
b3ec09fa-f8a4-4dbd-90c4-1a288efe3b1e
└── 高级编程源码
└── 9781118656464 Full Code
├── Chapter 02
│ ├── Sample-Debug-Eclipse
│ │ ├── pom.xml
│ │ └── web
│ │ └── index.jsp
│ ├── Sample-Debug-IntelliJ
│ │ ├── pom.xml
│ │ ├── Sample-Debug-IntelliJ.iml
│ │ └── web
│ │ └── index.jsp
│ └── sample-deployment.war
├── Chapter 03
│ ├── Eclipse
│ │ ├── Customer-Support-v1
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── Ticket.java
│ │ │ │ └── TicketServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ └── web.xml
│ │ ├── Hello-User
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── ContextParameterServlet.java
│ │ │ │ ├── HelloServlet.java
│ │ │ │ ├── MultiValueParameterServlet.java
│ │ │ │ └── ServletParameterServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ └── web.xml
│ │ └── Hello-World
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ └── HelloServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v1
│ │ ├── Customer-Support-v1.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── Ticket.java
│ │ │ └── TicketServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ └── web.xml
│ ├── Hello-User
│ │ ├── Hello-User.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── ContextParameterServlet.java
│ │ │ ├── HelloServlet.java
│ │ │ ├── MultiValueParameterServlet.java
│ │ │ └── ServletParameterServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ └── web.xml
│ └── Hello-World
│ ├── Hello-World.iml
│ ├── pom.xml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ └── HelloServlet.java
│ └── web
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
├── Chapter 04
│ ├── Eclipse
│ │ ├── Customer-Support-v2
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── Ticket.java
│ │ │ │ └── TicketServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ └── web.xml
│ │ ├── Hello-User-JSP
│ │ │ ├── pom.xml
│ │ │ └── web
│ │ │ ├── checkboxes.jsp
│ │ │ ├── checkboxesSubmit.jsp
│ │ │ ├── contextParameters.jsp
│ │ │ ├── greeting.jsp
│ │ │ └── WEB-INF
│ │ │ └── web.xml
│ │ └── Hello-World-JSP
│ │ ├── pom.xml
│ │ └── web
│ │ ├── blank.jsp
│ │ ├── dynamicIncluder.jsp
│ │ ├── gibberish.jsp
│ │ ├── includer.jsp
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v2
│ │ ├── Customer-Support-v2.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── Ticket.java
│ │ │ └── TicketServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── listTickets.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ └── web.xml
│ ├── Hello-User-JSP
│ │ ├── Hello-User-JSP.iml
│ │ ├── pom.xml
│ │ └── web
│ │ ├── checkboxes.jsp
│ │ ├── checkboxesSubmit.jsp
│ │ ├── contextParameters.jsp
│ │ ├── greeting.jsp
│ │ └── WEB-INF
│ │ └── web.xml
│ └── Hello-World-JSP
│ ├── Hello-World-JSP.iml
│ ├── pom.xml
│ └── web
│ ├── blank.jsp
│ ├── dynamicIncluder.jsp
│ ├── gibberish.jsp
│ ├── includer.jsp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
├── Chapter 05
│ ├── Eclipse
│ │ ├── Customer-Support-v3
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── LoginServlet.java
│ │ │ │ ├── SessionListener.java
│ │ │ │ ├── SessionListServlet.java
│ │ │ │ ├── SessionRegistry.java
│ │ │ │ ├── Ticket.java
│ │ │ │ └── TicketServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── sessions.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ └── web.xml
│ │ ├── Session-Activity
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── ActivityServlet.java
│ │ │ │ └── PageVisit.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── viewSessionActivity.jsp
│ │ │ └── web.xml
│ │ └── Shopping-Cart
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ └── StoreServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── browse.jsp
│ │ │ └── viewCart.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v3
│ │ ├── Customer-Support-v3.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── LoginServlet.java
│ │ │ ├── SessionListener.java
│ │ │ ├── SessionListServlet.java
│ │ │ ├── SessionRegistry.java
│ │ │ ├── Ticket.java
│ │ │ └── TicketServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ └── web.xml
│ ├── Session-Activity
│ │ ├── pom.xml
│ │ ├── Session-Activity.iml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── ActivityServlet.java
│ │ │ └── PageVisit.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── viewSessionActivity.jsp
│ │ └── web.xml
│ └── Shopping-Cart
│ ├── pom.xml
│ ├── Shopping-Cart.iml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ └── StoreServlet.java
│ └── web
│ ├── index.jsp
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── browse.jsp
│ │ └── viewCart.jsp
│ └── web.xml
├── Chapter 06
│ ├── Eclipse
│ │ ├── Customer-Support-v4
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── LoginServlet.java
│ │ │ │ ├── SessionListener.java
│ │ │ │ ├── SessionListServlet.java
│ │ │ │ ├── SessionRegistry.java
│ │ │ │ ├── Ticket.java
│ │ │ │ └── TicketServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── sessions.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ └── web.xml
│ │ └── User-Profile
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── ProfileServlet.java
│ │ │ └── User.java
│ │ └── web
│ │ ├── collections.jsp
│ │ ├── index.jsp
│ │ ├── info.jsp
│ │ ├── scope.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── profile.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v4
│ │ ├── Customer-Support-v4.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── LoginServlet.java
│ │ │ ├── SessionListener.java
│ │ │ ├── SessionListServlet.java
│ │ │ ├── SessionRegistry.java
│ │ │ ├── Ticket.java
│ │ │ └── TicketServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ └── web.xml
│ └── User-Profile
│ ├── pom.xml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ ├── ProfileServlet.java
│ │ └── User.java
│ ├── User-Profile.iml
│ └── web
│ ├── collections.jsp
│ ├── index.jsp
│ ├── info.jsp
│ ├── scope.jsp
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── profile.jsp
│ └── web.xml
├── Chapter 07
│ ├── Eclipse
│ │ ├── Address-Book
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Contact.java
│ │ │ │ └── ListServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── list.jsp
│ │ │ └── web.xml
│ │ ├── Address-Book-i18n
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── Contact.java
│ │ │ │ │ └── ListServlet.java
│ │ │ │ └── resources
│ │ │ │ ├── AddressBook-messages_en_US.properties
│ │ │ │ └── AddressBook-messages_fr_FR.properties
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── list.jsp
│ │ │ └── web.xml
│ │ └── Customer-Support-v5
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── LoginServlet.java
│ │ │ ├── SessionListener.java
│ │ │ ├── SessionListServlet.java
│ │ │ ├── SessionRegistry.java
│ │ │ ├── Ticket.java
│ │ │ └── TicketServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Address-Book
│ │ ├── Address-Book.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Contact.java
│ │ │ └── ListServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── list.jsp
│ │ └── web.xml
│ ├── Address-Book-i18n
│ │ ├── Address-Book-i18n.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Contact.java
│ │ │ │ └── ListServlet.java
│ │ │ └── resources
│ │ │ ├── AddressBook-messages_en_US.properties
│ │ │ └── AddressBook-messages_fr_FR.properties
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── list.jsp
│ │ └── web.xml
│ └── Customer-Support-v5
│ ├── Customer-Support-v5.iml
│ ├── pom.xml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ ├── Attachment.java
│ │ ├── LoginServlet.java
│ │ ├── SessionListener.java
│ │ ├── SessionListServlet.java
│ │ ├── SessionRegistry.java
│ │ ├── Ticket.java
│ │ └── TicketServlet.java
│ └── web
│ ├── index.jsp
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── listTickets.jsp
│ │ ├── login.jsp
│ │ ├── sessions.jsp
│ │ ├── ticketForm.jsp
│ │ └── viewTicket.jsp
│ └── web.xml
├── Chapter 08
│ ├── c.tld
│ ├── Eclipse
│ │ ├── Customer-Support-v6
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── LoginServlet.java
│ │ │ │ ├── SessionListener.java
│ │ │ │ ├── SessionListServlet.java
│ │ │ │ ├── SessionRegistry.java
│ │ │ │ ├── tag
│ │ │ │ │ └── FormatDateTag.java
│ │ │ │ ├── Ticket.java
│ │ │ │ ├── TicketServlet.java
│ │ │ │ └── TimeUtils.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── sessions.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ └── Template-Tags
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── IndexServlet.java
│ │ │ └── tag
│ │ │ └── FormatDateTag.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── dates.jsp
│ │ │ ├── hello.jsp
│ │ │ └── text.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ ├── fn.tld
│ └── IntelliJ
│ ├── Customer-Support-v6
│ │ ├── Customer-Support-v6.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── LoginServlet.java
│ │ │ ├── SessionListener.java
│ │ │ ├── SessionListServlet.java
│ │ │ ├── SessionRegistry.java
│ │ │ ├── tag
│ │ │ │ └── FormatDateTag.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketServlet.java
│ │ │ └── TimeUtils.java
│ │ └── web
│ │ ├── index.jsp
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ └── Template-Tags
│ ├── pom.xml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ ├── IndexServlet.java
│ │ └── tag
│ │ └── FormatDateTag.java
│ ├── Template-Tags.iml
│ └── web
│ ├── index.jsp
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── dates.jsp
│ │ ├── hello.jsp
│ │ └── text.jsp
│ ├── tags
│ │ └── template
│ │ └── main.tag
│ ├── tld
│ │ └── wrox.tld
│ └── web.xml
├── Chapter 09
│ ├── Eclipse
│ │ ├── Compression-Filter
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── CompressedServlet.java
│ │ │ │ ├── CompressionFilter.java
│ │ │ │ ├── Configurator.java
│ │ │ │ └── RequestLogFilter.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ └── base.jspf
│ │ │ └── web.xml
│ │ ├── Customer-Support-v7
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ ├── Configurator.java
│ │ │ │ ├── LoginServlet.java
│ │ │ │ ├── SessionListener.java
│ │ │ │ ├── SessionListServlet.java
│ │ │ │ ├── SessionRegistry.java
│ │ │ │ ├── tag
│ │ │ │ │ └── FormatDateTag.java
│ │ │ │ ├── Ticket.java
│ │ │ │ ├── TicketServlet.java
│ │ │ │ └── TimeUtils.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── sessions.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ ├── Filter-Async
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── AnyRequestFilter.java
│ │ │ │ ├── AsyncServlet.java
│ │ │ │ └── NonAsyncServlet.java
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ └── view
│ │ │ │ ├── async.jsp
│ │ │ │ └── nonAsync.jsp
│ │ │ └── web.xml
│ │ └── Filter-Order
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── FilterA.java
│ │ │ ├── FilterB.java
│ │ │ ├── FilterC.java
│ │ │ ├── ServletOne.java
│ │ │ ├── ServletThree.java
│ │ │ └── ServletTwo.java
│ │ └── web
│ │ └── WEB-INF
│ │ └── web.xml
│ └── IntelliJ
│ ├── Compression-Filter
│ │ ├── Compression-Filter.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── CompressedServlet.java
│ │ │ ├── CompressionFilter.java
│ │ │ ├── Configurator.java
│ │ │ └── RequestLogFilter.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ └── web.xml
│ ├── Customer-Support-v7
│ │ ├── Customer-Support-v7.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── AuthenticationFilter.java
│ │ │ ├── Configurator.java
│ │ │ ├── LoginServlet.java
│ │ │ ├── SessionListener.java
│ │ │ ├── SessionListServlet.java
│ │ │ ├── SessionRegistry.java
│ │ │ ├── tag
│ │ │ │ └── FormatDateTag.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketServlet.java
│ │ │ └── TimeUtils.java
│ │ └── web
│ │ ├── index.jsp
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ ├── Filter-Async
│ │ ├── Filter-Async.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── AnyRequestFilter.java
│ │ │ ├── AsyncServlet.java
│ │ │ └── NonAsyncServlet.java
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── view
│ │ │ ├── async.jsp
│ │ │ └── nonAsync.jsp
│ │ └── web.xml
│ └── Filter-Order
│ ├── Filter-Order.iml
│ ├── pom.xml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ ├── FilterA.java
│ │ ├── FilterB.java
│ │ ├── FilterC.java
│ │ ├── ServletOne.java
│ │ ├── ServletThree.java
│ │ └── ServletTwo.java
│ └── web
│ └── WEB-INF
│ └── web.xml
├── Chapter 10
│ ├── Eclipse
│ │ ├── Customer-Support-v8
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ ├── chat
│ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ └── ChatSession.java
│ │ │ │ ├── ChatServlet.java
│ │ │ │ ├── Configurator.java
│ │ │ │ ├── LoginServlet.java
│ │ │ │ ├── SessionListener.java
│ │ │ │ ├── SessionListServlet.java
│ │ │ │ ├── SessionRegistry.java
│ │ │ │ ├── tag
│ │ │ │ │ └── FormatDateTag.java
│ │ │ │ ├── Ticket.java
│ │ │ │ ├── TicketServlet.java
│ │ │ │ └── TimeUtils.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── sessions.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ ├── Game-Site
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ └── production
│ │ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── TicTacToeGame.java
│ │ │ │ ├── TicTacToeServer.java
│ │ │ │ └── TicTacToeServlet.java
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ ├── resource
│ │ │ │ ├── image
│ │ │ │ │ ├── ticTacToe-hover.png
│ │ │ │ │ ├── ticTacToe-opponent.png
│ │ │ │ │ └── ticTacToe-player.png
│ │ │ │ └── stylesheet
│ │ │ │ └── ticTacToe.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── ticTacToe
│ │ │ │ ├── game.jsp
│ │ │ │ └── list.jsp
│ │ │ └── web.xml
│ │ └── Simulated-Cluster
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── ClusterMessage.java
│ │ │ ├── ClusterNodeEndpoint.java
│ │ │ └── ClusterNodeServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v8
│ │ ├── Customer-Support-v8.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── Attachment.java
│ │ │ ├── AuthenticationFilter.java
│ │ │ ├── chat
│ │ │ │ ├── ChatEndpoint.java
│ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ ├── ChatMessage.java
│ │ │ │ └── ChatSession.java
│ │ │ ├── ChatServlet.java
│ │ │ ├── Configurator.java
│ │ │ ├── LoginServlet.java
│ │ │ ├── SessionListener.java
│ │ │ ├── SessionListServlet.java
│ │ │ ├── SessionRegistry.java
│ │ │ ├── tag
│ │ │ │ └── FormatDateTag.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketServlet.java
│ │ │ └── TimeUtils.java
│ │ └── web
│ │ ├── index.jsp
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ ├── Game-Site
│ │ ├── Game-Site.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ └── production
│ │ │ └── java
│ │ │ └── com
│ │ │ └── wrox
│ │ │ ├── TicTacToeGame.java
│ │ │ ├── TicTacToeServer.java
│ │ │ └── TicTacToeServlet.java
│ │ └── web
│ │ ├── index.jsp
│ │ ├── resource
│ │ │ ├── image
│ │ │ │ ├── ticTacToe-hover.png
│ │ │ │ ├── ticTacToe-opponent.png
│ │ │ │ └── ticTacToe-player.png
│ │ │ └── stylesheet
│ │ │ └── ticTacToe.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── ticTacToe
│ │ │ ├── game.jsp
│ │ │ └── list.jsp
│ │ └── web.xml
│ └── Simulated-Cluster
│ ├── pom.xml
│ ├── Simulated-Cluster.iml
│ ├── source
│ │ └── production
│ │ └── java
│ │ └── com
│ │ └── wrox
│ │ ├── ClusterMessage.java
│ │ ├── ClusterNodeEndpoint.java
│ │ └── ClusterNodeServlet.java
│ └── web
│ ├── index.jsp
│ └── WEB-INF
│ ├── jsp
│ │ └── base.jspf
│ └── web.xml
├── Chapter 11
│ ├── Eclipse
│ │ ├── Customer-Support-v9
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ └── ChatSession.java
│ │ │ │ │ │ ├── ChatServlet.java
│ │ │ │ │ │ ├── Configurator.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── LoginServlet.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionListServlet.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketServlet.java
│ │ │ │ │ │ └── TimeUtils.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── index.jsp
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── listTickets.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── sessions.jsp
│ │ │ │ ├── ticketForm.jsp
│ │ │ │ └── viewTicket.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ └── Logging-Integration
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── ActionServlet.java
│ │ │ │ │ └── LoggingFilter.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── index.jsp
│ │ ├── logging.jsp
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v9
│ │ ├── Customer-Support-v9.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ └── ChatSession.java
│ │ │ │ │ ├── ChatServlet.java
│ │ │ │ │ ├── Configurator.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── LoginServlet.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionListServlet.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketServlet.java
│ │ │ │ │ └── TimeUtils.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── index.jsp
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── listTickets.jsp
│ │ │ ├── login.jsp
│ │ │ ├── sessions.jsp
│ │ │ ├── ticketForm.jsp
│ │ │ └── viewTicket.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ └── Logging-Integration
│ ├── Logging-Integration.iml
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── ActionServlet.java
│ │ │ │ └── LoggingFilter.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ ├── index.jsp
│ ├── logging.jsp
│ └── WEB-INF
│ ├── jsp
│ │ └── base.jspf
│ └── web.xml
├── Chapter 12
│ ├── Eclipse
│ │ ├── Spring-Hybrid-Config
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ │ └── HelloController.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ └── base.jspf
│ │ │ ├── rootContext.xml
│ │ │ ├── servletContext.xml
│ │ │ └── web.xml
│ │ ├── Spring-Java-Config
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ │ └── HelloController.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ └── base.jspf
│ │ │ └── web.xml
│ │ ├── Spring-One-Context-XML-Config
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ │ └── HelloController.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ └── base.jspf
│ │ │ ├── servletContext.xml
│ │ │ └── web.xml
│ │ └── Spring-XML-Config
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ └── HelloController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ ├── rootContext.xml
│ │ ├── servletContext.xml
│ │ └── web.xml
│ └── IntelliJ
│ ├── Spring-Hybrid-Config
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ └── HelloController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ ├── Spring-Hybrid-Config.iml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ ├── rootContext.xml
│ │ ├── servletContext.xml
│ │ └── web.xml
│ ├── Spring-Java-Config
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ └── HelloController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ ├── Spring-Java-Config.iml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ └── web.xml
│ ├── Spring-One-Context-XML-Config
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ │ ├── GreetingService.java
│ │ │ │ │ └── HelloController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ ├── Spring-One-Context-XML-Config.iml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ └── base.jspf
│ │ ├── servletContext.xml
│ │ └── web.xml
│ └── Spring-XML-Config
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── GreetingServiceImpl.java
│ │ │ │ ├── GreetingService.java
│ │ │ │ └── HelloController.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ ├── Spring-XML-Config.iml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ └── base.jspf
│ ├── rootContext.xml
│ ├── servletContext.xml
│ └── web.xml
├── Chapter 13
│ ├── Eclipse
│ │ ├── Customer-Support-v10
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ └── ChatSession.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ └── TimeUtils.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ ├── Model-View-Controller
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── HomeController.java
│ │ │ │ │ │ └── User.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── home
│ │ │ │ │ └── dashboard.jsp
│ │ │ │ └── user
│ │ │ │ └── home.jsp
│ │ │ └── web.xml
│ │ └── Spring-Forms
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── UserForm.java
│ │ │ │ │ ├── User.java
│ │ │ │ │ └── UserManagementController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── user
│ │ │ ├── add.jsp
│ │ │ ├── edit.jsp
│ │ │ ├── form.jspf
│ │ │ └── list.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v10
│ │ ├── Customer-Support-v10.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ └── ChatSession.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ └── TimeUtils.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ ├── Model-View-Controller
│ │ ├── Model-View-Controller.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── HomeController.java
│ │ │ │ │ └── User.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── home
│ │ │ │ └── dashboard.jsp
│ │ │ └── user
│ │ │ └── home.jsp
│ │ └── web.xml
│ └── Spring-Forms
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── UserForm.java
│ │ │ │ ├── User.java
│ │ │ │ └── UserManagementController.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ ├── Spring-Forms.iml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── user
│ │ ├── add.jsp
│ │ ├── edit.jsp
│ │ ├── form.jspf
│ │ └── list.jsp
│ └── web.xml
├── Chapter 14
│ ├── Eclipse
│ │ ├── Customer-Support-v11
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ └── Discussion-Board
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── BoardController.java
│ │ │ │ │ ├── DefaultDiscussionService.java
│ │ │ │ │ ├── DefaultReplyService.java
│ │ │ │ │ ├── DiscussionController.java
│ │ │ │ │ ├── DiscussionRepository.java
│ │ │ │ │ ├── DiscussionService.java
│ │ │ │ │ ├── entity
│ │ │ │ │ │ ├── Discussion.java
│ │ │ │ │ │ └── Reply.java
│ │ │ │ │ ├── FakeNotificationService.java
│ │ │ │ │ ├── form
│ │ │ │ │ │ ├── DiscussionForm.java
│ │ │ │ │ │ └── ReplyForm.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── InMemoryDiscussionRepository.java
│ │ │ │ │ ├── InMemoryReplyRepository.java
│ │ │ │ │ ├── NotificationService.java
│ │ │ │ │ ├── ReplyRepository.java
│ │ │ │ │ └── ReplyService.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── discussion
│ │ │ ├── create.jsp
│ │ │ ├── errorNoDiscussion.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v11
│ │ ├── Customer-Support-v11.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ └── Discussion-Board
│ ├── Discussion-Board.iml
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── BoardController.java
│ │ │ │ ├── DefaultDiscussionService.java
│ │ │ │ ├── DefaultReplyService.java
│ │ │ │ ├── DiscussionController.java
│ │ │ │ ├── DiscussionRepository.java
│ │ │ │ ├── DiscussionService.java
│ │ │ │ ├── entity
│ │ │ │ │ ├── Discussion.java
│ │ │ │ │ └── Reply.java
│ │ │ │ ├── FakeNotificationService.java
│ │ │ │ ├── form
│ │ │ │ │ ├── DiscussionForm.java
│ │ │ │ │ └── ReplyForm.java
│ │ │ │ ├── IndexController.java
│ │ │ │ ├── InMemoryDiscussionRepository.java
│ │ │ │ ├── InMemoryReplyRepository.java
│ │ │ │ ├── NotificationService.java
│ │ │ │ ├── ReplyRepository.java
│ │ │ │ └── ReplyService.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── discussion
│ │ ├── create.jsp
│ │ ├── errorNoDiscussion.jsp
│ │ ├── list.jsp
│ │ └── view.jsp
│ └── web.xml
├── Chapter 15
│ ├── Eclipse
│ │ ├── Customer-Support-v12
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ └── LoggedException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ └── titles_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ └── Localized-Application
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ └── LoggedException.java
│ │ │ │ │ └── site
│ │ │ │ │ └── HomeController.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── errors_es_MX.properties
│ │ │ ├── messages_en_US.properties
│ │ │ └── messages_es_MX.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── home
│ │ │ └── index.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v12
│ │ ├── Customer-Support-v12.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ └── LoggedException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ └── titles_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ └── Localized-Application
│ ├── Localized-Application.iml
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ └── LoggedException.java
│ │ │ │ └── site
│ │ │ │ └── HomeController.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ └── WEB-INF
│ ├── i18n
│ │ ├── errors_en_US.properties
│ │ ├── errors_es_MX.properties
│ │ ├── messages_en_US.properties
│ │ └── messages_es_MX.properties
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── home
│ │ └── index.jsp
│ └── web.xml
├── Chapter 16
│ ├── Eclipse
│ │ ├── Custom-Constraints
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── DefaultEmployeeService.java
│ │ │ │ │ │ ├── EmployeeController.java
│ │ │ │ │ │ ├── EmployeeForm.java
│ │ │ │ │ │ ├── Employee.java
│ │ │ │ │ │ ├── EmployeeService.java
│ │ │ │ │ │ ├── Gender.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── employee
│ │ │ │ └── create.jsp
│ │ │ └── web.xml
│ │ ├── Customer-Support-v13
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ └── LoggedException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ └── web.xml
│ │ └── HR-Portal
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── DefaultEmployeeService.java
│ │ │ │ │ ├── EmployeeController.java
│ │ │ │ │ ├── EmployeeForm.java
│ │ │ │ │ ├── Employee.java
│ │ │ │ │ ├── EmployeeService.java
│ │ │ │ │ └── Gender.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── employee
│ │ │ └── create.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Custom-Constraints
│ │ ├── Custom-Constraints.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── DefaultEmployeeService.java
│ │ │ │ │ ├── EmployeeController.java
│ │ │ │ │ ├── EmployeeForm.java
│ │ │ │ │ ├── Employee.java
│ │ │ │ │ ├── EmployeeService.java
│ │ │ │ │ ├── Gender.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── employee
│ │ │ └── create.jsp
│ │ └── web.xml
│ ├── Customer-Support-v13
│ │ ├── Customer-Support-v13.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ └── LoggedException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ └── web.xml
│ └── HR-Portal
│ ├── HR-Portal.iml
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── ServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── DefaultEmployeeService.java
│ │ │ │ ├── EmployeeController.java
│ │ │ │ ├── EmployeeForm.java
│ │ │ │ ├── Employee.java
│ │ │ │ ├── EmployeeService.java
│ │ │ │ └── Gender.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ └── WEB-INF
│ ├── i18n
│ │ ├── messages_en_US.properties
│ │ ├── titles_en_US.properties
│ │ └── validation_en_US.properties
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── employee
│ │ └── create.jsp
│ └── web.xml
├── Chapter 17
│ ├── Eclipse
│ │ ├── Customer-Support-v14
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ ├── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ └── config
│ │ │ │ │ │ └── soapServletContext.xml
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ ├── web.xml
│ │ │ └── xsd
│ │ │ └── soap
│ │ │ └── support.xsd
│ │ └── Web-Service
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AccountController.java
│ │ │ │ │ ├── AccountForm.java
│ │ │ │ │ ├── Account.java
│ │ │ │ │ ├── AccountRestEndpoint.java
│ │ │ │ │ ├── AccountService.java
│ │ │ │ │ ├── DefaultAccountService.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── IndexRestEndpoint.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── account
│ │ │ └── list.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v14
│ │ ├── Customer-Support-v14.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── InMemoryTicketRepository.java
│ │ │ │ │ ├── InMemoryUserRepository.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TemporaryAuthenticationService.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── Web-Service
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── AccountController.java
│ │ │ │ ├── AccountForm.java
│ │ │ │ ├── Account.java
│ │ │ │ ├── AccountRestEndpoint.java
│ │ │ │ ├── AccountService.java
│ │ │ │ ├── DefaultAccountService.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ ├── IndexRestEndpoint.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ ├── web
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── account
│ │ │ └── list.jsp
│ │ └── web.xml
│ └── Web-Service.iml
├── Chapter 18
│ ├── Eclipse
│ │ ├── AMQP-Messaging
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── AuthenticationEvent.java
│ │ │ │ │ │ ├── AuthenticationInterestedParty.java
│ │ │ │ │ │ ├── ClusterEvent.java
│ │ │ │ │ │ ├── ClusterEventMulticaster.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ │ ├── HomeController.java
│ │ │ │ │ │ ├── LoginEvent.java
│ │ │ │ │ │ ├── LoginInterestedParty.java
│ │ │ │ │ │ ├── LogoutEvent.java
│ │ │ │ │ │ ├── LogoutInterestedParty.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── login.jsp
│ │ │ │ └── logout.jsp
│ │ │ └── web.xml
│ │ ├── Publish-Subscribe
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── AuthenticationEvent.java
│ │ │ │ │ │ ├── AuthenticationInterestedParty.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ │ ├── HomeController.java
│ │ │ │ │ │ ├── LoginEvent.java
│ │ │ │ │ │ ├── LoginInterestedParty.java
│ │ │ │ │ │ ├── LogoutEvent.java
│ │ │ │ │ │ ├── LogoutInterestedParty.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── login.jsp
│ │ │ │ └── logout.jsp
│ │ │ └── web.xml
│ │ └── WebSocket-Messaging
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationEvent.java
│ │ │ │ │ ├── AuthenticationInterestedParty.java
│ │ │ │ │ ├── ClusterEvent.java
│ │ │ │ │ ├── ClusterEventMulticaster.java
│ │ │ │ │ ├── ClusterManager.java
│ │ │ │ │ ├── ClusterMessagingEndpoint.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── HomeController.java
│ │ │ │ │ ├── LoginEvent.java
│ │ │ │ │ ├── LoginInterestedParty.java
│ │ │ │ │ ├── LogoutEvent.java
│ │ │ │ │ ├── LogoutInterestedParty.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── login.jsp
│ │ │ └── logout.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── AMQP-Messaging
│ │ ├── AMQP-Messaging.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationEvent.java
│ │ │ │ │ ├── AuthenticationInterestedParty.java
│ │ │ │ │ ├── ClusterEvent.java
│ │ │ │ │ ├── ClusterEventMulticaster.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── HomeController.java
│ │ │ │ │ ├── LoginEvent.java
│ │ │ │ │ ├── LoginInterestedParty.java
│ │ │ │ │ ├── LogoutEvent.java
│ │ │ │ │ ├── LogoutInterestedParty.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── login.jsp
│ │ │ └── logout.jsp
│ │ └── web.xml
│ ├── Publish-Subscribe
│ │ ├── pom.xml
│ │ ├── Publish-Subscribe.iml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationEvent.java
│ │ │ │ │ ├── AuthenticationInterestedParty.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── HomeController.java
│ │ │ │ │ ├── LoginEvent.java
│ │ │ │ │ ├── LoginInterestedParty.java
│ │ │ │ │ ├── LogoutEvent.java
│ │ │ │ │ ├── LogoutInterestedParty.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── login.jsp
│ │ │ └── logout.jsp
│ │ └── web.xml
│ └── WebSocket-Messaging
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── AuthenticationEvent.java
│ │ │ │ ├── AuthenticationInterestedParty.java
│ │ │ │ ├── ClusterEvent.java
│ │ │ │ ├── ClusterEventMulticaster.java
│ │ │ │ ├── ClusterManager.java
│ │ │ │ ├── ClusterMessagingEndpoint.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ ├── HomeController.java
│ │ │ │ ├── LoginEvent.java
│ │ │ │ ├── LoginInterestedParty.java
│ │ │ │ ├── LogoutEvent.java
│ │ │ │ ├── LogoutInterestedParty.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ ├── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── login.jsp
│ │ │ └── logout.jsp
│ │ └── web.xml
│ └── WebSocket-Messaging.iml
├── Chapter 20
│ ├── Eclipse
│ │ ├── Entity-Mappings
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Author.java
│ │ │ │ │ │ │ ├── Book.java
│ │ │ │ │ │ │ └── Publisher.java
│ │ │ │ │ │ └── EntityServlet.java
│ │ │ │ │ └── resources
│ │ │ │ │ ├── log4j2.xml
│ │ │ │ │ └── META-INF
│ │ │ │ │ └── persistence.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── entities.jsp
│ │ │ └── web.xml
│ │ └── Enums-Dates-Lobs
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── site
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Author.java
│ │ │ │ │ │ ├── Book.java
│ │ │ │ │ │ ├── Gender.java
│ │ │ │ │ │ └── Publisher.java
│ │ │ │ │ └── EntityServlet.java
│ │ │ │ └── resources
│ │ │ │ ├── log4j2.xml
│ │ │ │ └── META-INF
│ │ │ │ └── persistence.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── entities.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Entity-Mappings
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── Entity-Mappings.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── site
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Author.java
│ │ │ │ │ │ ├── Book.java
│ │ │ │ │ │ └── Publisher.java
│ │ │ │ │ └── EntityServlet.java
│ │ │ │ └── resources
│ │ │ │ ├── log4j2.xml
│ │ │ │ └── META-INF
│ │ │ │ └── persistence.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── entities.jsp
│ │ └── web.xml
│ └── Enums-Dates-Lobs
│ ├── database
│ │ └── create.sql
│ ├── Enums-Dates-Lobs.iml
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ └── site
│ │ │ │ ├── entities
│ │ │ │ │ ├── Author.java
│ │ │ │ │ ├── Book.java
│ │ │ │ │ ├── Gender.java
│ │ │ │ │ └── Publisher.java
│ │ │ │ └── EntityServlet.java
│ │ │ └── resources
│ │ │ ├── log4j2.xml
│ │ │ └── META-INF
│ │ │ └── persistence.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── entities.jsp
│ └── web.xml
├── Chapter 21
│ ├── Eclipse
│ │ ├── Customer-Support-v15
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultAttachmentRepository.java
│ │ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketRepository.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DefaultUserRepository.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ │ ├── TicketEntity.java
│ │ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ │ ├── GenericBaseRepository.java
│ │ │ │ │ │ ├── GenericJpaRepository.java
│ │ │ │ │ │ ├── GenericRepository.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ ├── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ └── config
│ │ │ │ │ │ └── soapServletContext.xml
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ ├── web.xml
│ │ │ └── xsd
│ │ │ └── soap
│ │ │ └── support.xsd
│ │ └── Spring-JPA
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthorRepository.java
│ │ │ │ │ ├── BookController.java
│ │ │ │ │ ├── BookManager.java
│ │ │ │ │ ├── BookRepository.java
│ │ │ │ │ ├── DefaultAuthorRepository.java
│ │ │ │ │ ├── DefaultBookManager.java
│ │ │ │ │ ├── DefaultBookRepository.java
│ │ │ │ │ ├── DefaultPublisherRepository.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Author.java
│ │ │ │ │ │ ├── Book.java
│ │ │ │ │ │ ├── Gender.java
│ │ │ │ │ │ └── Publisher.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── GenericBaseRepository.java
│ │ │ │ │ ├── GenericJpaRepository.java
│ │ │ │ │ ├── GenericRepository.java
│ │ │ │ │ ├── PublisherRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── entities.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v15
│ │ ├── Customer-Support-v15.iml
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultAttachmentRepository.java
│ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketRepository.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DefaultUserRepository.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── TicketEntity.java
│ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ ├── GenericBaseRepository.java
│ │ │ │ │ ├── GenericJpaRepository.java
│ │ │ │ │ ├── GenericRepository.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── Spring-JPA
│ ├── database
│ │ └── create.sql
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── AuthorRepository.java
│ │ │ │ ├── BookController.java
│ │ │ │ ├── BookManager.java
│ │ │ │ ├── BookRepository.java
│ │ │ │ ├── DefaultAuthorRepository.java
│ │ │ │ ├── DefaultBookManager.java
│ │ │ │ ├── DefaultBookRepository.java
│ │ │ │ ├── DefaultPublisherRepository.java
│ │ │ │ ├── entities
│ │ │ │ │ ├── Author.java
│ │ │ │ │ ├── Book.java
│ │ │ │ │ ├── Gender.java
│ │ │ │ │ └── Publisher.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ ├── GenericBaseRepository.java
│ │ │ │ ├── GenericJpaRepository.java
│ │ │ │ ├── GenericRepository.java
│ │ │ │ ├── PublisherRepository.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ ├── Spring-JPA.iml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── entities.jsp
│ └── web.xml
├── Chapter 22
│ ├── Eclipse
│ │ ├── Customer-Support-v16
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ │ ├── TicketCommentEntity.java
│ │ │ │ │ │ │ ├── TicketEntity.java
│ │ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── repositories
│ │ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ ├── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ └── config
│ │ │ │ │ │ └── soapServletContext.xml
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ ├── web.xml
│ │ │ └── xsd
│ │ │ └── soap
│ │ │ └── support.xsd
│ │ └── Spring-Data-JPA
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── BookController.java
│ │ │ │ │ ├── BookManager.java
│ │ │ │ │ ├── DefaultBookManager.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Author.java
│ │ │ │ │ │ ├── Book.java
│ │ │ │ │ │ ├── Gender.java
│ │ │ │ │ │ └── Publisher.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AuthorRepository.java
│ │ │ │ │ │ ├── BookRepository.java
│ │ │ │ │ │ └── PublisherRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── entities.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v16
│ │ ├── Customer-Support-v16.iml
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── TicketCommentEntity.java
│ │ │ │ │ │ ├── TicketEntity.java
│ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── Spring-Data-JPA
│ ├── database
│ │ └── create.sql
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── BookController.java
│ │ │ │ ├── BookManager.java
│ │ │ │ ├── DefaultBookManager.java
│ │ │ │ ├── entities
│ │ │ │ │ ├── Author.java
│ │ │ │ │ ├── Book.java
│ │ │ │ │ ├── Gender.java
│ │ │ │ │ └── Publisher.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ ├── repositories
│ │ │ │ │ ├── AuthorRepository.java
│ │ │ │ │ ├── BookRepository.java
│ │ │ │ │ └── PublisherRepository.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ ├── Spring-Data-JPA.iml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ └── entities.jsp
│ └── web.xml
├── Chapter 23
│ ├── Eclipse
│ │ ├── Advanced-Criteria
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── Criterion.java
│ │ │ │ │ │ ├── DefaultPersonService.java
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Gender.java
│ │ │ │ │ │ │ └── Person.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ │ ├── MainController.java
│ │ │ │ │ │ ├── PersonService.java
│ │ │ │ │ │ ├── repositories
│ │ │ │ │ │ │ ├── AbstractDomainClassAwareRepository.java
│ │ │ │ │ │ │ ├── AbstractSearchableJpaRepository.java
│ │ │ │ │ │ │ ├── PersonRepositoryImpl.java
│ │ │ │ │ │ │ ├── PersonRepository.java
│ │ │ │ │ │ │ └── SearchableRepository.java
│ │ │ │ │ │ ├── SearchCriteria.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ └── people
│ │ │ │ ├── add.jsp
│ │ │ │ └── find.jsp
│ │ │ └── web.xml
│ │ ├── Customer-Support-v17
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ │ ├── TicketCommentEntity.java
│ │ │ │ │ │ │ ├── TicketEntity.java
│ │ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ │ ├── repositories
│ │ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ ├── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ └── config
│ │ │ │ │ │ └── soapServletContext.xml
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ ├── search.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ ├── web.xml
│ │ │ └── xsd
│ │ │ └── soap
│ │ │ └── support.xsd
│ │ └── Search-Engine
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── DefaultMainService.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── ForumPost.java
│ │ │ │ │ │ └── User.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── MainController.java
│ │ │ │ │ ├── MainService.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── ForumPostRepositoryImpl.java
│ │ │ │ │ │ ├── ForumPostRepository.java
│ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── add.jsp
│ │ │ └── search.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Advanced-Criteria
│ │ ├── Advanced-Criteria.iml
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Criterion.java
│ │ │ │ │ ├── DefaultPersonService.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Gender.java
│ │ │ │ │ │ └── Person.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── MainController.java
│ │ │ │ │ ├── PersonService.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AbstractDomainClassAwareRepository.java
│ │ │ │ │ │ ├── AbstractSearchableJpaRepository.java
│ │ │ │ │ │ ├── PersonRepositoryImpl.java
│ │ │ │ │ │ ├── PersonRepository.java
│ │ │ │ │ │ └── SearchableRepository.java
│ │ │ │ │ ├── SearchCriteria.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ └── people
│ │ │ ├── add.jsp
│ │ │ └── find.jsp
│ │ └── web.xml
│ ├── Customer-Support-v17
│ │ ├── Customer-Support-v17.iml
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── TicketCommentEntity.java
│ │ │ │ │ │ ├── TicketEntity.java
│ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ ├── search.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── Search-Engine
│ ├── database
│ │ └── create.sql
│ ├── pom.xml
│ ├── Search-Engine.iml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── DefaultMainService.java
│ │ │ │ ├── entities
│ │ │ │ │ ├── ForumPost.java
│ │ │ │ │ └── User.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ ├── MainController.java
│ │ │ │ ├── MainService.java
│ │ │ │ ├── repositories
│ │ │ │ │ ├── ForumPostRepositoryImpl.java
│ │ │ │ │ ├── ForumPostRepository.java
│ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── add.jsp
│ │ └── search.jsp
│ └── web.xml
├── Chapter 24
│ ├── Eclipse
│ │ ├── Advanced-Mappings
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── converters
│ │ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ │ ├── DefaultEverythingService.java
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Address.java
│ │ │ │ │ │ │ ├── Applicant.java
│ │ │ │ │ │ │ ├── AuditedEntity.java
│ │ │ │ │ │ │ ├── BaseEntity.java
│ │ │ │ │ │ │ ├── Employee.java
│ │ │ │ │ │ │ ├── NewsArticle.java
│ │ │ │ │ │ │ ├── Person.java
│ │ │ │ │ │ │ ├── PhoneNumber.java
│ │ │ │ │ │ │ ├── PostalCode.java
│ │ │ │ │ │ │ ├── Resume.java
│ │ │ │ │ │ │ ├── User.java
│ │ │ │ │ │ │ └── VersionedEntity.java
│ │ │ │ │ │ ├── EverythingService.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ │ ├── MainController.java
│ │ │ │ │ │ ├── repositories
│ │ │ │ │ │ │ ├── ApplicantRepository.java
│ │ │ │ │ │ │ ├── EmployeeRepository.java
│ │ │ │ │ │ │ ├── NewsArticleRepository.java
│ │ │ │ │ │ │ ├── PersonRepository.java
│ │ │ │ │ │ │ ├── ResumeRepository.java
│ │ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── home.jsp
│ │ │ │ ├── list-applicants.jsp
│ │ │ │ ├── list-articles.jsp
│ │ │ │ ├── list-employees.jsp
│ │ │ │ ├── list-persons.jsp
│ │ │ │ └── list-users.jsp
│ │ │ └── web.xml
│ │ └── Customer-Support-v18
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ └── JoinResult.java
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── LoggingFilter.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SessionListener.java
│ │ │ │ │ ├── SessionRegistry.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ ├── search.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── IntelliJ
│ ├── Advanced-Mappings
│ │ ├── Advanced-Mappings.iml
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── DefaultEverythingService.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Address.java
│ │ │ │ │ │ ├── Applicant.java
│ │ │ │ │ │ ├── AuditedEntity.java
│ │ │ │ │ │ ├── BaseEntity.java
│ │ │ │ │ │ ├── Employee.java
│ │ │ │ │ │ ├── NewsArticle.java
│ │ │ │ │ │ ├── Person.java
│ │ │ │ │ │ ├── PhoneNumber.java
│ │ │ │ │ │ ├── PostalCode.java
│ │ │ │ │ │ ├── Resume.java
│ │ │ │ │ │ ├── User.java
│ │ │ │ │ │ └── VersionedEntity.java
│ │ │ │ │ ├── EverythingService.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── MainController.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── ApplicantRepository.java
│ │ │ │ │ │ ├── EmployeeRepository.java
│ │ │ │ │ │ ├── NewsArticleRepository.java
│ │ │ │ │ │ ├── PersonRepository.java
│ │ │ │ │ │ ├── ResumeRepository.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── home.jsp
│ │ │ ├── list-applicants.jsp
│ │ │ ├── list-articles.jsp
│ │ │ ├── list-employees.jsp
│ │ │ ├── list-persons.jsp
│ │ │ └── list-users.jsp
│ │ └── web.xml
│ └── Customer-Support-v18
│ ├── Customer-Support-v18.iml
│ ├── database
│ │ └── create.sql
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ └── site
│ │ │ │ ├── AuthenticationController.java
│ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ ├── AuthenticationService.java
│ │ │ │ ├── chat
│ │ │ │ │ ├── ChatController.java
│ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ ├── ChatService.java
│ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ └── JoinResult.java
│ │ │ │ ├── converters
│ │ │ │ │ └── InstantConverter.java
│ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ ├── DefaultSessionRegistry.java
│ │ │ │ ├── DefaultTicketService.java
│ │ │ │ ├── DownloadingView.java
│ │ │ │ ├── entities
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ └── UserPrincipal.java
│ │ │ │ ├── IndexController.java
│ │ │ │ ├── LoggingFilter.java
│ │ │ │ ├── repositories
│ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ ├── SessionListController.java
│ │ │ │ ├── SessionListener.java
│ │ │ │ ├── SessionRegistry.java
│ │ │ │ ├── tag
│ │ │ │ │ └── FormatDateTag.java
│ │ │ │ ├── TicketController.java
│ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ ├── TicketService.java
│ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ ├── TimeUtils.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ ├── com
│ │ │ │ └── wrox
│ │ │ │ └── config
│ │ │ │ └── soapServletContext.xml
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ ├── resource
│ │ └── stylesheet
│ │ ├── chat.css
│ │ ├── login.css
│ │ └── main.css
│ └── WEB-INF
│ ├── i18n
│ │ ├── errors_en_US.properties
│ │ ├── messages_en_US.properties
│ │ ├── titles_en_US.properties
│ │ └── validation_en_US.properties
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── chat
│ │ │ ├── chat.jsp
│ │ │ └── list.jsp
│ │ ├── login.jsp
│ │ ├── session
│ │ │ └── list.jsp
│ │ └── ticket
│ │ ├── add.jsp
│ │ ├── list.jsp
│ │ ├── search.jsp
│ │ └── view.jsp
│ ├── tags
│ │ └── template
│ │ ├── basic.tag
│ │ ├── loggedOut.tag
│ │ └── main.tag
│ ├── tld
│ │ └── wrox.tld
│ ├── web.xml
│ └── xsd
│ └── soap
│ └── support.xsd
├── Chapter 26
│ ├── Eclipse
│ │ ├── Authentication-App
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ ├── SecurityBootstrap.java
│ │ │ │ │ │ │ ├── SecurityConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── converters
│ │ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ │ ├── MainController.java
│ │ │ │ │ │ └── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── resources
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ └── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── admin.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── secure.jsp
│ │ │ │ └── unprotected.jsp
│ │ │ └── web.xml
│ │ └── Customer-Support-v19
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── bootstrap
│ │ │ │ │ │ │ ├── FrameworkBootstrap.java
│ │ │ │ │ │ │ ├── LoggingBootstrap.java
│ │ │ │ │ │ │ └── SecurityBootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SecurityConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── AuthenticationService.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ ├── JoinResult.java
│ │ │ │ │ │ └── SessionDestroyedListener.java
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── PostSecurityLoggingFilter.java
│ │ │ │ │ ├── PreSecurityLoggingFilter.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ ├── search.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── IntelliJ
│ ├── Authentication-App
│ │ ├── Authentication-App.iml
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SecurityBootstrap.java
│ │ │ │ │ │ ├── SecurityConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── MainController.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── admin.jsp
│ │ │ ├── login.jsp
│ │ │ ├── secure.jsp
│ │ │ └── unprotected.jsp
│ │ └── web.xml
│ └── Customer-Support-v19
│ ├── Customer-Support-v19.iml
│ ├── database
│ │ └── create.sql
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── bootstrap
│ │ │ │ │ │ ├── FrameworkBootstrap.java
│ │ │ │ │ │ ├── LoggingBootstrap.java
│ │ │ │ │ │ └── SecurityBootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ ├── SecurityConfiguration.java
│ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ └── site
│ │ │ │ ├── AuthenticationController.java
│ │ │ │ ├── AuthenticationService.java
│ │ │ │ ├── chat
│ │ │ │ │ ├── ChatController.java
│ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ ├── ChatService.java
│ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ ├── JoinResult.java
│ │ │ │ │ └── SessionDestroyedListener.java
│ │ │ │ ├── converters
│ │ │ │ │ └── InstantConverter.java
│ │ │ │ ├── DefaultAuthenticationService.java
│ │ │ │ ├── DefaultTicketService.java
│ │ │ │ ├── DownloadingView.java
│ │ │ │ ├── entities
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ └── UserPrincipal.java
│ │ │ │ ├── IndexController.java
│ │ │ │ ├── PostSecurityLoggingFilter.java
│ │ │ │ ├── PreSecurityLoggingFilter.java
│ │ │ │ ├── repositories
│ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ ├── SessionListController.java
│ │ │ │ ├── tag
│ │ │ │ │ └── FormatDateTag.java
│ │ │ │ ├── TicketController.java
│ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ ├── TicketService.java
│ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ ├── TimeUtils.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ ├── com
│ │ │ │ └── wrox
│ │ │ │ └── config
│ │ │ │ └── soapServletContext.xml
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ ├── resource
│ │ └── stylesheet
│ │ ├── chat.css
│ │ ├── login.css
│ │ └── main.css
│ └── WEB-INF
│ ├── i18n
│ │ ├── errors_en_US.properties
│ │ ├── messages_en_US.properties
│ │ ├── titles_en_US.properties
│ │ └── validation_en_US.properties
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── chat
│ │ │ ├── chat.jsp
│ │ │ └── list.jsp
│ │ ├── login.jsp
│ │ ├── session
│ │ │ └── list.jsp
│ │ └── ticket
│ │ ├── add.jsp
│ │ ├── list.jsp
│ │ ├── search.jsp
│ │ └── view.jsp
│ ├── tags
│ │ └── template
│ │ ├── basic.tag
│ │ ├── loggedOut.tag
│ │ └── main.tag
│ ├── tld
│ │ └── wrox.tld
│ ├── web.xml
│ └── xsd
│ └── soap
│ └── support.xsd
├── Chapter 27
│ ├── Eclipse
│ │ └── Customer-Support-v20
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── bootstrap
│ │ │ │ │ │ │ ├── FrameworkBootstrap.java
│ │ │ │ │ │ │ ├── LoggingBootstrap.java
│ │ │ │ │ │ │ └── SecurityBootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SecurityConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ ├── JoinResult.java
│ │ │ │ │ │ └── SessionDestroyedListener.java
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DefaultUserService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── UserAuthority.java
│ │ │ │ │ │ └── UserPrincipal.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── PostSecurityLoggingFilter.java
│ │ │ │ │ ├── PreSecurityLoggingFilter.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ └── UserRepository.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserService.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ ├── search.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── IntelliJ
│ └── Customer-Support-v20
│ ├── Customer-Support-v20.iml
│ ├── database
│ │ └── create.sql
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── bootstrap
│ │ │ │ │ │ ├── FrameworkBootstrap.java
│ │ │ │ │ │ ├── LoggingBootstrap.java
│ │ │ │ │ │ └── SecurityBootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ ├── SecurityConfiguration.java
│ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ └── site
│ │ │ │ ├── AuthenticationController.java
│ │ │ │ ├── chat
│ │ │ │ │ ├── ChatController.java
│ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ ├── ChatService.java
│ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ ├── JoinResult.java
│ │ │ │ │ └── SessionDestroyedListener.java
│ │ │ │ ├── converters
│ │ │ │ │ └── InstantConverter.java
│ │ │ │ ├── DefaultTicketService.java
│ │ │ │ ├── DefaultUserService.java
│ │ │ │ ├── DownloadingView.java
│ │ │ │ ├── entities
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── UserAuthority.java
│ │ │ │ │ └── UserPrincipal.java
│ │ │ │ ├── IndexController.java
│ │ │ │ ├── PostSecurityLoggingFilter.java
│ │ │ │ ├── PreSecurityLoggingFilter.java
│ │ │ │ ├── repositories
│ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ ├── SessionListController.java
│ │ │ │ ├── tag
│ │ │ │ │ └── FormatDateTag.java
│ │ │ │ ├── TicketController.java
│ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ ├── TicketService.java
│ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ ├── TimeUtils.java
│ │ │ │ ├── UserService.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ ├── com
│ │ │ │ └── wrox
│ │ │ │ └── config
│ │ │ │ └── soapServletContext.xml
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ ├── resource
│ │ └── stylesheet
│ │ ├── chat.css
│ │ ├── login.css
│ │ └── main.css
│ └── WEB-INF
│ ├── i18n
│ │ ├── errors_en_US.properties
│ │ ├── messages_en_US.properties
│ │ ├── titles_en_US.properties
│ │ └── validation_en_US.properties
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── chat
│ │ │ ├── chat.jsp
│ │ │ └── list.jsp
│ │ ├── login.jsp
│ │ ├── session
│ │ │ └── list.jsp
│ │ └── ticket
│ │ ├── add.jsp
│ │ ├── list.jsp
│ │ ├── search.jsp
│ │ └── view.jsp
│ ├── tags
│ │ └── template
│ │ ├── basic.tag
│ │ ├── loggedOut.tag
│ │ └── main.tag
│ ├── tld
│ │ └── wrox.tld
│ ├── web.xml
│ └── xsd
│ └── soap
│ └── support.xsd
├── Chapter 28
│ ├── Eclipse
│ │ ├── Customer-Support-v21
│ │ │ ├── database
│ │ │ │ └── create.sql
│ │ │ ├── pom.xml
│ │ │ ├── source
│ │ │ │ ├── production
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ │ ├── bootstrap
│ │ │ │ │ │ │ │ ├── FrameworkBootstrap.java
│ │ │ │ │ │ │ │ ├── LoggingBootstrap.java
│ │ │ │ │ │ │ │ └── SecurityBootstrap.java
│ │ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ │ ├── exception
│ │ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ │ └── site
│ │ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ │ ├── chat
│ │ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ │ ├── JoinResult.java
│ │ │ │ │ │ │ └── SessionDestroyedListener.java
│ │ │ │ │ │ ├── converters
│ │ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ │ ├── DefaultAccessTokenServices.java
│ │ │ │ │ │ ├── DefaultOAuthNonceServices.java
│ │ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ │ ├── DefaultUserService.java
│ │ │ │ │ │ ├── DefaultWebServiceClientService.java
│ │ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ │ ├── entities
│ │ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ │ ├── Nonce.java
│ │ │ │ │ │ │ ├── SigningAccessToken.java
│ │ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ │ ├── UserAuthority.java
│ │ │ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ │ │ └── WebServiceClient.java
│ │ │ │ │ │ ├── IndexController.java
│ │ │ │ │ │ ├── OAuthNonceServices.java
│ │ │ │ │ │ ├── OAuthSigningTokenAuthenticationFilter.java
│ │ │ │ │ │ ├── PostSecurityLoggingFilter.java
│ │ │ │ │ │ ├── PreSecurityLoggingFilter.java
│ │ │ │ │ │ ├── repositories
│ │ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ │ ├── NonceRepository.java
│ │ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ │ ├── SigningAccessTokenRepository.java
│ │ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ │ │ └── WebServiceClientRepository.java
│ │ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ │ ├── SigningAccessTokenServices.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ │ ├── TicketController.java
│ │ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ │ ├── TicketService.java
│ │ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ │ ├── UserService.java
│ │ │ │ │ │ ├── validation
│ │ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ │ └── WebServiceClientService.java
│ │ │ │ │ └── resources
│ │ │ │ │ ├── com
│ │ │ │ │ │ └── wrox
│ │ │ │ │ │ └── config
│ │ │ │ │ │ ├── securityConfiguration.xml
│ │ │ │ │ │ └── soapServletContext.xml
│ │ │ │ │ └── log4j2.xml
│ │ │ │ └── test
│ │ │ │ └── resources
│ │ │ │ └── log4j2-test.xml
│ │ │ └── web
│ │ │ ├── resource
│ │ │ │ └── stylesheet
│ │ │ │ ├── chat.css
│ │ │ │ ├── login.css
│ │ │ │ └── main.css
│ │ │ └── WEB-INF
│ │ │ ├── i18n
│ │ │ │ ├── errors_en_US.properties
│ │ │ │ ├── messages_en_US.properties
│ │ │ │ ├── titles_en_US.properties
│ │ │ │ └── validation_en_US.properties
│ │ │ ├── jsp
│ │ │ │ ├── base.jspf
│ │ │ │ └── view
│ │ │ │ ├── chat
│ │ │ │ │ ├── chat.jsp
│ │ │ │ │ └── list.jsp
│ │ │ │ ├── login.jsp
│ │ │ │ ├── oauth
│ │ │ │ │ ├── authorize.jsp
│ │ │ │ │ └── error.jsp
│ │ │ │ ├── session
│ │ │ │ │ └── list.jsp
│ │ │ │ └── ticket
│ │ │ │ ├── add.jsp
│ │ │ │ ├── list.jsp
│ │ │ │ ├── search.jsp
│ │ │ │ └── view.jsp
│ │ │ ├── tags
│ │ │ │ └── template
│ │ │ │ ├── basic.tag
│ │ │ │ ├── loggedOut.tag
│ │ │ │ └── main.tag
│ │ │ ├── tld
│ │ │ │ └── wrox.tld
│ │ │ ├── web.xml
│ │ │ └── xsd
│ │ │ └── soap
│ │ │ └── support.xsd
│ │ └── OAuth-Client
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SecurityBootstrap.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── Attachment.java
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ │ ├── HomeController.java
│ │ │ │ │ ├── OAuth2SigningRestTemplate.java
│ │ │ │ │ ├── SupportController.java
│ │ │ │ │ ├── Ticket.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ └── validation
│ │ │ │ │ ├── Email.java
│ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ └── securityConfiguration.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ └── WEB-INF
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── index.jsp
│ │ │ ├── login.jsp
│ │ │ └── support.jsp
│ │ └── web.xml
│ └── IntelliJ
│ ├── Customer-Support-v21
│ │ ├── Customer-Support-v21.iml
│ │ ├── database
│ │ │ └── create.sql
│ │ ├── pom.xml
│ │ ├── source
│ │ │ ├── production
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── wrox
│ │ │ │ │ ├── config
│ │ │ │ │ │ ├── annotation
│ │ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ │ └── WebController.java
│ │ │ │ │ │ ├── bootstrap
│ │ │ │ │ │ │ ├── FrameworkBootstrap.java
│ │ │ │ │ │ │ ├── LoggingBootstrap.java
│ │ │ │ │ │ │ └── SecurityBootstrap.java
│ │ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ │ ├── SoapServletContextConfiguration.java
│ │ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ ├── InternationalizedException.java
│ │ │ │ │ │ ├── LoggedException.java
│ │ │ │ │ │ └── ResourceNotFoundException.java
│ │ │ │ │ └── site
│ │ │ │ │ ├── AuthenticationController.java
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── ChatController.java
│ │ │ │ │ │ ├── ChatEndpoint.java
│ │ │ │ │ │ ├── ChatMessageCodec.java
│ │ │ │ │ │ ├── ChatMessage.java
│ │ │ │ │ │ ├── ChatService.java
│ │ │ │ │ │ ├── ChatSession.java
│ │ │ │ │ │ ├── CreateResult.java
│ │ │ │ │ │ ├── DefaultChatService.java
│ │ │ │ │ │ ├── JoinResult.java
│ │ │ │ │ │ └── SessionDestroyedListener.java
│ │ │ │ │ ├── converters
│ │ │ │ │ │ └── InstantConverter.java
│ │ │ │ │ ├── DefaultAccessTokenServices.java
│ │ │ │ │ ├── DefaultOAuthNonceServices.java
│ │ │ │ │ ├── DefaultTicketService.java
│ │ │ │ │ ├── DefaultUserService.java
│ │ │ │ │ ├── DefaultWebServiceClientService.java
│ │ │ │ │ ├── DownloadingView.java
│ │ │ │ │ ├── entities
│ │ │ │ │ │ ├── Attachment.java
│ │ │ │ │ │ ├── Nonce.java
│ │ │ │ │ │ ├── SigningAccessToken.java
│ │ │ │ │ │ ├── TicketComment.java
│ │ │ │ │ │ ├── Ticket.java
│ │ │ │ │ │ ├── UserAuthority.java
│ │ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ │ └── WebServiceClient.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── OAuthNonceServices.java
│ │ │ │ │ ├── OAuthSigningTokenAuthenticationFilter.java
│ │ │ │ │ ├── PostSecurityLoggingFilter.java
│ │ │ │ │ ├── PreSecurityLoggingFilter.java
│ │ │ │ │ ├── repositories
│ │ │ │ │ │ ├── AttachmentRepository.java
│ │ │ │ │ │ ├── NonceRepository.java
│ │ │ │ │ │ ├── SearchableRepository.java
│ │ │ │ │ │ ├── SearchResult.java
│ │ │ │ │ │ ├── SigningAccessTokenRepository.java
│ │ │ │ │ │ ├── TicketCommentRepository.java
│ │ │ │ │ │ ├── TicketRepositoryImpl.java
│ │ │ │ │ │ ├── TicketRepository.java
│ │ │ │ │ │ ├── UserRepository.java
│ │ │ │ │ │ └── WebServiceClientRepository.java
│ │ │ │ │ ├── RestExceptionHandler.java
│ │ │ │ │ ├── SessionListController.java
│ │ │ │ │ ├── SigningAccessTokenServices.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ └── FormatDateTag.java
│ │ │ │ │ ├── TicketController.java
│ │ │ │ │ ├── TicketRestEndpoint.java
│ │ │ │ │ ├── TicketService.java
│ │ │ │ │ ├── TicketSoapEndpoint.java
│ │ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ │ ├── TimeUtils.java
│ │ │ │ │ ├── UserService.java
│ │ │ │ │ ├── validation
│ │ │ │ │ │ ├── Email.java
│ │ │ │ │ │ ├── NotBlank.java
│ │ │ │ │ │ └── NotBlankValidator.java
│ │ │ │ │ └── WebServiceClientService.java
│ │ │ │ └── resources
│ │ │ │ ├── com
│ │ │ │ │ └── wrox
│ │ │ │ │ └── config
│ │ │ │ │ ├── securityConfiguration.xml
│ │ │ │ │ └── soapServletContext.xml
│ │ │ │ └── log4j2.xml
│ │ │ └── test
│ │ │ └── resources
│ │ │ └── log4j2-test.xml
│ │ └── web
│ │ ├── resource
│ │ │ └── stylesheet
│ │ │ ├── chat.css
│ │ │ ├── login.css
│ │ │ └── main.css
│ │ └── WEB-INF
│ │ ├── i18n
│ │ │ ├── errors_en_US.properties
│ │ │ ├── messages_en_US.properties
│ │ │ ├── titles_en_US.properties
│ │ │ └── validation_en_US.properties
│ │ ├── jsp
│ │ │ ├── base.jspf
│ │ │ └── view
│ │ │ ├── chat
│ │ │ │ ├── chat.jsp
│ │ │ │ └── list.jsp
│ │ │ ├── login.jsp
│ │ │ ├── oauth
│ │ │ │ ├── authorize.jsp
│ │ │ │ └── error.jsp
│ │ │ ├── session
│ │ │ │ └── list.jsp
│ │ │ └── ticket
│ │ │ ├── add.jsp
│ │ │ ├── list.jsp
│ │ │ ├── search.jsp
│ │ │ └── view.jsp
│ │ ├── tags
│ │ │ └── template
│ │ │ ├── basic.tag
│ │ │ ├── loggedOut.tag
│ │ │ └── main.tag
│ │ ├── tld
│ │ │ └── wrox.tld
│ │ ├── web.xml
│ │ └── xsd
│ │ └── soap
│ │ └── support.xsd
│ └── OAuth-Client
│ ├── database
│ │ └── create.sql
│ ├── OAuth-Client.iml
│ ├── pom.xml
│ ├── source
│ │ ├── production
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── wrox
│ │ │ │ ├── config
│ │ │ │ │ ├── annotation
│ │ │ │ │ │ ├── RestEndpointAdvice.java
│ │ │ │ │ │ ├── RestEndpoint.java
│ │ │ │ │ │ └── WebController.java
│ │ │ │ │ ├── Bootstrap.java
│ │ │ │ │ ├── RestServletContextConfiguration.java
│ │ │ │ │ ├── RootContextConfiguration.java
│ │ │ │ │ ├── SecurityBootstrap.java
│ │ │ │ │ └── WebServletContextConfiguration.java
│ │ │ │ └── site
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── AuthenticationController.java
│ │ │ │ ├── converters
│ │ │ │ │ └── InstantConverter.java
│ │ │ │ ├── exception
│ │ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ │ └── RestExceptionHandler.java
│ │ │ │ ├── HomeController.java
│ │ │ │ ├── OAuth2SigningRestTemplate.java
│ │ │ │ ├── SupportController.java
│ │ │ │ ├── Ticket.java
│ │ │ │ ├── TicketWebServiceList.java
│ │ │ │ ├── UserPrincipal.java
│ │ │ │ └── validation
│ │ │ │ ├── Email.java
│ │ │ │ ├── NotBlank.java
│ │ │ │ └── NotBlankValidator.java
│ │ │ └── resources
│ │ │ ├── com
│ │ │ │ └── wrox
│ │ │ │ └── config
│ │ │ │ └── securityConfiguration.xml
│ │ │ └── log4j2.xml
│ │ └── test
│ │ └── resources
│ │ └── log4j2-test.xml
│ └── web
│ └── WEB-INF
│ ├── jsp
│ │ ├── base.jspf
│ │ └── view
│ │ ├── index.jsp
│ │ ├── login.jsp
│ │ └── support.jsp
│ └── web.xml
└── README.txt
2245 directories, 3489 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论