Tigase技术交流群 :310790965

一些小伙伴们经常问Tigase8 check下来的源代码怎么跑起来,因为我不能及时一 一回答,所以还是写个博文来演示一下吧,一般针对新手而言,老手的话,就跳过吧!

一、一般第一步是进入tigase的官网,现在官网代码已经转移到github上,选择你想要下载的模块 :

如果下图,现在8.0版本已经正式发布了。我们就使用它作为研究学习:

可以先通过git 克隆下来代码:

  1. git clone --branch tigase-server-8.0.0 https://github.com/tigase/tigase-server.git

  

等待下载成功,再使用IDEA打开代码:

一般下载代码后,第一步就是进行项目配置设置 Tigase8是依赖是JDK8及以上,看到右边第五步那,我们只要留下src/main/java 这源码项就可以,其它的可以点X移除,不需要的暂时不让它参与编译

现在展开代码看下,发现有些类可以由于没有导入 相应的包而出现报错,这时候可能有些同学开始慌了,别担心,如下图只是没有成功导入tigase-utils.jar 才会出现找不到类的错误,那我们就去看看原因,问题就是在maven ,那么我们不防先执行下maven install

在执行maven后如果没能成功下载包时,则不防在pom.xml里为它加入tigase私有仓库如下:

  1. <repositories>
  2. <repository>
  3. <id>tigase</id>
  4. <name>Tigase repository</name>
  5. <url>http://maven-repo.tigase.org/repository/release</url>
  6. </repository>
  7. <repository>
  8. <id>tigase-snapshot</id>
  9. <name>Tigase repository</name>
  10. <url>http://maven-repo.tigase.org/repository/snapshot</url>
  11. <snapshots>
  12. <enabled>true</enabled>
  13. </snapshots>
  14. </repository>
  1. <repository>
    <id>tigase</id>
    <url>http://maven-repo.tigase.org/repository/tigase</url>
    </repository>
  1. </repositories>

现在再点击 install 进行下载,如果还是下载不下来,再试试去进入你本地的maven库中,删除要下载的对应的版本文件目录

点击install 后,顺利地下载所有依赖的包下来了,如图所示,已经没有再报错了,OK,进展很顺利!

二 、不防先试着去运行下源代码吧:快速去找到XMPPServer 主入口类,运行,啊怎么会跑到Groovy的代码,别慌,我这里是故意演示下这样的错误,很多同学之前问到。不用想问题一定在配置里了,我们应该移除Groovy模块,不让他参与编译。

点开配置项,移除不需要的模块,如图X所示:

再次点击运行,wo ?配置文件我都没动怎么就运行成功了,别慌,这可是使用默认的配置项,都没有读取到数据库表信息,所以才会成功跑起来了

从提示里可以看出,它默认加载的配置文件是 : etc/init.properties,如果你不想在JVM启动配置项里加入 对应配置来改变这个默认参数项,最简单的就是拷贝一个配置文件,改个名字放到etc目录下去呗,多省事。如我选择mysql数据库,那么我就拷贝一个init-mysql.properties,改名为init.properties

看到新增加的init.properties文件,及里面的配置

再次运行XMPPServer后,会发现熟悉的错误出现了,就是找不到Mysql 驱动,这就对了,说明还得加入mysql-connector-java.jar ,那就改下pom.xml吧 加入 如下:

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <version>5.1.40</version>
  5. <!--<scope>test</scope>-->
  6. </dependency>

注意: 如果使用的是MYSQL8.0及以上。会有安全检查及时区检查,在url后加上:  '&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC'

  1. uri = 'jdbc:mysql://localhost:3306/tigasedb8?user=root&password=123456&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC'

  

有些眼快的同学可能会有疑问?明明加入init.properties,运行过后怎么变成init.properties.old了,这是简单说明下,其实从8开始,Tigase官方推荐的配置文件格式改了,从8.0 起推荐使用DSL领域专用语言来写配置文件,但还是为了兼容老版本,他自动帮你把init.properties里的配置转换到config.tdsl文件里了,所以别慌,要是老用户,你也还可以选择properties配置,让他自动帮你转,不然去官方那看下他8的配置文件指导也是极其简单滴!

如果Tigase的数据库导入了数据成功的话,这里跑起来应该是成功,可能结束了,但也有可以数据导入的问题,出现一些奇怪的问题,演示下:

上文的报错提示:系统要求的版本为0.0.0,而我们的是8.0.0, 看到这错误,这不是很矛盾嘛,但别慌,一定是哪里配置少了,或者少操作了哪一步 !

分析开始 :由于我是手动导入数据脚本的,所以我坚信我的数据库现在是完整的,一定没问题。这里插入下怎么导入呢:如下图里的红圈,你点开里面一个个文件都从小版本一直执行完到8.0.0,相信你应该会SQL就不多说了,后面我会附上一份导出的脚本 文件。

提醒下有些同学可能会按着脚本从头到尾导入,但为什么会遇到出错的导不进去呢,其实有个脚本里面是有个BUG的,如mysql-server-8.0.0-sp.sql 中

基于我的经验,数据库导入没有问题了,那为什么还报版本与期望的不一致的错误呢,这个时候来个大招,直接看下报错的源代码吧:

原来这里Tigase读取打包的jar包没有添加版本信息,也就是说没有读取到MANIFEST.MF 文件里的描述信息,默认0.0.0,我这里就不管了,直接在下面设置下为8.0.0,与数据库配置的版本号一致就行了,跳过这个版本检查。

注意:如果是在IDEA中启动,那只能注掉,或数据库都配置0.0.0. 默认从this.getClass().getPackage().getImplementationVersion();取值,正常在说是读到MANIFEST.MF中的Implementation-Version: 8.0.0。但是只有打成jar包的时候,this.getClass().getPackage().getImplementationVersion();才有效地读得出来。如果你是在IDEA中,就算你配置了MANIFEST.MF,他还是读不出来null,这是个坑吗?谁清楚给指点下???google上也很多类似的,最终在官方也找不到答案。

拿MUC模块来举个例子,由于muc.jar 中包含了META-INF描述信息,这里就能读出3.0.0版本号来

其实这里还可以选择一种做法,也就是运行  tigase.db.util.SchemaManager "upgrade-schema" --config-file=etc/config.tdsl  这样系统去执行脚本 ,由于我选择的是手动导入脚本到数据库,所以我不跑这步了,你们可以试试。

但无论怎么样,现在他默认读取运行jar包上的版本号和数据库上的版本进行匹配,出现问题直接定位到这里纠正就行!

三、再次执行XMPPServer 运行main ,发现版本检查的问题没有出现了,但可能又出现的另一个问题,但别慌,这个看提示就很清晰了,SessionManager 组件中 max-queue-size 配置小了,它让你配置大些,为什么有人可以有人不行,现在这个配置项是动态的,根据你CPU核数来要求配置最小值,简单,就配置下嘛:

修改config.tdsl文件,如下图:

 

再次运行 ,一切顺利跑起来拉:

这个时候,开始使用spark或psi去验证下:但在登录前,要注意两项:

  1. 1'default-virtual-host' 可以配置为任意名XX,但配置以后你必须要保证通过ping XX ,能通!!!
    如我本机IP192.168.3.2,但我也可以配置
  1. 'default-virtual-host' = 'llooper'
  1. 'default-virtual-host' = 'llooperlx'

因为我已经在hosts文件中配置了映射,所以我可以通过这个域名访问本机上的服务

2、可以先关闭TLS加密认证,在config.tdsl 中加入

  1. 'sess-man' () {
  2. starttls (class: tigase.xmpp.impl.StartTLS, active: false) {
  3. queueSize = null
  4. threadsNo =
  5. }
  6. }
  1. 不激活TLS : active: false
  2.  
  3. 注意,同时要确认下,数据库生成的vhost节点数据是否正确:
    如图:tig_paris pkeyvhosts-lists ,pval中,vhost
  1. tls-required="false
  1. hostname="llooperlx"
  2.  
  3. 这两个都得对应上。改动要重启服务,如果不正常,手动更正重启试试!
  1.  
  1. <vhost tls-required="false" domain-filter="ALL" anon="true" register="true" enabled="true" max-users="" hostname="llooperlx" s2s-secret="0cd38742-c2f5-4291-b271-1d42234fad2c"><comps></comps><other></other></vhost>
  1.  
  1.  
  1.  
  2. 重启XMPPServer ,用spark注册登录:

登录用户 :

如果我配置域名为llooperlx

'default-virtual-host' = 'llooperlx'

启动服务,登录都成功了,大功告成 !其实这个没什么难度的,就是出现什么问题,就解决它,要有耐心!

注意:为了帮助新手,如果登录不成功,你可以进入群里附上以下的debuger日志,尽可能给你们解答!

对了,本来想附上一份,tigase-server.sql 这里上传不了附件,那我就上传到群里的文件里去吧,有需要的同学在群文件里找,tigasedb_8.sql

闲的时候,写写文档,一起进步吧。有什么问题在群里问,但是有时候可能没时间回复,见谅!

附上一些tigase doc地址 :

https://docs.tigase.net/tigase-server/snapshot/Administration_Guide/html/

https://docs.tigase.net/

仓库地址

https://maven-repo.tigase.org/repository/release/

http://maven-repo.tigase.org/repository/snapshot

http://maven-repo.tigase.org/repository/tigase

IDEA 上 Tigase8.0 源代码编译运行的更多相关文章

  1. Android 6.0 源代码编译实践

    http://www.judymax.com/archives/1087 Android 6.0 源代码编译实践 https://mirrors.tuna.tsinghua.edu.cn/help/A ...

  2. Tigase8.0 源代码分析:一、启动篇

    Tigase8.0 引用了IoC(控制反转)和DI(依赖注入) 等技术手段,来对对象的创建和控制.不懂的百度下就知道了,Spring完美的实现IOC ,贴一段解释: 通俗地说:控制反转IoC(Inve ...

  3. Linux1.0源代码编译过程

    根据源代码包中的readme文件及http://chfj007.blog.163.com/blog/static/173145044201191195856806/?suggestedreading& ...

  4. aspnetcore6.0源代码编译调试

    虽然编译源码折腾了几个时间(卡在restore),最后还是跑起来了aspnetcore6.0mvc源码项目,下面说步骤,前提是网络能连外,对于不能连外的懒得折腾. 第一步 电脑找个地克隆下GitHub ...

  5. 使用cm-12.0源代码编译twrp

    Select the newest branch available. This step is not necessary with Omni because Omni already includ ...

  6. 关于DCMTK3.6.0源代码编译的总结

    1.DCMTK cmake出来的代码是一样的.MT和MD版本的区别在于DCMTK工程下的每个子工程的代码生成中的MT还是MD,只要修改成为相应的值就可以了. 2.依赖包的选择.依赖包必须与上面中所说的 ...

  7. CDH4.5.0源代码编译

    Unable to load native-hadoop library for your platform解决 安装maven 1 cmake-2.8.12.1.tar.gz cd cmake-2. ...

  8. java 编译 运行 及 引用外部 jar 包的方法

    1. 环境变量配置 JAVA_HOMEC:\Program Files\Java\jdk1.8.0_121; PATH%PATH%;C:\Java\jdk1.6.0_30\bin; CLASSPATH ...

  9. 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]

    最近在学习搭建Hadoop, 我们从Apache官方网站直接下载最新版本Hadoop2.2.官方目前是提供了linux32位系统可执行文件,结果运行时发现提示 “libhadoop.so.1.0.0 ...

随机推荐

  1. redis过期机制(官网文档总结)

    官网地址:https://redis.io/commands/expire redis过期定义如下: Set a timeout on key. After the timeout has expir ...

  2. 编译APR包报错 rm: cannot remove `libtoolT': No such file or directory

    centos 6  编译APR包报错 在当前apr 目录 : #Vi configure +31880  ,注释掉此行 再次编译即可.

  3. kubernetes nginx ingress controller部署

    Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...

  4. oracle 的tnsnames.ora,listener.ora

    x:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN listener.ora: # listener.ora Network Conf ...

  5. python学习(一)--python解释器

    python学习模式,每篇都会有一些总结,然后根据总结去查一查,学一学,基础就会很扎实的 python解释器 1.python版本和安装 python2.x和python3.x https://www ...

  6. WIN下的Django安装

    转自https://www.cnblogs.com/lfxiao/p/7510002.html

  7. 基于JSP servlet mysql 的登陆页面

    数据库中建表: login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  8. Hadoop HDFS常用命令

    1.查看hdfs文件目录 hadoop fs -ls / 2.上传文件 hadoop fs -put 文件路径 目标路径 在浏览器查看:namenodeIP:50070 3.下载文件 hadoop f ...

  9. Suse linux enterprise 11安装时更改磁盘模式为gpt的方法

    在进行鸟哥linux基础篇学习时,在"第3.2.2 选择安装模式与开机 -inst.gpt"中,鸟哥用到的CentOS 7需要用指令修改磁盘模式为gpt. 先用键盘选择Instal ...

  10. BufferedStream说明

    BufferedStream并不是将所有内容都存放到内存中,而MemoryStream则是. BufferedStream必须跟其他流如FileStream结合使用,而MemoryStream则不用