发表于: 2017-07-19 19:29:44
1 1133
今天:
1.昨天在Git上下载了一个Spring RMI的HelloWorld项目,在本地可以跑,在服务器上不能跑,后来发现是阿里云服务器没有把1099端口打开,但是今天打开了这个端口还是不行。
2.上午还是在做各种尝试,觉得可能是Web服务器的问题,就又重新建了普通项目,打包成jar,在服务器上用java -jar 运行,并且通过lsof -i:1099测试端口,确认有一个java程序在监听这个端口,但是还是不行,异常是没有安全管理措施,之前的异常是找不到制定的服务。所以暂时还是放弃了。掌握了如何用maven打包一个可运行的jar的插件命令,输入mvn assembly:assembly打包,会生成两个jar包,一个是带有所有依赖的,可以直接运行,在插件中要指定有main方法的类。
</plugin>
4.开始着手对项目进行拆分,两个项目都使用Web工程。
两个项目中共有的类是:model类;服务接口;工具类;
客户端的类是:控制器;拦截器;标签处理器;
服务端的类是:服务实现类;DAO接口和实现;
5.拆分结束后,开始写两个项目的Spring配置文件,其中客户端使用Spring MVC配置,服务端使用Spring配置,配置中,客户端和服务端都要完全重写所有的服务类的Bean,其他的配置则可以根据需求复制粘贴。
客户端需要写的Service的Bean的写法:
在Bean中,还需要指定服务类的接口。
</bean>
服务端Service的Bean的写法:
registry端口号(存放名字和Service对象的映射关系的地方),一个端口可以有多个Service。
</bean>
6.对服务端接口的测试
在拆分之后,对前几个任务中Service层接口(数据库读取,注册,登陆,短信,邮件,上传文件)进行测试。
首先是第三方类不能序列化的问题。之前在写Service层时,把HttpServletRequest作为入参了,但是分离之后,RMI之间传输对象必须是可序列化的对象,而HttpServletRequest是一个第三方类,不能序列化。先想到的是,自定义一个SerializbleRequest继承HttpServletRequest,再序列化,但是HttpServletRequest是一个接口,所以不行,就把服务层改了一遍,所有的返回值和入参都是POJO对象和基本对象。
第二个是重写了用配置文件设置第三方SDK服务类参数的方法,之前是在配置文件中配置用户名密码之类的东西,现在用注解的方式注入properties文件中的值,缩短了Spring配置文件的长度。
之后接口可以正常使用。
问题:配置到服务器的问题还是没有解决;拆分后,网页和数据库的速度明显慢了,一个get等好几秒钟;
明天:继续任务8中的内容
总结:无
点成任务9了,点错!
评论