发表于: 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跑通了,概念还是很模糊明天理理清,继续往后做.
问题:花式坑,各种各样的坑
收获:做人头一定要硬!
评论