这个星期接到一个新的任务:解决HQ(一个用JAVA开发的开源的运维监控平台)现在遇到的snmp升级到3.0后bug。公司用的HQ是4.6版本。于是,我把项目从gitlab上clone下来后,就开始了我的填坑之旅。坑了几天坑,到目前,正常情况,应该只有最后一个坑了,应该是关于tomcat运行环境的。闲话不多说,开始填坑之旅……

项目maven build坑:

  • maven版本必须为2.X版本的,3.X版本的maven,是绝对不会build成功的
  • 切换到2.2版本的maven后,直接运行mvn clean install也是编译失败,各种尝试后,最终能够编译的命令为:
    clean compile install -Dmaven.javadoc.skip=true -DCI-build -Dall-installers -Dmaven.test.skip=true -e

    解释一下吧,用maven.javadoc.skip=true是因为项目中的注释,有太多太多是不符合javadoc规范的,所以如果编译javadoc的话,会出现一推警告,然后编译失败。

  • 因为上面不编译javadoc的缘故,所以在项目agent中,要把对hq-pdk项目的javadoc的依赖给去掉,不然这个项目也会编译失败,我把改后的文件对比放上来:

  assembly.xml:

pom.xml

  • 我也不知道什么原因,在项目编译的时候,hq-pdk/src/main/java/org/hyperic/hq/product/validation/PluginXmlValidator.java 这个类总是会报异常,说代码异常出现在185行,是无法找到apache的log4j的一个类方法,如是我就把它给注释了,这块就不报异常了。

  • 可能跟我用的是IDEA或者我用的是公司内网的maven库有关吧,项目hq-rendit的pom文件中的maven-eclipse-plugin插件也会编译不通过,于是我也把它给注释了:

  • 在hq-server项目的pom文件,我加了一个plugin:
			<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>

OK,到现在为止,我遇到的maven的build坑基本差不多了。经过上面的改造后,我的hq项目能够install成功了。不过,install成功后,本地运行hq-web项目时,遇到的坑,深坑,比build过程要艰难的多,在这里我也记录一下,与君共勉。

hq-web 项目运行遇到的坑:

  • 首先是要在你的user.home目录下新建一个文件,路径为:{user.home}/.hq/build.properties。关于这个,官方的github上的BUILD.txt也有说明:
    	Add the following properties to ~/.hq/build.properties to connect the schema installer, hq-web app, or integration tests to your DB:
server.database-url=jdbc:mysql://localhost:3306/hqdb
server.database-driver=com.mysql.jdbc.Driver
server.database=MySQL
server.database-user=hq
server.database-password=hq
server.admin.username=hqadmin
server.admin.password=hqadmin
  • 运行web有两种方式,第一种是直接用tomcat-maven-plugin方式(tomcat:run)运行,这种方式运行我最后还是因为运行的tomcat内存不足而抛出内存溢出而失败。所以下面我介绍怎样用自己下载的tomcat运行web。

    • 首先从官方下载tomcat,并在IDEA中配置这个tomcat。这个就不用介绍了
    • 运行tomcat:deploy maven命令,这个将会在hq-web项目的target目录下生成一个hq-web-4.6的目录
    • 打开IDEA的项目配置界面,切换到Artifacts界面,新建一个hq-web项目的Web Application:Exploded。并将output directory目录指向上面生成的目录。如:
    • 将配置的hq-web:war exploded 配置到tomcat运行中
    • 在运行之前,还是要做几件事,起码我这里要做这些事情
      • 将mysql的驱动包(如果你用其他的驱动包应该也差不多),复制到tomcat服务器目录的lib目录下。因为我的tomcat (tomcat7)运行时,项目总会报找不到mysql驱动的异常,把驱动jar包拷贝到lib目录后就好了
      • 生成hyperic.keystore 证书的密码为:hyperic(记住,这个证书密码必须是这个,不然会出错),因为我是想进行项目的debug,所以我修改了源码中对证书路径的校验代码,让我可以指定证书的文件路径,通过jvm的运行参数:文件为:org.hyperic.hq.security.ServerKeystoreConfig:68

        •   

                      // ...make sure this exists
          if (!keystoreFile.exists()) {
          /**
          * 添加keystore path的自定义参数路径
          */
          String keystorePath = System.getProperty("yiji.hq.keystore.path");
          if(keystorePath != null){
          keystoreFile = new File(keystorePath);
          if(!keystoreFile.exists()){
          throw new ConfigPropertyException("The keystore path [" + keystoreFile.getPath() + "] does not exist. If setting a relative path, it must be relative to the server's hq-server directory.");
          }
          }
          // throw new ConfigPropertyException("The keystore path [" + keystoreFile.getPath() + "] does not exist. If setting a relative path, it must be relative to the server's hq-server directory.");
          }
        • 可以使用这个命令进行证书的生成
        • keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"
        • 配置tomcat的运行jvm参数,主要是指定证书路径以及tomcat的运行参数。都是必须的
        • -Dyiji.hq.keystore.path=/Users/QianL/Desktop/hyperic.keystore -server -Xms1024m -Xmx2048m -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m

我经过上面的折腾后,项目就可以通过IDEA进行tomcat debug运行调试了。

其实项目的坑远不止这些,不如如果使用tomcat插件运行的,还会报 sigar包找不到本地的动态库文件 和 找不到 hq-plugins 插件目录的异常,不过如果是通过我上面的那种运行方式,这两个以上我都没有遇到了。

后面有时间我也把官方目前最新的HQ5.8的build 成功的经验写上来。

												

记录hyperic-hq搭建开发环境遇到的坑的更多相关文章

  1. 物理引擎Havok教程(一)搭建开发环境

    物理引擎Havok教程(一)搭建开发环境 网上关于Havok的教程实在不多,并且Havok学习起来还是有一定难度的,所以这里写了一个系列教程,希望可以帮到读者.这是第一期. 一.Havok物理引擎简单 ...

  2. GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  3. maven实战(01)_搭建开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

  4. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  5. Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The ...

  6. java攻城师之路(Android篇)--搭建开发环境、拨打电话、发送短信、布局例子

    一.搭建开发环境 1.所需资源 JDK6以上 Eclipse3.6以上 SDK17, 2.3.3 ADT17 2.安装注意事项 不要使用中文路径 如果模拟器默认路径包含中文, 可以设置android_ ...

  7. python入门到精通[一]:搭建开发环境

    摘要:Python认识,及在windows和linux上安装环境,测试是否安装成功. 1.写在前面 参加工作也有5年多了,一直在做.net开发,近一年有做NodeJS开发.从一开始的不习惯,到逐步适应 ...

  8. Android开发系列之搭建开发环境

    接触Android好久了,记得09年刚在中国大陆有点苗头的时候,我就知道了google有个Android,它是智能机操作系统.后来在Android出1.5版本之后,我第一时间下载了eclipse开发工 ...

  9. python Day 1 - 搭建开发环境

    搭建开发环境 首先,确认系统安装的Python版本是2.7.x: $ python --version Python 2.7.5 然后,安装开发Web App需要的第三方库: 前端模板引擎jinja2 ...

随机推荐

  1. 关于oracle的certview

    前两天去参加oracle  11g  的两门考试(1Z0-051和1Z0-052),在家看了好几遍题库,我本来想着上午一门,下午考一门,但是我嫌着麻烦,就预约一下午考完两门.在考试完一门后,发现成绩不 ...

  2. 项目积累——Blockingqueue,ConcurrentLinkedQueue,Executors

    背景 通过做以下一个小的接口系统gate,了解一下mina和java并发包里的东西.A系统为javaweb项目,B为C语言项目,gate是本篇须要完毕的系统. 需求 1. A为集群系统,并发较高,会批 ...

  3. 如何在Github Pages搭建自己写的页面?

    教程一大堆,却没有几个能看懂的,问题一:90%的都在讲解如何搭建博客,和我想要将自己的网页部署到上面还是有点区别的.问题二:所有的教程都用到了Git,而我只知道Git是一个开源的分布式版本控制系统.完 ...

  4. Java 基本日期类使用(一)

    一.java.util.Date Date表示特定的瞬间,精确到毫秒,其子类有Date.Time.Timestap.默认情况下输出的Date对象为:Mon Oct 13 17:48:47 CST 20 ...

  5. Linux(CentOS6.4、CentOS6.3)下安装、配置PostgreSQL9.2

    首先,卸载机器上默认安装的PostgreSQL-8.3.x . [root@localhost ~]# rpm -qa | grep postgresql postgresql-jdbc--.el6. ...

  6. 多线程11_张孝祥 java5的线程锁技术

    本例子因为两个线程公用同线程中,使用同一个对象,实现了他们公用一把锁,实现了同一个方法的互斥. package locks; /** *会被打乱的效果 */ public class LockTest ...

  7. iOS-Core Text 入门

    NSTextView和Attribued String 第一次接触苹果系的富文本编程是在写Mac平台上的一个输入框的时候,输入框中的文字可以设置各种样式,并可以在文字中间插入图片,好在Mac的AppK ...

  8. 字节数转换为b,kb,mb,gb的方法 通用的手机流量计算方法

    //通用的手机流量计算方法 private String byteToMB(long size){ long kb = 1024; long mb = kb*1024; long gb = mb*10 ...

  9. Cocos2d-x 安装教程for mac(Xcode)

    cocos2d v3.x 版本出来后,从配置安装到创建项目都是命令行,下面简单说一下. 1. 下载地址    http://cn.cocos2d-x.org/download/ (虽然没有标明 for ...

  10. 学习iOS开发的前言

    一.什么是iOS 要想学习iOS开发,首先要搞清楚什么是iOS.iOS其实是一款操作系统,就像平时我们在电脑上用的XP.Win7,都是操作系统. 那什么是操作系统呢?操作系统其实是一种软件,是直接运行 ...