JAX-WS Coffee Supplier Service
The Coffee Break servers are clients of the JAX-WS coffee supplier service. The service code consists of the service implementation class, and several JavaBeans components that are used for method parameters and return types. The JavaBeans components are:
AddressBean
: shipping information for customerConfirmationBean
: order id and ship dateCustomerBean
: customer contact informationLineItemBean
: order itemOrderBean
: order id, customer, address, list of line items, total pricePriceItemBean
: price list entry (coffee name and wholesale price)PriceListBean
: price listThese JavaBeans components are propogated to the clients by using the
wsimport
tool.Service Implementation
The
Supplier
class implements theplaceOrder
andgetPriceList
methods. So that you can focus on the code related to JAX-WS, these methods are short and simplistic. In a real world application, these methods would access databases and would interact with other services, such as shipping, accounting, and inventory.The
placeOrder
method accepts as input a coffee order and returns a confirmation for the order. To keep things simple, theplaceOrder
method confirms every order and sets the ship date in the confirmation to the next day. The source code for theplaceOrder
method follows:public ConfirmationBean placeOrder(OrderBean order) { Date tomorrow = DateHelper.addDays(new Date(), 1); ConfirmationBean confirmation = new ConfirmationBean(order.getId(), DateHelper.dateToCalendar(tomorrow)); return confirmation; }The
getPriceList
method returns aPriceListBean
object, which lists the name and price of each type of coffee that can be ordered from this service. ThegetPriceList
method creates thePriceListBean
object by invoking a private method namedloadPrices
. In a production application, theloadPrices
method would fetch the prices from a database. However, ourloadPrices
method takes a shortcut by getting the prices from theSupplierPrices.properties
file. Here are thegetPriceList
andloadPrices
methods:public PriceListBean getPriceList() { PriceListBean priceList = loadPrices(); return priceList; } private PriceListBean loadPrices() { String propsName = "com.sun.cb.ws.server.SupplierPrices"; Date today = new Date(); Date endDate = DateHelper.addDays(today, 30); PriceItemBean[] priceItems = PriceLoader.loadItems(propsName); PriceListBean priceList = new PriceListBean(DateHelper.dateToCalendar(today), DateHelper.dateToCalendar(endDate), priceItems); return priceList; }