发表于: 2017-11-27 23:43:22
1 642
今天完成的事情:
1.任务9已经完成。
2. 学习servlet
3. 看视频
明天计划的事情
1. 提交任务9
2. 准备复盘的相关
遇到的问题:
1. get 获取为空置
收获:
1.任务9已经完成。
rmi需要两个端口,一个通信,一个交换数据。
怎么发现的:当把阿里云端口防火墙全部关了后就可以访问
然后通过二分法不断排除端口,最后锁定端口为:43983
再次重启后,通过pid查到端口号为43980
端口随机
如果是spring+rmi,可以通过spring bean方式来指定两个端口,但是tuscany不行,需要自己写类来完成。
通过比对spring 的指定端口的源码发现
<bean id = "rmiService" class = "org.springframework.remoting.rmi.RmiRegistryFactoryBean" >
在这个类里
public void setServerSocketFactory(RMIServerSocketFactory serverSocketFactory) {
this.serverSocketFactory = serverSocketFactory;
}
通过这个接口配置服务器相关配置
在RMIServerSocketFactory里 发现设置端口的接口,百度发现就是这个东西
public ServerSocket createServerSocket(int port)
throws IOException;
继承它的实现,并重写
public class SMRMISocket extends RMISocketFactory {
private static Logger logger = LoggerFactory.getLogger(SMRMISocket.class);
@Override
public Socket createSocket(String host, int port) throws IOException {
return new Socket(host,port);
}
@Override
public ServerSocket createServerSocket(int port) throws IOException {
if (port == 0) {
port = 2182; //不指定就随机分配了
logger.info("port服务端端口号:" + port);
}
logger.info("服务端端口号:" + port);
return new ServerSocket(port);
}
}
在main里调用:
RMISocketFactory.setSocketFactory(new SMRMISocket());
分配一个2182端口
2. 学习servlet
Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet 执行以下主要任务:
- 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
- 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
- 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
- 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
- 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
进度:
任务开始时间:11.18
预计完成时间:11.21
第一次延期到:11.23
第二次延期到:11.24
第二次延期到:11.26
明天审核代码
禅道:http://task.ptteng.com/zentao/project-task-264.htm
评论