日期:2014-05-18  浏览次数:20854 次

多个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 jar

------解决方案--------------------
不怎么懂 顶下
------解决方案--------------------
实际上不同的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的方法代码写着最简单,到网上搜下,实例挺多。