V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ray0625
V2EX  ›  Java

求助, JavaWeb 问题,一句话说不明白,详见正文

  •  
  •   ray0625 · 2017-04-05 16:03:09 +08:00 · 2999 次点击
    这是一个创建于 2796 天前的主题,其中的信息可能已经有所发展或是发生改变。

    JavaWeb 中用到了第三方软件生成的统计数据报表,但是每个客户使用的报表都是不同的,我在打 war 包的时候需要把所有的报表都打进去。关键是用户可以在使用过程中导入新的报表,但是这些报表都没保存到 war 包里,只要服务一重启,这些表就丢了,需要客户重新导入,客户表示很不满意。求问各位 v 友大神,有没有什么解决办法,,

    ps :服务器有 Linux 的也有 windows 的

    16 条回复    2017-04-06 10:49:05 +08:00
    domty
        1
    domty  
       2017-04-05 16:54:09 +08:00
    意思是要把用户打包的数据弄成类似静态资源一类的东西?

    这你要不然把所有的数据都分析后打包到数据库里,要导出的时候静态生成。
    要不就写个接口保存到服务器本地路径或者 7 牛这样的远程存储供应商那里呗?
    ray0625
        2
    ray0625  
    OP
       2017-04-05 17:02:29 +08:00
    @domty 谢谢,目前看放到本地服务器可行,或者我们有单独的存储区可以用~~然后想问一下把数据都分析后打包到数据库里,这种如何实现呢?什么样 l 类型的文件都行吗?比如我们现在用到的是第三方自己定义的一种文件:xxx.cpt
    domty
        3
    domty  
       2017-04-05 17:09:02 +08:00
    @ray0625 #2

    只要你们的 Java 程序能读取文件把文件的主要信息解析出来就行。
    lcorange
        4
    lcorange  
       2017-04-05 17:18:20 +08:00
    你的文件上传路径是 webapp 下面,这个文件夹在重新发布的时候是全删后重新解压 war 的。所以都没了
    1. 要么像 1#一样,开个云文件,或者保存到服务器本地目录
    2. 让运维部署 war 时写个脚本,先把 cpt 文件复制出来,然后部署 war ,然后覆盖回去
    3. 存数据库的话,可以转成 byte 数组,存进去,这样就无所谓什么格式了
    sagaxu
        5
    sagaxu  
       2017-04-05 17:49:10 +08:00
    不要把用户数据和代码放在一起
    340244120
        6
    340244120  
       2017-04-05 18:33:19 +08:00 via Android
    上传文件放到应用外面 保持独立
    NUT
        7
    NUT  
       2017-04-05 19:05:55 +08:00
    做一个文件服务器
    wc951
        8
    wc951  
       2017-04-05 20:20:37 +08:00 via Android
    数据库可以存个 blob 字段
    Ouyangan
        9
    Ouyangan  
       2017-04-05 21:35:28 +08:00
    1.新增两个表 , 文件表(原文件名,重命名,大小,访问 url) ,用户文件表(文件 id,用户 id)
    2.新建一文件目录用于放置用户文件, 量不大的话 tomcat 配一个虚拟目录 .

    好处是这样迁移到云上只需要上传文件到云服务器 ,批量替换访问 url 即可.
    Ouyangan
        10
    Ouyangan  
       2017-04-05 21:36:27 +08:00
    @Ouyangan #9 存在 多个服务器还是推荐楼主上云 ,不贵 .
    luban
        11
    luban  
       2017-04-05 21:45:04 +08:00 via iPhone
    最简单的方式,不要用 war 包部署,直接用文件夹方式
    比较合理的方式,存客户报表的文件夹挪到 war 包外面
    ray0625
        12
    ray0625  
    OP
       2017-04-06 09:26:54 +08:00
    @lcorange 谢谢,打算用类似第一种的方法了。上传时放到存储区和 webapps 的文件夹下,下次 tomcat 启动时,直接从存储区移动过来
    ray0625
        13
    ray0625  
    OP
       2017-04-06 09:28:59 +08:00
    @sagaxu 不是用户数据,是查询用户数据的一个模板
    ray0625
        14
    ray0625  
    OP
       2017-04-06 09:53:03 +08:00
    @Ouyangan 恩,我们在云上和局域网都有,看客户要求,,哭哭
    jalena
        15
    jalena  
       2017-04-06 10:03:45 +08:00
    不用 war 的形式部署不就可以了?或者你关闭 war 的自动解包功能!
    sagaxu
        16
    sagaxu  
       2017-04-06 10:49:05 +08:00
    @ray0625 如果用户可以自己导入或者修改模板,模板本身就是用户数据的一种
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   932 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.