发表于: 2017-11-01 14:56:25

2 984


今日完成:

  将RMI service服务部署到服务器上果然有问题.


报错找不到依赖包,无法运行!




先回本地查看target包


我们需要一份MAVEN依赖的JAR包,要知道pom.xml中指定的JAR包都被下载到了本地的.m2/repository下,我们如何搞到一份所依赖的JAR将他们都放入到lib目录下呢?到.m2/repository下挨个COPY JAR包,显然这并不好。我们可以利用MAVEN的命令来完成COPY JAR包的工作这里是没有lib文件包


使用命令 mvn dependency:copy-dependencies -DoutputDirectory=target/lib



上传之后测试还是不行.......



为了测试通过删除对应log4j和json-taglib依赖,更换mysql驱动版本,终于编译通过


启动终于成功!

查看下监听端口


看到这里前缀是0.0.0.0,试着在本地连接看一哈


测试DEMO连接超时,还是回头再开放下服务器端口,重启服务器!



开放端口后很爽快的又报错...

内容如下,我仿佛闻到了坑的味道..

org.springframework.remoting.RemoteConnectFailureException: Could not connect to remote service [rmi://116.62.225.7:8888/hei]; nested exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 

java.net.ConnectException: Connection refused: connect



自己画了一张图 猜测一下


打开我们 linux 中的 /etc/hosts看下




这就是典型的服务器有多个 ip 引起的 rmi 连接问题, 解决方法有三:


①服务器端添加代码: System.setProperty("java.rmi.server.hostname" , "自己外网IP" );


②在 RMI 服务器上 root 身份登录,输入 Vi /etc/hosts ,在第一行的IP地址改成外网的 自己外网IP  


③若是用 spring, 则在 RmiServiceExporter 中添加属性 <property name="registryHost"  value="自己外网IP" 


这里使用第一种方法



很兴奋去连接不直接报错了,一直处于等待状态最后还是超时报错,这里猜想配置起效了


RMI服务器调用成功后,返回值经过公网IP出来了,但是"走错路了"


前面在配置服务端的RMI一直忽略了一个重要的属性配置,数据传输端口

<property name="servicePort" value="" />

看下源码

在我不赋值的时候默认值给了个0,这也就意味着当你不去手动指定时,他会随机给你一个传输端口


模拟了一下啊传输过程

那么按照上面的问题,进行手动配置


那么理想情况如下!


最后经过5个多小时的努力,成功了....




提交task8





现在每当学习一个新东西的时候,按照我个人的学习经验分一下步骤

① 知道这个东西是干什么的

② 因为要使用它 它依赖的jar包有哪些

③ 自己做一个基础Demo测试,完成最基础的功能

④ 真正使用该工具或框架融入自己的项目对其操作



这里在查找资料的时候发现很多都是2008年左右的文章,突然有了一种不祥的预感...

进入官网一看果然GG了,2016/5/28 光荣的退休了



先完成基础的一个小计算器,为了方便就写一个加法!

在这里对AddSerivce使用set方法并加使用注解@Reference,有一点像spring的set注入了



service的接口和实现


简单的配置文件和启动



看起来很轻松? 这个简单Demo因为资料实在是太尼玛的少了,JAR包被官网限流无法下载,手动从maven库中添加依赖而造成的少包,包冲突等等等等问题

我整整弄了7个小时.................



到了1点半了...



明日计划:demo跑通了,概念还是很模糊明天理理清,继续往后做.


问题:花式坑,各种各样的坑


收获:做人头一定要硬!




返回列表 返回列表
评论

    分享到