使用WSO2自动生成DataService

       由于工作需要,最近研究起一个开源的SOA解决方案wso2。然后发现这个东西各种强大,目前有接触的就是它的两个产品,一个是Application Server,即应用服务,另外一个是ESB(Enterprise Service Bus)企业服务总线。目前对于这个产品也只是简单应用,用Application Server来布WebService,用ESB来做代理、整合归集不同的系统服务。因为这个产品目前网上资料非常少,只能看官方文档,所以就想分享个学习笔记,同时有不对或者理解不清楚的地方也希望能有人来指点。

       这里我就先简单的介绍一下wso2这个产品,前面说了,wso2是一套开源的SOA解决方案,关于SOA,我就简单说下,SOA是service-oriented architecture的简称,即面向服务的体系结构,更多关于SOA的介绍就请大家自行百度、google了。这篇主要是讲wso2旗下的产品Application Server。WSO2的应用服务器汇集了最好的开源技术的Web应用程序(如Apache TomcatWeb服务(如Apache Axis2RESTful服务(如JAX-RSWSO2的开源管理,监控,集群和日志记录的扩展。可以轻松地共享业务逻辑,数据和整个IT生态系统的过程。 

       这篇要讲的就是如何使用wso2的应用服务器通过已有的数据库表来自动生成数据库的web service而不需要编写任何代码。

       首先要先下载应用管理器的包,下载地址:http://wso2.com/products/application-server/   目前最新版本为5.2.1,我这里使用的是5.1.0。下载完直接解压,然后找到bin文件夹,启动服务(wso2Service.bat)

使用WSO2自动生成DataService_第1张图片

如果端口没有冲突的话,你会看到这个界面

使用WSO2自动生成DataService_第2张图片

红框圈起来的地方就是我们的访问点。默认端口是9443,如果端口冲突了,可以在安装目录下\repository\conf\carbon.xml里面更改,不过它采取的是一种偏移方式,默认9443,在Ports里面有一个Offset标签,里面作为偏移量,如改2端口则变成9445

使用WSO2自动生成DataService_第3张图片

现在进入管理页面,默认账号跟密码都是admin。成功登陆后会看到一些列信息。

使用WSO2自动生成DataService_第4张图片

接下来我们要直接生成DataService了,只需要链接你的数据库,应用服务器就可以直接根据表自动生成数据库服务,之后只要根据wsdl生成客户端就可以直接调用,是不是很方便。wso2默认带的是h2的数据库,我这边使用的是oracle11g,接下来将说明如何创建数据源。

首先我们需要将数据库驱动包放到wso2的lib目录,..\repository\components\lib。重启服务,之后会自动在..\repository\components\dropins目录下也生成一份

使用WSO2自动生成DataService_第5张图片

可以将jar包添加到服务的公共库里,这样所建的所有服务都将会依赖这个包(之所以有两个驱动是因为以前上传过一个,不知为何这个现在一直删不掉)

使用WSO2自动生成DataService_第6张图片

如下图,在左边选择configure-->data sources-->add data source


使用WSO2自动生成DataService_第7张图片

然后填入基本的信息,如本人的数据库,点击Test Connection。成功的话会有测试成功的提示

使用WSO2自动生成DataService_第8张图片

数据源这样就配好了,接下来我们要创建一个Data Service,如下图所示,services-->add-->data service-->generate,选择刚才创建的数据源,为了方便记忆,在数据库名那边填入所连接的数据库。点击next。

使用WSO2自动生成DataService_第9张图片

选择一个Schema

使用WSO2自动生成DataService_第10张图片

点击下一步后发现在里面的表都列出来了,之后我们选择需要创建data service的表,点击下一步

使用WSO2自动生成DataService_第11张图片

这边有单服务跟多服务两种,选择单服务的话会把所有表生成的方法在一个service里发布,多服务就是每个表对应一个service。单服务的话需要自己填写服务名,多服务则默认以表名加下划线加DataService来命名。看需要自己选择。命名空间也看需要自己填。

使用WSO2自动生成DataService_第12张图片

点击next,data service就生成完毕

使用WSO2自动生成DataService_第13张图片

刷新几次页面,生成的data service就出现了。

使用WSO2自动生成DataService_第14张图片
点击try this service,可以直接在页面上进行测试,我们发现已经生成了好几个方法,选择通过主键查找,填入主键,点击send,查询的结果直接在右边显示。这里要特别注意,delete操作是极具危险的,这边不会有提示就会直接删除记录,所以若不需要的话要将其去掉。当然,对于你自己需要的方法,可以修改一些操作成为自己的方法或者直接创建。后面再具体介绍如何创建跟删除不要的操作
使用WSO2自动生成DataService_第15张图片
接下来先讲如何删除一个操作,首先回到主页面,点击进入我们创建的data service,找到下面的edit data service(Wizard),这边有两种方式,一种直接修改xml文件,一种通过界面来删除,通过xml文件删除是比较快的办法,不过这边我就简单的讲通过界面来删除,喜欢折腾的可以看看xml自行修改,也是很简单的。
使用WSO2自动生成DataService_第16张图片
进入后直接next再next,看到queries界面,先不急着删除,因为你也删不掉,在wso2里面,它有一个operations(操作),你必须先把操作删除了,才能删除它的queries,把delete操作删掉
使用WSO2自动生成DataService_第17张图片
之后按back返回上一步,把queries的delete删掉。这样就把删除操作的方法给删除了。这两步做完要记得点击finish,不然是不会生效的。
接下来就是要创建自己的操作了,如果比较懒,也可以直接修改其他操作成为自己想要的操作。在queries界面上点击Add new query
使用WSO2自动生成DataService_第18张图片
query ID要按照它的格式写,这样有个好处,就是可以直接生成映射关系,我这边使用select_with_id_sex_PERSON_query,即我要用主键跟性别来查询其他信息。Data Source选择default,sql写下SELECT NAME, AGE, ADDRESS FROM SYSTEM.PERSON WHERE PERSON_ID=? AND SEX=?。之后点击Generate input Mappings,它会自动生成参数的映射,再点击Generate Reponse,会自动生成所要查询列的映射关系
使用WSO2自动生成DataService_第19张图片
然后把参数值的映射名称改掉,有一点注意,在修改的时候,里面有一个Ordinal字段,这个要填写该参数是第几个参数,如PERSON_ID里面的Ordinal填1,SEX里面的填2
使用WSO2自动生成DataService_第20张图片
然后要把这两个也改了,改什么就根据生成的那个填吧
使用WSO2自动生成DataService_第21张图片
保存后点击下一步,在operation里面把名称填好,选择刚才创建的查询,会自动生成参数列表。点击保存。之后点击finish完成添加操作的配置
使用WSO2自动生成DataService_第22张图片
然后像刚才一样,直接在try this service上进行测试,输入参数,得到查询出来的结果。
使用WSO2自动生成DataService_第23张图片
操作到这里就全部完成了,接下来只需要点开它的wsdl地址,根据wsdl生成客户端就可以直接调用了,(这里就不介绍这部分了,有web service开发经验的应该都懂了,Endpoints点开创建的data Service就可以看到。)用这个进行开发可以省下写dao的操作,直接生成webservice,是不是很方便。今天就先写到这,下次再把一些其他的补上,如部署我们自己开发的web service、用ESB代理操作。

你可能感兴趣的:(使用WSO2自动生成DataService)