idea搭建tigase源码环境

安装配置简单记录如下

1.安装mysql,我用的版本是mysql 5.5。

如果用较高版本,在执行过程中会遇到一些数据库的报错,需要对源码进行修改。

错误举例如下

The server time zone value '???ú±ê×??±??' is unrecognized or represents(这个是需要改数据库的连接串)

check the manual that corresponds to your MySQL server version for the right syntax(这个是给用户授权时,会有这个错误)

2.安装jdk,我用的版本是1.8

这个地方 需要检查idea几处的版本是否一致(https://blog.csdn.net/hanjun0612/article/details/72845918

file-setting- build,execution,deployment-java compiler(project bytecode version 1.8)

file--Project Structure-project settings -project(project sdk 1.8)

file-project structure-project settings-modules(language level:8-lambdas,type annotations etc.)

3.下载tigase源码

可以在这里面找到下载地址 https://tigase.tech/projects/tigase-server/repository

我直接下载的stable 版本  git clone -b stable https://git.tigase.tech/tigase-server.git

4.idea版本 我用的是 2018.1.5(Ultimate Edition)

第一次加载代码,maven会自动去下载相应的jar包

加载代码时,可能会报jdbc的包不存在,手动去pom.xml里面加一下就好了

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.25</version>
</dependency>

5.安装Groovy

直接执行 会报Cannot compile Groovy files: no Groovy library is defined for module 的错误

有的解释是直接在file->setting->Compiler的resource中删除 ?*.groovy;就不会报这个错

https://blog.csdn.net/u013083576/article/details/58288626

但我不清楚 代码中用没用到这块所以还是安装了一下Groovy(版本2.4.15)

然后配置(https://stackoverflow.com/questions/43450683/errorcannot-compile-groovy-files-no-groovy-library-is-defined-for-module-mypr

6.建库

用到的文件是 tigase-server\scripts\db-create-mysql.sh(刚开始下载的主干,没找大这个文件,stable分支里面有这个文件)

其实就是执行这句

java -cp "jars/*" tigase.util.DBSchemaLoader -dbHostname ${DB_HOST} -dbType ${DB_TYPE} -schemaVersion ${VERSION} -dbName ${DB_NAME} -rootUser ${ROOT_NAME} -rootPass ${ROOT_PASS} -dbUser ${USER_NAME} -dbPass ${USER_PASS} -logLevel ALL

但是命令行执行,总是不成功,有时也看不出来什么错(有可能是 jars 下面根本就没这个方法,或者数据库版本不对一些语句不支持(刚开始弄时,版本用的版本比较高))

后来就直接在源代码里面执行,把\src\main\java\tigase\util\DBSchemaLoader设置成启动项,然后启动参数配置为:

-dbHostname 127.0.0.1 -dbType mysql -schemaVersion 7-1 -dbName tigasedb -rootUser root -rootPass 000000 -dbUser tigase -dbPass tigase12 -logLevel ALL

然后执行,执行成功后,可以看到数据库

7.配置启动项的参数

配置文件tigase-server\etc

有的文章说改写init.properties 有的说改init-mysql.properties 其实这两个文件内容差不多,主要是看启动时,调哪个配置文件,改哪个就好了,我改的是init-mysql.properties

--admins=admin@127.0.0.1,admin@计算机名
--user-db-uri=jdbc:mysql://127.0.0.1/tigasedb?user=tigase&password=tigase12
--virt-hosts=127.0.0.1,计算机名

计算机名 可以从 控制面板\所有控制面板项\系统 里面获取到

然后开始正式启动

启动入口 为 \src\main\java\tigase\server\XMPPServer.java

VM options:

-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8  -Djdbc.drivers=com.mysql.jdbc.Driver:org.postgresql.Driver:org.apache.derby.jdbc.EmbeddedDriver 

program arguments:

--property-file etc/init-mysql.properties

到目前为止,有一个加载错误还没解决(不过看上去没什么影响)

java.lang.LinkageError: loader (instance of  sun/misc/Launcher$AppClassLoader): attempted  duplicate class definition for name: "org/groovy/debug/hotswap/ResetAgent$TimestampFieldRemover"

然后看到启动成功

== Thu Oct 11 15:35:50 CST 2018 Server finished starting up and (if there wasn't any error) is ready to use
8.Psi客户端验证

很多都推荐的是spark的客户端作为验证工具,但没有跑通,注册和登录总是报错(连不上服务器,或者账号密码错误 ),我跟了下,可以连接到服务器,但是发送xmpp消息过程中,收到服务器的返回<proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> 之后就没反应了,有的说是证书机制问题,设置了好多,一直没跑起来。

但是我利用SocketTool,直接发送xmpp消息(登录)

<stream:stream to='127.0.0.1' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'>

<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">AH..........3Bhc3N3ZA==</auth>

是能正常触发服务器的登录相应,并提示成功。

后来我用的Psi作为客户端去测试(https://www.cnblogs.com/eyecool/p/7243661.html

注册完用户可以看到(注册用户其实最后调用的存储过程TigAddUser,登录调用的是存储过程TigUserLoginPlainPw)

tig_user表里面会有新增一条数据

9.具体的通讯问题,可以看log日志。

在init-mysql.properties 里面可以配置日志级别

 

写在最后,一年多没摸过java代码,花费了几天勉强把代码跑起来了,任重而道远》。。。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值