Showing
1 changed file
with
123 additions
and
0 deletions
laoluo1.md
0 → 100644
1 | +## 内容研发实现 | ||
2 | +### 一 资源管理 | ||
3 | +1、jackrabbit库的启动(RepositoryStartup类) | ||
4 | +> | ||
5 | +* 首先启动入口为RepositoryStartup类, 首先会尝试获取到启动的配置文件,然后根据配置文件中库的位置(rep_home)以及库配置文件的位置(rep_config),启动对应的Repository。 | ||
6 | +* 其次将Repository注入到JackrabbitUtils与ServletContext等上下文中。 | ||
7 | +* 紧接着执行启动管道StartupPipeline, 管道上会安置一些启动阀门StartupValve,依次执行对应的Valve。StartupValve包含有FolderNodeTreeValve(目录节点树构造Valve), NodeRegisterValve(节点注册Valve,当需要调整节点Node时,需要调整resouces/nodetype/*.cnd文件结构, 然后启动的时候,会自动去调整节点结构),RmiSocketValve(socket远程调用线程池启动valve, 当开启Socket远程调用的时候,启动的时候需要启动对应的线程池)。 | ||
8 | +* 至此启动完成。 | ||
9 | + | ||
10 | +2、文件节点上传(ContentController.uploadsubmit)· | ||
11 | +> | ||
12 | +* 首先调用(ContentController.uploadFile)将文件上传到服务器的临时文件中,上传的时候会依次调用Tika模块中的TikaFilter链,分别为FileNameTikaFilter(文件名过滤,文件名不能以空格结尾例如“aaa .jpg”,因为这样会破坏跑课调用; 不能无文件后缀名),FileSizeTikaFilter(不允许空文件),CodeTikaFilter(文件编码格式的验证,视频视频码需要为h264,音频码为aac),ContentTypeTikaFilter(文件类型的验证)。只有当所有验证条件都通过之后,文件才能真正上传到服务器。 | ||
13 | +* 上传之后,需要调用ContentController.uploadsubmit进行提交,提交分为正常提交,覆盖提交,全部覆盖提交,跳过,等同于文件系统中文件修改操作中的覆盖跳过。提交的时候需要使用tika读取资源文件的相关属性, 然后将其保存到对应的节点属性中,最终将其保存。 | ||
14 | + | ||
15 | +3、远程调用RMI(RmiController.lookupResource) | ||
16 | +> | ||
17 | +* 调用/lookup/{restype}/{respath}接口,restype资源类型(包含image,audio,video),respath资源路径映射(见/resources/datamap/map.properties)。 | ||
18 | +* 根据资源类型, 映射到对应的查找规则(每种资源都有自己的查找规则),如果适配不到对应的规则,则返回404,提示“您所要查找的资源适配不到规则”。如果存在然后根据查找规则,资源名称查找到对应的节点,如果没搜索到对应的资源节点, 返回404,提示"您所要查找的资源xxx.jpg不存在"。 | ||
19 | +* 如果存在,则将md5、duration、extname属性设置到响应头中返回。 | ||
20 | +* 将文件流写入到Respose当中,与响应头一同返回。 | ||
21 | + | ||
22 | +4、节点搜索(QueryController.query()) | ||
23 | +> | ||
24 | +* 表单提交查询条件到/query接口,表单对象QueryContentEntity会自动生成对应的sql2语句。 | ||
25 | +* 根据sql2语句进行查询,查询到NodeIterator之后需要进行简单分页。因为jackrabbit不支持limit语句,所以分页需要使用NodeIterator.skip的方式来辅助分页。具体方式为NodeIterator.skip((page+1)*pageSize), 然后NodeIterator迭代一页或者是到末尾,这样计算出一页的数据,封装到QueryContentEntity中返回. | ||
26 | + | ||
27 | +5 节点框架(Node) | ||
28 | +> 节点继承体系,继承父节点,同时会继承父节点的属性。例如在文件节点中添加md5属性,图片节点,视频节点,音频节点都具有md5属性。 | ||
29 | +> | ||
30 | +|名称|属性|描述|继承自| | ||
31 | +|||| | ||
32 | +|RootNode|根节点|所有节点的祖节点|无 | ||
33 | +|FileNode|文件节点|文件|RootNode | ||
34 | +|FolderNode|文件夹节点|文件夹可以包含其他的节点|RootNode | ||
35 | +|ImageNode|图片节点|图片|FileNode | ||
36 | +|AudioNode|音频节点|音频|FileNode | ||
37 | +|VideoNode|视频节点|视频|FileNode | ||
38 | + | ||
39 | +6、系统工作原理 | ||
40 | +> | ||
41 | +* 使用jcr协议对文件系统进行抽象, 使用jackrabbit进行节点管理,对外提供web页面进行内容管理与内容查询,同时提供接口供其他系统进行系统集成(例如跑课)。 | ||
42 | +* jackrabbit库包含节点注册(nodetype)、节点属性存储(debry)、节点文件存储(datastore),搜索引擎(lucence),权限管理(privileges),版本控制等等功能. | ||
43 | + | ||
44 | +7、音频缓存重建 | ||
45 | +> | ||
46 | +* 可以直接手动删除192.168.0.111(5)里面的"/资源/音频"中的缓存。 | ||
47 | +* 然后调用/resource/list/{type}接口,type为audio,即可。 | ||
48 | + | ||
49 | + | ||
50 | +## 4A内部认证 | ||
51 | +### 一、用户管理(Register) | ||
52 | + | ||
53 | +> 1、用户添加 | ||
54 | +> | ||
55 | +* 接口:/user | ||
56 | +* method: POST | ||
57 | +* 参数: | ||
58 | +> | ||
59 | +|名称|值|参数 | ||
60 | +||| | ||
61 | +|username|用户名| | ||
62 | +|password|密码| | ||
63 | +|nickname|昵称| | ||
64 | +|adminPassword|管理员密码|需要用管理员密码才能添加用户 | ||
65 | + | ||
66 | +2、用户修改密码 | ||
67 | +> | ||
68 | +* 接口:/user | ||
69 | +* method:PUT | ||
70 | +* 参数: | ||
71 | +> | ||
72 | +|名称|值|参数 | ||
73 | +||| | ||
74 | +|oldpassword|用户旧密码| | ||
75 | +|newpassword|新密码| | ||
76 | +|id|用户id| | ||
77 | + | ||
78 | +3、删除用户 | ||
79 | +> | ||
80 | +* 接口:/user | ||
81 | +* method:DELETE | ||
82 | +* 参数:id, adminPassword(管理员密码) | ||
83 | + | ||
84 | +4、获取用户列表 | ||
85 | +> | ||
86 | +* 接口:/user | ||
87 | +* method:GET | ||
88 | +* 参数:page=1&size=10 | ||
89 | + | ||
90 | + | ||
91 | +### 二、用户认证(Authentication) | ||
92 | +> 1、用户登录 | ||
93 | +* 接口:/login | ||
94 | +* method:POST | ||
95 | +* 参数: | ||
96 | +> | ||
97 | +|名称|值| | ||
98 | +||| | ||
99 | +|username|用户名| | ||
100 | +|password|密码| | ||
101 | + | ||
102 | +> 2、token验证 | ||
103 | +* 接口:/validation_token | ||
104 | +* method:PUT | ||
105 | +* 参数: | ||
106 | +> | ||
107 | +|名称|值| | ||
108 | +||| | ||
109 | +|token|token| | ||
110 | +|appCode|app编码| | ||
111 | + | ||
112 | +> 3、注销 | ||
113 | +* 接口:/logout | ||
114 | +* method:PUT | ||
115 | +* 参数:access_token=xxxx | ||
116 | + | ||
117 | + | ||
118 | +> 4、根据token获取用户id | ||
119 | +* 接口:/userid | ||
120 | +* method:GET | ||
121 | +* 参数:access_token=xxxx | ||
122 | + | ||
123 | + |
-
Please register or login to post a comment