近期项目组之前一直使用的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. Flask框架 之路由

    一.视图函数路由规则 from flask import Flask, redirect, url_for # 创建flask应用对象 # __name__ 代表当前模块名称 # flask以当前目录 ...

  2. Java基础(二)--this关键字及初始化

    构造器: 构造器的名称必须和类名完全相同,所以一般方法的"首字母小写"命名规则并不适合构造器 默认构造器: 也叫无参构造器,作用就是创建一个默认对象,如果你不是手写出来,编译器默认 ...

  3. c# Dictionary 扩展方法

    主要用于接口请求,数据转换 #region Dictionary 扩展方法 public static string getString(this Dictionary<string, stri ...

  4. oracle中的冷热备份

    oracle有四种备份方法:冷备份.热备份.RMAN备份.逻辑备份. 其中冷备份和热备份都是用操作系统命令对oracle文件直接进行拷贝, 不同的是冷备份是把数据库关闭后再备份,备份过程中也要关闭数据 ...

  5. [USACO] 奶牛零食 Treats for the Cows

    题目描述 约翰经常给产奶量高的奶牛发特殊津贴,于是很快奶牛们拥有了大笔不知该怎么花的钱.为此,约翰购置了N(1≤N≤2000)份美味的零食来卖给奶牛们.每天约翰售出一份零食.当然约翰希望这些零食全部售 ...

  6. [NOIP2017普及]跳房子

    我太弱了... 单调队列优化DP+二分答案. #include <algorithm> #include <iostream> #include <cstdlib> ...

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

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

  8. oc门的设计思路

    oc门,又称集电极开路门,Open Collector. mc1413bd就是这样一款oc门,在网上听说又叫uln2003a. 1.其符号是: 2.内部的组成就是NPN型的达林顿管 用非门的意思,我的 ...

  9. slf4j+log4j2的配置

    昨天自己测试了一下slf4j+log4j2的配置,可以正常使用,虽然配置十分简单,但好记性不如烂笔头,想想还是记录下来吧. 运行的环境:jdk1.7.tomcat7.Maven的web项目 1.在新建 ...

  10. linux下使用tomcat下载中文文件报404not find

    首先,大神指路:http://bbs.csdn.net/topics/391065011?page=1 相关的一些命令: 查看当前系统字符编码:env locale 查看系统支持的字符编码:local ...