CMDBuild安装及webservice接口的获取

原创 2015年07月07日 17:05:29

最近项目组之前一直使用的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

安装步骤

  1. 安装jdktomcat(不再赘述)
  2. 安装PostgreSQL并配置
  3. 将下载好的cmdbuild-2.3.2.zip解压,文件目录如下图所示,
    cmdbuild文件目录
  4. 将其中的cmdbuild-2.3.2.war拷贝到Tomcat的webapps文件夹下,将其重命名为cmdbuild.war
  5. cmdbuild-2.3.2\extras\tomcat-libs\6.0下的postgresql-9.1-901.jdbc4.jar拷贝到Tomcat的lib文件夹下
  6. 启动tomcat,开始解析cmdbuild.war
  7. tomcat启动成功后,在地址栏输入localhost:8080/cmdbuild,可以进入如下界面:
    cmdbuild配置1
  8. 点击next,进入下一个界面
    cmdbuild配置1
  9. 按照如图所示进行配置,可以测试下数据库连接是否可以。如果没有错误出现,那么就可以进入到主界面了,炫酷!
    CMDBuild主界面

至此,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就可以实现:

wsimport http://127.0.0.1/TicketMobile/services/Cococ?wsdl  -keep -p com.llg.ws2 -s g:/ws

参数说明

于是,就可以将wsdl的接口变成java的,于是按照文档上的例子兴高采烈的开始敲代码。。。

官方文档上只有这么一点代码:

// 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.
ConfigurationContext configContext = ConfigurationContextFactory
        .createConfigurationContextFromFileSystem("/path/to/repository",//
                                                    null);//

// 2. Instance the WebservicesStub class moving in it the ConfigurationContext just created     
WebServicesStub stub = new WebServicesStub(configContext);

// 3.Set the authentication credentials
StAXOMBuilder builder = new StAXOMBuilder(
                            "/path/to/repository/conf/policy.xml");//
Options options = stub._getServiceClient().getOptions();
options.setUserName("username");
options.setPassword("password");
options.setProperty(//
        RampartMessageData.KEY_RAMPART_POLICY,//
        PolicyEngine.getPolicy(builder.getDocumentElement()//
            ));

// 4.Instance a GetCardList object and call the server
GetCardList list = new GetCardList();
list.setClassName("Computer");
GetCardListResponse response = stub.getCardList(list);
Card[] card = response.get_return();

// 5.At this point you can iterate on the array card content and extract the most interesting values. For example, if you want to recover the description of every Computer, the following method will be enough:
System.out.println(card[i].getDescription());

至此,官方代码提供完毕,可是WebServicesStub哪来的?其他的类还可以通过Google找到相关的jar包,可是WebServicesStub哪来的?

WebServicesStub的来头

最后,网上各种找啊,凡是相关的资料都试了,终于在stub调用WebService这里找到了管用的方法。

使用Axis2提供的wsdl2java.bat命令可以根据WSDL文件产生调用WebService的代码

具体操作,下载安装Axis2不说了。

进入到%AXIS2_HOME%\bin\,执行

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开发文档,因此若要真正的使用起来尚有一定的困难,暂时还不能进行代码级别的测试。

版权声明:本文为博主原创文章,未经博主允许不得转载。

centos7+tomcat+cmdbuild安装部署

centos7+tomcat+cmdbuild安装部署 CMDBuild 是一个可配置的 Web 应用,用来对数据库进行建模和管理 (CMDB 表示 “Configuration and Mana...
  • xmly_1226
  • xmly_1226
  • 2017年08月11日 20:53
  • 1170

CMDBuild安装

近日来,老板要在内部部署一套IT资产管理系统,要笔者去调研一下,测试了GLPI、OCSNG(没记错吧)和CMDBuild之后,发现还是CMDBuild的功能较为强大,虽然暂时不具备SNMP之类的工具,...
  • kailan818
  • kailan818
  • 2014年07月17日 18:16
  • 11519

CMDBuild安装及webservice接口的获取

最近项目组之前一直使用的OneCMDB出现了问题,在增删改数据时异常的慢,于是考虑是否可以优化OneCMDB,由于本人水平有限,对OneCMDB进行代码级别的优化暂时还有点难度。于是就对现有的其他开源...
  • bruce_6
  • bruce_6
  • 2015年07月07日 17:05
  • 3979

Python与CMDBuild之CMDBuild基本配置-Class

刚接手CMDBuild这个项目的时候上网搜索关于CMDBuild的中文资料,发现其资料少的可怜,如果笔者没有记错的话,其中经过我筛选发现安装指南有2篇、Python开发的帖子也有2篇。 安装的2篇文...
  • u012156982
  • u012156982
  • 2015年01月15日 14:27
  • 2528

CentOS7安装CMDBuild

CentOS7安装CMDBuild 实验背景、不想通过execl统计物理资源、资产。 实验环境 CentOS Linux release 7.4.1708 (Core) PostgreSQL 9....
  • wh211212
  • wh211212
  • 2018年01月03日 13:58
  • 141

cmdbuild安装配置

安装环境: jdk1.7.0_57,tomcat6,cmdbuild-2.3.0 1,下载tomcat6和cmdbuild2.3.0,(只能用tomcat6,其他的版本测试都会有问题) 2,复制c...
  • hbhuanjing
  • hbhuanjing
  • 2016年08月23日 16:52
  • 2223

Python与CMDBuild之API通过Token验证

安装配置不是什么难事相信同学们都很容易就完成了,这时最开始遇到的问题就是怎么通过CMDBuild的身份认证但是那两篇关于python对CMDBuild做二次开发的文章,,笔者去运行其提供的代码时与笔者...
  • u012156982
  • u012156982
  • 2015年01月23日 17:04
  • 1189

cmdbuild webservice官方说明文档

  • 2014年09月10日 10:28
  • 502KB
  • 下载

OCS Inventory,我又来了

之前见过这款软件应该是前年吧,Martin Liu的博客上看到的,相关的内容很多。 话说当时也是因为CMDB不太好用,大家都嚷着要自动化的工具(一群懒人),又不愿意动动手,所以这活最终还是落到我头上来...
  • GoldenDragon
  • GoldenDragon
  • 2013年07月26日 18:50
  • 1077

自动化运维的基石:CMDB

自动化运维的基石:CMDB  原创 2016-03-29 蒋君伟 广通软件敏捷运维 今天,为大家重点推介3月25-26日深圳全球运维大会上,自动化运维专场优云产品总监蒋君伟同学演讲的P...
  • winsonyuan
  • winsonyuan
  • 2016年04月08日 10:10
  • 1224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CMDBuild安装及webservice接口的获取
举报原因:
原因补充:

(最多只允许输入30个字)