近期项目组之前一直使用的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解压,文件文件夹例如以下图所看到的,

  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,能够进入例如以下界面:

  8. 点击next,进入下一个界面

  9. 依照如图所看到的进行配置,能够測试下数据库连接能否够。

    假设没有错误出现。那么就能够进入到主界面了。炫酷!

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

CMDBuild安装及webservice接口的获取的更多相关文章

  1. Https Webservice接口的免证书调用

    目录 前言 思路 方案 Axis调用 HttpClient调用 参考链接 前言 在调用https协议的Webservice接口时,如果没有做证书验证,一般会报javax.net.ssl.SSLHand ...

  2. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  3. Spring AOP 自定义注解获取http接口及WebService接口入参和出参

    注解方法实现过程中可以采用如下获取方式:—以下为例  HttpServletRequest request = ((ServletRequestAttributes) RequestContextHo ...

  4. 使用soapui调用webservice接口

    soapui是专门模拟调用webservice接口的工具,下面介绍下怎么使用: 1.下载soapui并安装: 2.以免费天气获取接口为例:http://www.webservicex.net/glob ...

  5. jmeter-测试webservice接口

    测试webservice接口(soap类型接口) 一.webservice协议的本质 一个经过封装的post类型的HTTP请求 Web service一般就是用SOAP协议通过HTTP来调用它,其实他 ...

  6. C++webservice接口调用

    一.WebService例子 1.准备要调用的webservice接口的wsdl地址,比如网上的查询天气接口:http://ws.webxml.com.cn/WebServices/WeatherWS ...

  7. Kettle通过Http post请求webservice接口以及结果解析处理

    kettle中有两种方式请求webservice服务,一个是Web服务查询,但是这个有缺陷,无法处理复杂的需求,遇到这种情况就需要用Http post来处理了. 网上也有很多关于Http post请求 ...

  8. php中调用WebService接口

    一.背景 调用第三方短信提供商的WebService接口. 二.介绍 1.WebService三要素: SOAP(Simple Object Access Protocol) 用来描述传递信息的格式 ...

  9. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

随机推荐

  1. [JavaScript] Uncaught TypeError: Method get Set.prototype.size called on incompatible receiver

    在对Set进行方法扩展的时候,无法覆盖size属性 情景:定义一个SingletonSet,继承自Set,size只能为1,并且不能add和remove //首先是extend函数 var exten ...

  2. linux 拆分文件

    split [OPTION]... [INPUT [PREFIX]] :根据行或者大小拆分文件 split file_name :默认把文件file_name拆分成xaa,xab,xac,...... ...

  3. [转]最值得拥有的免费Bootstrap后台管理模板

    在PHP开发项目中,后台管理因为面向群体相对比较固定,大部分以实现业务逻辑和功能.使用Bootstrap后台模板可以让后端开发很轻松的就展现给客户一个响应式的后台,节约前端开发的时间.下面PHP程序员 ...

  4. MFC_1.3 控件子类化 消息反射

    控件子类化 如果想要在默认的控件类中添加一些功能,就需要子类化一个控件类 在类内可以响应控件所有的消息,并且可以添加自己的函数和数据 通过类向导子类化控件的步骤 打开类向导,创建一个 MFC 类,不要 ...

  5. NGS数据格式介绍

    一般情况下,从Illumina平台上得到的测序,其数据格式是Fastq格式,可以称之为原始数据(Raw data).事实上直接的下机数据是显微拍摄得到的图像信息.但是一般都会用Bcl2Fastq软件将 ...

  6. python利用requests统计1个接口的响应时间

    参照 https://www.cnblogs.com/yoyoketang/p/8035428.html requests统计接口的响应时间有2种方式 r.elapsed.total_seconds( ...

  7. struts2源码下载链接

    http://blog.csdn.net/qq_qun_247286682/article/details/6975298

  8. [Python数据结构] 使用 Circular List实现Queue

    [Python数据结构] 使用 Circular List实现Queue 1. Queue队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表.在具体 ...

  9. [Python数据结构] 使用List实现Stack

    [Python数据结构] 使用List实现Stack 1. Stack 堆栈(Stack)又称为栈或堆叠,是计算机科学中一种特殊的串列形式的抽象数据类型(ADT),其特殊之处在于只能允许在阵列的一端进 ...

  10. docke容器使用

    Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. runoob@runoob:~# do ...