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
wsimporttool.Service Implementation
The
Supplierclass implements theplaceOrderandgetPriceListmethods. 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
placeOrdermethod accepts as input a coffee order and returns a confirmation for the order. To keep things simple, theplaceOrdermethod confirms every order and sets the ship date in the confirmation to the next day. The source code for theplaceOrdermethod 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
getPriceListmethod returns aPriceListBeanobject, which lists the name and price of each type of coffee that can be ordered from this service. ThegetPriceListmethod creates thePriceListBeanobject by invoking a private method namedloadPrices. In a production application, theloadPricesmethod would fetch the prices from a database. However, ourloadPricesmethod takes a shortcut by getting the prices from theSupplierPrices.propertiesfile. Here are thegetPriceListandloadPricesmethods: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; }