110 likes | 422 Views
eBay Case Study Jeremy Kraybill & Jeremy Thomerson. CARad – Who Are We?. Started as an auction site in competition with eBay, before eBay had really developed its Motors division. Grew to be the #1 tool for listing vehicles on eBay Motors. Acquired by eBay in March 2003. CARad Overview.
E N D
eBay Case Study • Jeremy Kraybill & Jeremy Thomerson
CARad – Who Are We? Started as an auction site in competition with eBay, before eBay had really developed its Motors division. Grew to be the #1 tool for listing vehicles on eBay Motors
Acquired by eBay in March 2003 CARad Overview • Listing and vehicle management tools for vehicle sellers • CARad.com: focused on dealers • CARad Express: focused on individuals • Generally 4,000-5,000 live listings at any given time on eBay Motors • 70% of users are dealers • Application hosted out of eBay Denver hosting facility • Originally written in Macromedia ColdFusion • Migration of all application functionality over to Java with Spring / Tapestry / Hibernate / Freemarker infrastructure
CARad Java Architecture Engine Offline applications Pages SOAP interface Web Components Tapestry Axis Services Layer Services Layer Domain Model Domain Model DAO Layer DAO Layer Hibernate Mappings Hibernate Mappings Spring ORM Spring ORM Spring Hibernate Hibernate Spring Servlet container DB
Modular overrides in Spring Hierarchical Spring contexts Need for overridden beans within the context at some levels. Define base configurations at lower modules that can be overridden at higher level. Test configurations can also override module-config on each level to provide mocked out services, etc… Our top level applications have the need to override beans that are used by beans in lower modules. For example, our US site may need to add a page into a list of pages defined within our standard web flow, whereas another country’s site may not need to override that standard page flow. carad.com.dealer carad.com.fsbo carad.com.api internal.web internal.apps internal.domain testing config internal.domain: services DAOs internal.platform testing config internal.platform: abstract session factories declarative transaction policies logging
Switching applications at runtime As we build out many different applications, we develop the need to be able to quickly change between them for development and testing of shared code and configuration. We use a Spring service to be able to switch applications at runtime (development / regression) without restarting our web server. ContextLocator setContextName(String) getContext() ContextSingletonBeanFactoryLocator Motors (US) Other Verticals Other Countries