多个war项目共享一个java项目的数据,该怎么解决


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


java J2EE 程序开发

钢刈与狂喜 11 years, 2 months ago

不知道是不是楼主想的那样,JAR作为连接数据库的接口存在,然后2个WAR包同时取调用这个接口?

Oizys answered 11 years, 2 months ago

在p1,p2分别封装可互相调用的接口(访问和推送),p1获取到shar的数据并修改后推送给p2,这处理过程支持可逆就可以了。

恶你了哦你 answered 11 years, 2 months ago

两个应用要想交互不是简单的引用同一个jar包就可以的,这是跨系统通信,要做接口。不涉及到数据交互,只是共享的话,可以用memcached,简单方便

紅帽哥布林 answered 11 years, 2 months ago

用WebService向外发布接口,然后相互调用即可

狂氣D紳士 answered 11 years, 2 months ago

不知道webservice可不可以,你可以百度webservice看看

魂魄?妖梦 answered 11 years, 2 months ago

你原来p1.war调用shar.jar的模式是什么?难道没有并发问题吗?怎么解决的?

天然呆专萌 answered 11 years, 2 months ago

这个问题怎么还没纠结完啊。2个war就是2个jvm,共享了jar仍然是2个jvm,不管怎么调用数据都不能共享。

我告诉你的办法就是webservice,你要是系统并发量太高就弄排队系统在前面顶着,或者直接使用lhliaiuiang说的memcached,或者2个war写个同步逻辑,数据备份成2份。

memcached的方法代码写着最简单,到网上搜下,实例挺多。

Oshino answered 11 years, 2 months ago

使用两个war工程共有的同一个父类加载器来加载shar.jar包。这样对不同的war工程都可以访问到shar.jar的同一份全局对象。

不知道我这个思路可以不?

馄饨饨鱼头 answered 11 years, 2 months ago

2个项目共享数据.  再整一个项目提供两个远程接口(用什么协议, 什么实现自已决定, WEBSERVICE, RMI, HESSION等), 暴露一个修改, 一个查询的功能. 供这2个项目调用就行了.

这是一种实现方式.

でんせつ原村和 answered 11 years, 2 months ago

要不用jms(java 消息服务) 被共享数据的对象自己管理锁,这样代价就小多了。感觉没必要为一些小数据而引进内存数据库,不划算的。

扌空萝莉D宅 answered 11 years, 2 months ago

用C/C++写个函数,在操作系统级别加锁。然后通过jndi调用。

围观乌龟的大饼 answered 11 years, 2 months ago

把shar.jar变成一个war,p1.war和p2.war都用webservice方式调用shar.war,这样改动比较小吧。

尼古拉.特斯拉 answered 11 years, 2 months ago

拋磚引玉

没遇到过这种问题, 用序列化解决是否可以?


P1.WAR 序列化对象到文件,然后P2.WAR反序列化得到对象。反之亦然。

这个问题的确是个问题。为什么要这样实现?

lkj510 answered 11 years, 2 months ago

Your Answer