Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/agoncal/agoncal-application-cdbookstore
An e-commerce web app that sells CDs and Books
https://github.com/agoncal/agoncal-application-cdbookstore
Last synced: about 1 month ago
JSON representation
An e-commerce web app that sells CDs and Books
- Host: GitHub
- URL: https://github.com/agoncal/agoncal-application-cdbookstore
- Owner: agoncal
- Created: 2015-08-31T18:09:56.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-07-10T11:43:04.000Z (over 8 years ago)
- Last Synced: 2023-10-20T16:14:55.017Z (about 1 year ago)
- Language: Java
- Size: 1.27 MB
- Stars: 32
- Watchers: 7
- Forks: 26
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Application - CD Book Store
* *Author* : [Antonio Goncalves](http://www.antoniogoncalves.org)
* *Level* : Intermediate
* *Technologies* : Java EE 7 (JPA 2.1, CDI 1.1, Bean Validation 1.1, EJB Lite 3.2, JSF 2.2, JAX-RS 2.0), Twitter Bootstrap (Bootstrap 3.x, JQuery 2.x, PrimeFaces 5.x)
* *Application Servers* : WildFly 8, WildFly 9, WildFly 10
* *Summary* : An e-commerce web application using Java EE 7[Download the code from GitHub](https://github.com/agoncal/agoncal-application-cdbookstore)
## Purpose of this application
This e-commerce web app allows you to buy CDs and Books.
The goals of this sample is to :
* use Java EE 7 and just Java EE 7 : no external framework or dependency (except web frameworks or logging APIs)
* make it simple : no complex business algorithm, the point is to bring Java EE 7 technologies together to create an eCommerce websiteThe only external framework used are [Arquillian](http://arquillian.org/), [Twitter Bootstrap](http://twitter.github.io/bootstrap/) and [PrimeFaces](http://www.primefaces.org/). Arquillian is used for integration testing. Using Maven profile, you can test services, injection, persistence... against different application servers. Twitter Bootstrap and PrimeFaces bring a bit of beauty to the web interface.
To fill up the database, I've used some Amazon Web Services. You will find the raw XML data in the `xml` directory with XSLT transformation (zipped so it's not too big).
## Architecture
The application is divided in several modules:
* The CD-Boostore is the main web app that allows you to buy CDs and Books.
* The Top Sells is a REST service that calculates the top sells. This REST service is invoked by CD-Boostore to display the top sells on the main page
* Billing : is a Message Driven Bean that receives all the sells that have been done and creates invoices## Compile and package
Being Maven centric, you can compile and package it without tests using `mvn clean compile -Dmaven.test.skip=true`, `mvn clean package -Dmaven.test.skip=true` or `mvn clean install -Dmaven.test.skip=true`. Once you have your war file, you can deploy it.
### Starting JBoss/WildFly
The invoice is an MDB, so you need to start the full profile of JBoss :
* `./standalone.sh -c standalone-full.xml`
Then you need to create a Queue with the following command in `jboss_cli.sh` :
* Create the queue : `jms-queue add --queue-address=invoiceQueue --entries=jms/queue/invoiceQueue`
* Delete the queue : `jms-queue remove --queue-address=invoiceQueue`### Several WildFlies
If you want to execute each application on different WildFly instances, just do :
* `./standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=2` (ports 8082 / 9992)
* `./standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=3` (ports 8083 / 9993)
* `./standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=5` (ports 8085 / 9995)### Test with Arquillian
Launching tests under [WildFly](http://www.wildfly.org/) is straight forward. You only have to launch WidlFly and execute the tests using the Maven profile :
mvn clean test -Parquillian-wildfly-remote
## Execute the sample
Once deployed go to the following URL and start buying some books and cds: [http://localhost:8080/applicationCDBookStore](http://localhost:8080/applicationCDBookStore).
The admin [REST interface](rs/application.wadl) allows you to create/update/remove items in the catalog, orders or customers. You can run the following [curl](http://curl.haxx.se/) commands :
* `curl -X GET http://localhost:8080/applicationCDBookStore/rs/catalog/categories`
* `curl -X GET http://localhost:8080/applicationCDBookStore/rs/catalog/products`
* `curl -X GET http://localhost:8080/applicationCDBookStore/rs/catalog/items`
* `curl -X GET http://localhost:8085/applicationToprated/toprateditems`You can also get a JSON representation as follow :
* `curl -X GET -H "accept: application/json" http://localhost:8080/applicationCDBookStore/rs/catalog/items`
## Third Party Tools & Frameworks
### Twitter Bootstrap
When, like me, you have no web designer skills at all and your web pages look ugly, you use [Twitter Bootstrap](http://twitter.github.com/bootstrap/) ;o)
### Silk Icons
I use [Silk Icons](http://www.famfamfam.com/lab/icons/silk/) which are in Creative Commons
### Arquillian
[Arquillian](http://arquillian.org/) for the integration tests.
## Bugs & Workaround
## Licensing
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.