最近项目组之前一直使用的OneCMDB出现了问题,在增删改数据时异常的慢,于是考虑是否可以优化OneCMDB,由于本人水平有限,对OneCMDB进行代码级别的优化暂时还有点难度。于是就对现有的其他开源CMDB进行调研,首先是CMDBuild(官方网站)。
对于CMDBuild,先上结论。
优缺点
优点
- 完全自主的系统配置
- 界面炫酷美观,AJAX让人操作十分便捷
- 数据格式自由定制(在GLPI中,资产的数据格式都已经定义好了,用户很难修改)
- 有专门的团队在进行不断的维护,目前最新的版本是2015年6月发布的2.3.2
- 内置工作流引擎,可以创建工作流
- 报表系统:支持JasperReports、Alfresco
- 提供基于SOAP和REST的webservice接口
缺点
- 网上资料少,极其少!差不多只有安装的介绍!
- 官方提供的代码示例几乎没有,这让开发者自己摸索么?还是我没找到?
- 提供的webservice接口是wsdl和wadl形式的,不能给个jar包什么的吗?
安装
参考:
http://www.cnblogs.com/supakito/p/cmdbuild_install.html
http://20988902.blog.51cto.com/805922/1541289
安装要求
- 硬件:
- server-class computer (modern architecture)
- 4GB of RAM
- 80 GB of available hard disk space
- 软件:
- 任何支持以下应用的OS (推荐linux)
- PostgreSQL 9.0 or higher (PostgreSQL 9.3 recommended)
- Apache Tomcat 6.0 or higher(好像7.0不支持)
- JDK 1.6
安装步骤
- 安装
jdk
,tomcat
(不再赘述) - 安装
PostgreSQL
并配置 - 将下载好的
cmdbuild-2.3.2.zip
解压,文件目录如下图所示,
- 将其中的
cmdbuild-2.3.2.war
拷贝到Tomcat的webapps文件夹下,将其重命名为cmdbuild.war
- 将
cmdbuild-2.3.2\extras\tomcat-libs\6.0
下的postgresql-9.1-901.jdbc4.jar
拷贝到Tomcat的lib文件夹下 - 启动tomcat,开始解析
cmdbuild.war
- tomcat启动成功后,在地址栏输入
localhost:8080/cmdbuild
,可以进入如下界面:
- 点击next,进入下一个界面
- 按照如图所示进行配置,可以测试下数据库连接是否可以。如果没有错误出现,那么就可以进入到主界面了,炫酷!
至此,CMDBuild的安装就完成了。
webservice接口的获取
在找CMDBuild的接口时可是费了很大劲,最后在一个角落里找到了一点痕迹,http://hostname:port/cmdbuild/services/rest/v1
,于是按照这个地址拼接了自己的获取地址:http://localhost:8080/cmdbuild/services
,就这样终于找到了所谓的webservice接口。但其中SOAP是WSDL形式的,REST是WADL形式的。于是乎,又想着如何将wsdl
的接口变成java
的。
WSDL2Java
利用jdk自带的工具wsimport.exe
就可以实现:
1 | wsimport http://127.0.0.1/TicketMobile/services/Cococ?wsdl -keep -p com.llg.ws2 -s g:/ws |
参数说明
- wsimport 这个是必须的 该工具的名称
- http://127.0.0.1/TicketMobile/services/Cococ?wsdl wsdl文件链接
- -keep 是否生成源文件
- -p com.llg.ws2 生成后的java包名
- -s g:/ws 生成后放哪个目录
于是,就可以将wsdl
的接口变成java
的,于是按照文档上的例子兴高采烈的开始敲代码。。。
官方文档上只有这么一点代码:
1 | // 1. Create an instance in the ConfigurationContext class and indicate in it where the repository directory is. In the repository directory there are 2 directories: the modules directory which contains the rampart.mar file, and the conf directory which contains the file to define the safety policy which should be adopted. |
至此,官方代码提供完毕,可是WebServicesStub
哪来的?其他的类还可以通过Google找到相关的jar包,可是WebServicesStub
哪来的?
WebServicesStub的来头
最后,网上各种找啊,凡是相关的资料都试了,终于在stub调用WebService这里找到了管用的方法。
使用Axis2提供的wsdl2java.bat命令可以根据WSDL文件产生调用WebService的代码
具体操作,下载安装Axis2不说了。
进入到%AXIS2_HOME%\bin\
,执行1
wsdl2java -uri http://localhost:8080/cmdbuild/services/soap/Webservices?wsdl -p client -s -o stub
其中-url
参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。-p
参数指定了生成的Java类的包名,-o
参数指定了生成的一系列文件保存的根目录。
在执行完上面的命令后,读者就会发现在当前目录下多了个stub 目录,在stub/src/client
目录可以找到一个$Proxy146ServiceStub.java
文件(奇怪的名字,因为提供的wsdl文件里就是这个名字),该文件复杂调用WebService,读者可以在程序中直接使用这个类。
最后的最后,终于可以用WebServicesStub
了,可是问题还是有,等我先折腾折腾吧。有什么问题可以直接留言一起讨论。
##总结
CMDBuild是由意大利的公司所开发的一款开源CMDB产品,网上相关的资料很少,中文的资料就更少,只有一些简单的安装介绍的文章,而关于其如何使用的资料几乎没有,只有官方所提供的手册。然而其只是给出了SOAP的WSDL格式的接口,并没有其他的jar文件,并且在其官方使用手册中只有简单的使用示例代码,对于其中一些类的来源也没有给出,没有一个完善的api开发文档,因此若要真正的使用起来尚有一定的困难,暂时还不能进行代码级别的测试。