使用Eclipse构建Tuscany实例(2)
来源:互联网 发布:海南海口seo 编辑:程序博客网 时间:2024/05/01 19:00
前言:
本文接上一篇:使用Eclipse构建Tuscany实例(1),请阅读之前参考。
商铺服务
在这一步中,你将创建面向用户服务,他可以通过Web浏览器访问,并提供与你创建的其他服务相交互的接口。
选中"ufservices" 包文件夹,右键点击,在右键菜单中选择New -> File 。在新建文件对话框中输入"store.html"作为文件名,然后点Finish按钮关闭对话框。
文本编辑器将打开一个新的文件编辑窗口,使用下面Html代码覆盖原有代码。
<head><title>Store</title><script type="text/javascript" src="store.js"></script><script language="JavaScript">//@Referencevar catalog = new tuscany.sca.Reference("catalog");//@Referencevar shoppingCart = new tuscany.sca.Reference("shoppingCart");//@Referencevar shoppingTotal = new tuscany.sca.Reference("shoppingTotal");var catalogItems;function catalog_getResponse(items) {var catalog = "";for (var i=0; i<items.length; i++) {var item = items[i].name + ' - ' + items[i].price;catalog += '<input name="items" type="checkbox" value="' + item + '">' + item + ' <br>';}document.getElementById('catalog').innerHTML=catalog;catalogItems = items;}function shoppingCart_getResponse(feed) {if (feed != null) {var entries = feed.getElementsByTagName("entry"); var list = "";for (var i=0; i<entries.length; i++) {var content = entries[i].getElementsByTagName("content")[0];var name = content.getElementsByTagName("name")[0].firstChild.nodeValue;var price = content.getElementsByTagName("price")[0].firstChild.nodeValue;list += name + ' - ' + price + ' <br>';}document.getElementById("shoppingCart").innerHTML = list;if (entries.length != 0) {shoppingTotal.getTotal(shoppingTotal_getTotalResponse);}}}function shoppingTotal_getTotalResponse(total) {document.getElementById('total').innerHTML = total;}function shoppingCart_postResponse(entry) {shoppingCart.get("", shoppingCart_getResponse);}function addToCart() {var items = document.catalogForm.items;var j = 0;for (var i=0; i<items.length; i++)if (items[i].checked) {var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>item</title><content type="text/xml">' + '<Item xmlns="http://services/">' + '<name xmlns="">' + catalogItems[i].name + '</name>' + '<price xmlns="">' + catalogItems[i].price + '</price>' + '</Item>' + '</content></entry>';shoppingCart.post(entry, shoppingCart_postResponse);items[i].checked = false;}}function checkoutCart() {document.getElementById('store').innerHTML='<h2>' +'Thanks for Shopping With Us!</h2>'+'<h2>Your Order</h2>'+'<form name="orderForm">'+document.getElementById('shoppingCart').innerHTML+'<br>'+document.getElementById('total').innerHTML+'<br>'+'<br>'+'<input type="submit" value="Continue Shopping">'+ '</form>';shoppingCart.del("", null);}function deleteCart() {shoppingCart.del("", null);document.getElementById('shoppingCart').innerHTML = "";document.getElementById('total').innerHTML = "";}function init() {catalog.get(catalog_getResponse);shoppingCart.get("", shoppingCart_getResponse);}</script></head><body onload="init()"><h1>Store</h1> <div id="store"> <h2>Catalog</h2> <form name="catalogForm"><div id="catalog" ></div><br><input type="button" onClick="addToCart()" value="Add to Cart"> </form> <br> <h2>Your Shopping Cart</h2> <form name="shoppingCartForm"><div id="shoppingCart"></div><br><div id="total"></div><br><input type="button" onClick="checkoutCart()" value="Checkout"> <input type="button" onClick="deleteCart()" value="Empty"> <a href="../ShoppingCart/Cart/">(feed)</a></form> </div></body></html>
完成这些步骤后,"store"工程将看起来如下图所示。
组织服务
既然你已经实现了所有必须的服务,那么你可以把他们组织在一起,提供商铺综合服务。结构配置存储在一个后缀为.composite的文件中。
选中"store"工程的"src"文件夹,右键点击,在右键菜单中选择New-> File,在新建文件对话框中输入”store.composite”作为文件名,然后点击Finish 按钮关闭对话框。
文本编辑器将打开一个新的文件编辑窗口来创建结构配置文件,使用下面内容覆盖原有代码。
<?xml version="1.0" encoding="UTF-8"?><composite xmlns="http://www.osoa.org/xmlns/sca/1.0"xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"xmlns:s="http://store" targetNamespace="http://store" name="store"><component name="store"><t:implementation.widget location="ufservices/store.html" /><service name="Widget"><t:binding.http uri="http://localhost:8080/store" /></service><reference name="catalog" target="Catalog"><t:binding.jsonrpc /></reference><reference name="shoppingCart" target="ShoppingCart/Cart"><t:binding.atom /></reference><reference name="shoppingTotal" target="ShoppingCart/Total"><t:binding.jsonrpc /></reference></component><component name="Catalog"><implementation.java class="services.CatalogImpl" /><property name="currencyCode">USD</property><service name="Catalog"><t:binding.jsonrpc uri="http://localhost:8080/Catalog"/></service><reference name="currencyConverter" target="CurrencyConverter" /></component><component name="ShoppingCart"><implementation.java class="services.ShoppingCartImpl" /><service name="Cart"><t:binding.atom uri="http://localhost:8080/ShoppingCart/Cart" /></service><service name="Total"><t:binding.jsonrpc uri="http://localhost:8080/Total"/></service></component><component name="CurrencyConverter"><implementation.java class="services.CurrencyConverterImpl" /></component></composite>
完成上述步骤后,工程”store”应该看起来如下图所示。
启动服务
在这一步中,你将创建Tuscany运行你建立的综合商铺服务的启动代码。
选中"store"工程,点击工具条上的新建Java源码包按钮,启动新建包文件对话框。使用此对话框创建一个新的名为"launch"的包文件夹。
选中”launch”包,点击新建Java类按钮。在对话框中输入”Launch”作为类名,在复选框中选择创建main方法,然后点击Finish 按钮,结束对话框。
Java编辑器将打开一个新的Java类编辑窗口,使用下面代码覆盖原有代码。
package launch;import org.apache.tuscany.sca.host.embedded.SCADomain;public class Launch { public static void main(String[] args) throws Exception { System.out.println("Starting ..."); SCADomain scaDomain = SCADomain.newInstance("store.composite"); System.out.println("store.composite ready for big business !!!"); System.in.read(); System.out.println("Stopping ..."); scaDomain.close(); System.out.println(); }}
恭喜你完成了你的第一个综合服务程序,现在,是时候让它运行了。
使用服务
在这一步,你将运行并使用你创建的商铺综合服务程序。
首先选中"store"工程的"launch"包中的"Launch"类,右键点击,在右键菜单中选中Run As-> Java application ,Tuscany运行环境将启动并加载商铺综合服务程序到它的运行域中。
Eclipse控制台将输出如下信息:
然后登陆你的浏览器,输入如下网址:
http://localhost:8080/store/store.html
打开综合服务程序的用户交互服务界面。
既然购物车服务是结合ATOM协议实现,你也可以通过点击样式切换图标来使用ATOM形式查看销售内容,你得到的ATOM样式:
使用浏览器回退按钮,重新回到商铺页面。
然后,你可以检查并完成你的订单。
恭喜你,你已经使用Tuscany SCA技术实现了一个简单的,灵活的,可重复使用的商铺程序。
你可以从目录中选中数个商品,并将它们加入购物车。
提示: 当你第一次添加商品的时候,系统会要求你输入用户名和密码。用户名和密码都是"admin"
- 使用Eclipse构建Tuscany实例(2)
- 使用Eclipse构建Tuscany实例(1)
- 使用Eclipse构建Tuscany实例(1)
- 使用 Eclipse SOA Tools Platform 插件和 Apache Tuscany
- Eclipse 开发Tuscany应用
- 实例研究(Tuscany Luxury Resorts)--Css学习笔记(十一)
- 解决Eclipse+Tuscany[ASM_6001]问题
- 感受Tuscany发展脉搏,洞察Tuscany的最新变化,与Tuscany亲密接触,本地构建Tuscany步骤
- SCA导航2-用Tuscany构建你的第一个web service
- 使用Eclipse构建Maven项目(一)
- tuscany
- tuscany sameples和demos导入eclipse
- mahout+Eclipse,使用 Taste 构建推荐引擎实例 – 电影推荐引擎
- 使用eclipse构建war包
- Android 使用Eclipse 构建K9
- 使用Eclipse JDT 构建AST
- 使用Eclipse构建GeoTools项目
- 使用Eclipse 构建Maven项目
- 记录成长
- 对生命的感悟
- b、c
- 2009-9-3
- opencms 分页 问题 懂的进来看一下
- 使用Eclipse构建Tuscany实例(2)
- javascript基础简介
- inner join on, left join on, right join on详细使用方法
- 重新上路
- 同步两个数据库的示例
- 指向老域名的反链丢失问题
- 我最近写的一首诗
- 解决数据库不能更新或数据库或对象为只读
- linux下 subversion 的单独安装和配置