多个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 程序开发

钢刈与狂喜 12 years, 10 months ago

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

Oizys answered 12 years, 10 months ago

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

恶你了哦你 answered 12 years, 10 months ago

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

紅帽哥布林 answered 12 years, 10 months ago

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

狂氣D紳士 answered 12 years, 10 months ago

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

魂魄?妖梦 answered 12 years, 10 months ago

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

天然呆专萌 answered 12 years, 10 months ago

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

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

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

Oshino answered 12 years, 10 months ago

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

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

馄饨饨鱼头 answered 12 years, 10 months ago

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

这是一种实现方式.

でんせつ原村和 answered 12 years, 10 months ago

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

扌空萝莉D宅 answered 12 years, 10 months ago

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

围观乌龟的大饼 answered 12 years, 10 months ago

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

尼古拉.特斯拉 answered 12 years, 10 months ago

拋磚引玉

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


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

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

lkj510 answered 12 years, 10 months ago

Your Answer