如何基于苍穹进行阿里OSS存储扩展开发?
--参考:https://vip.kingdee.com/link/s/lS8wl
扩展开发过程中历经九九八十一难,现将遇到的问题罗列如下:
1、 通过开发工具已经调试ok,文件可正常上传到OSS文件服务器,并且上传、下载、预览均无问题;但是部署到服务器之后,系统登录时无法登录;
问题分析:因方法实现时遗漏了getForbiddenExtensions方法导致;
处理方法:完善方法实现,将文章中提到的方法都进行处理;
2、 OSS开发使用了阿里云JAR包,公有云环境如何添加?
处理方法:公有云环境已有租户上传过相关JAR包,不需要重新上传;
3、 OSS开发需要配置MC参数,公有云环境如何配置?
处理方法:公有云环境,需要配置租户级参数,通过天梯提单给公有云运维老师配置;
4、 OSS开发完成后,部署到公有云环境后,删除文件时,提示错误:Java lang. NoSuchMethodError: com.aliyun.oss OSS deleteObject;
问题分析:本地开发使用的时阿里aliyun-sdk-oss-3.15.0的JAR包,公有云环境中其他租户已上传的是老版本的JAR包,没有delete方法;其他租户做开发的时候都会调用第一个租户上传的JAR包,所以导致该报错。
处理方法:将代码中调用删除方法的代码注释,因公有云也无法排查哪些租户上传了哪个版本的JAR包。。。。
5、 用户通过【系统服务云】-【系统管理】-【登录页配置】配置登录页的图片信息,【登录页配置】点击保存按钮报错;
处理方法:配置MC租户级参数attachment.second.dev=true ;
6、 用户通过【系统服务云】-【系统管理】-【登录页配置】配置登录页的图片信息,第一次配置成功后,登录系统时图片显示正常;第第二次在【登录页配置】页配置中换了新的图片上传,登录时显示的还是第一次配置的图片,多次尝试都是显示第一次配置的图片。
处理方法:配置MC租户级参数login.use.fileserver.image=true ;
7、 公有云环境,初始化数据时,直接更新阿里oss文件服务器图片地址到系统中,更新完后可以打开和显示;但是配置打印模版取图片的时候,打印不出来,必须重新手工上传才能打印出来;
处理方法:需要在天梯中提交外网访问申请,使公有云环境可访问客户自己的OSS文件服务器;
8、 公有云生产环境[采购订单] 点打印之后,一直在加载,超过60s后就没反应了,现在订单都打印不了。打即时的图片,读取的是保存在美国的OSS中;
问题分析:①打印是容器内访问、外网地址无法访问,只能使用相对路径;②之所以使用外网地址,是因为标准代码里面有处理,把地址里面的空格去掉了,使得相对路径地址无法访问;
处理方法:标准产品025版本发布补丁去除“去掉空格”的处理;
9、 公有云敏态V5.0.025版本,供应商管理一日常管理一资料变更管理, 首次变更上传资质附件,过几天后,再去下载提示文件不存在,但是可以预览, 全部下载会提示不存在但也能下载下来;
问题分析:是由于二开文件服务器,在OssStorage.java exist方法调用了getValidFileName 方法,里面去掉了地址的空格;
处理方法:代码中去除“去掉空格”的处理;
10、 系统异常卡顿
问题分析:二开文件服务器访问阿里oss,创建了太多的OSSClient实例,且没有进行关闭;
处理方法:①在二开的方法里面都调用关闭ossClient.shutdown();,但是这样会影响二开的附件调用getInputStream方法相关代码,导致报错;②创建OSSClient实例改用单例,解决了这个问题;