多个war项目共享一个java项目的数据
其中 有一个java项目名称为“shar.jar”
两个java web项目名称为 “p1.war” “p2.war”
描述:p1.war项目修改shar.jar中的数据为100。p2.war 获取 p1.war 修改的数据 100 。反之p2.war修改shar.jar中的数据200 ,p1.war获取p2.war数据为200 ,用项目的部署方式实现,同时部署到tomcat或是jboos中
------解决方案--------------------不怎么懂 顶下
------解决方案--------------------实际上不同的war应用,是分别属于不同的应用Context了,数据怎么可能通过调用了一个jar就共享了呢?
------解决方案--------------------很厉害的样子
------解决方案--------------------具体问题是什么?
------解决方案--------------------数据不能放内存了,提供jar的项目操作内存数据库,如hsqldb,h2db等
------解决方案--------------------最简单的办法就是将所有的数据都存到数据库(mysql或者内存数据库)里面
其次可以将sha.jar放到一个War里面,
数据在内存里面,然后提供接口给另一个War来调用
当然,要记得控制状态
不过我觉得楼主你这个问题不是需求有问题就是技术架构有问题
------解决方案--------------------EJB stateful session bean
------解决方案--------------------当然可以,内存数据库可以开一个端口,就跟普通数据库一样
------解决方案--------------------拋磚引玉
没遇到过这种问题, 用序列化解决是否可以?
P1.WAR 序列化对象到文件,然后P2.WAR反序列化得到对象。反之亦然。
这个问题的确是个问题。为什么要这样实现?
------解决方案--------------------用C/C++写个函数,在操作系统级别加锁。然后通过jndi调用。
------解决方案--------------------要不用jms(java 消息服务)?被共享数据的对象自己管理锁,这样代价就小多了。感觉没必要为一些小数据而引进内存数据库,不划算的。
------解决方案--------------------不知道是不是楼主想的那样,JAR作为连接数据库的接口存在,然后2个WAR包同时取调用这个接口?
------解决方案--------------------在p1,p2分别封装可互相调用的接口(访问和推送),p1获取到shar的数据并修改后推送给p2,这处理过程支持可逆就可以了。
------解决方案--------------------把shar.jar变成一个war,p1.war和p2.war都用webservice方式调用shar.war,这样改动比较小吧。
------解决方案--------------------你原来p1.war调用shar.jar的模式是什么?难道没有并发问题吗?怎么解决的?
------解决方案--------------------不知道webservice可不可以,你可以百度webservice看看
------解决方案--------------------用WebService向外发布接口,然后相互调用即可
------解决方案--------------------两个应用要想交互不是简单的引用同一个jar包就可以的,这是跨系统通信,要做接口。不涉及到数据交互,只是共享的话,可以用memcached,简单方便
------解决方案--------------------2个项目共享数据. 再整一个项目提供两个远程接口(用什么协议, 什么实现自已决定, WEBSERVICE, RMI, HESSION等), 暴露一个修改, 一个查询的功能. 供这2个项目调用就行了.
这是一种实现方式.
------解决方案--------------------使用两个war工程共有的同一个父类加载器来加载shar.jar包。这样对不同的war工程都可以访问到shar.jar的同一份全局对象。
不知道我这个思路可以不?
------解决方案--------------------这个问题怎么还没纠结完啊。2个war就是2个jvm,共享了jar仍然是2个jvm,不管怎么调用数据都不能共享。
我告诉你的办法就是webservice,你要是系统并发量太高就弄排队系统在前面顶着,或者直接使用lhliaiuiang说的memcached,或者2个war写个同步逻辑,数据备份成2份。
memcached的方法代码写着最简单,到网上搜下,实例挺多。