Mapxtreme与XFire的集成解决之道
昨天在做系统迁移的时候,发现系统中基于Xfire的webservice和基于MapXtreme4.71的webgis不能集成在同一个项目中。为了负载均衡,我配置了3个服务器,分别完成地图渲染,数据挖掘(运行大数据量任务)和web服务器,web服务器负责相应用户请求并把地图相关的请求发送到地图渲染服务器,大数据量请求发送到数据挖掘服务器。之前先完成Xfire的webservice部分,测试很好,之后我并集中精力开发webgis,在开发过程中我利用到了jdom1.0以前的版本,由于一直关注webgis,没有再去测试之前完成的webservice,结果在准备部署迁移的时候,发现先前测试良好的webservice部分报错说
java.lang.ClassNotFoundException: org.jdom.Content。
感觉是jdom版本的问题,下面就是我的解决办法。
1. 更新到更高版本的Jdom,1.0,1.1均更新过,结果webgis部分在生成地图的时候报错,无法运行,出错如下:
java.lang.NoSuchMethodError:org.jdom.Element.addContent(Lorg/jdom/Element;)
2. 至此确定是jdom版本的问题,而且Jdom在这一点上没有实现向下兼容,但是webservice和webgis都是系统必须集成的模块,为此我想过降低Xfire的版本,发现Xfire依赖的jdom版本都是1.0;升级Mapxtreme版本,发现它用的版本都是jdom1.0版本以下。
3. 在网上搜索发现可以在jdom的源代码的org..jdom.ementjava类中添加几个如下方法:
public Element addContent(Text text) { this.content.add(text);
return this;
}
public Element addContent(Element element) {
this.content.add(element);
return this;
}
public Element addContent(ProcessingInstruction pi) {
this.content.add(pi);
return this;
}
public Element addContent(EntityRef entity) {
this.content.add(entity);
return this;
}
public Element addContent(Comment comment) {
this.content.add(comment);
return this;
}
扩展org.jdom.output.XMLOutputter.java,添加如下方法:
public XMLOutputter(String indent, boolean newlines, String encoding) {
this.currentFormat.indent = indent;
this.currentFormat.encoding = encoding;
}
public XMLOutputter(String indent, boolean newlines) {
this.currentFormat.indent = indent;
}
public XMLOutputter(String indent) {
this.currentFormat.indent = indent;
}
4. 当我把这些源代码添加到我的项目中测试的时候,发现问题依然没有解决,报出的错误是XMLOutputter中没有init方法,当时感觉可能改造也不能成功。到晚上10点钟,做最后尝试,经过fatjar成功打包成Jdom1.2(Jdom当前版本是1.1,似乎没有继续更新的势头,所以我个人定义版本位为1.2)。后加入到项目中后,mapxtreme和Xfire成功的集成进来了,终于可以安心的回宿舍睡觉了,呵呵。
附件中是我扩展的Jdom1.2.jar,不知道这样做是不是违法的。
分享到:
相关推荐
MapXtreme与Xfire集成时jdom .jar包,xfire中用的是最新的jdom.jar,然而MapXtreme中用的是2003年的,但两者中任取其一都会冲突,在网上找到一个,综合两者的,
这是MapXtreme常用自带控件的源代码
MapXtreme6.8中文 完美 破解版
mapxtreme for java 实现自定义范围专题图
MapXtreme2008中文教程详细介绍了MapXtreme2008的各方面特性,并结合例子介绍了MapXtreme的使用方法,附注了MapXtreme的各项新特性和指标。
mapxtreme sample mapxtreme的示例程序
MapXtreme6.0破解文件附有详细破解说明
MapXtreme Java Developer Guide
mapxtreme 7.0 下载
MapXtreme Java Edition API Specification
基于MapXtreme的BS体系结构模型的设计与实现
Mapxtreme6.7 .net帮助文档
mapxtreme的开发文档简介,系统的介绍了mapxtreme的结构和方向
摘要:随着近年来计算机技术的发展,尤其是网络枝术的发展,GIS在组成结构和应用技术等方面已与传统的GIS技术有了很大的不同,基于MapXtreme /MaPX的W ehGIS则是GIS技术发展的趋势。本文简单介绍W ehGIS的发展趋势,...
Mapxtreme与C#编程的实现。MapXtreme增加基站、改变颜色、操作数据库
WebGIS开发的经典教程,指导你利用MapXtreme进行二次开发,实战性强,叙述详细
.net2008 c# mapxtreme 加载地图,传进2个点在图层上画线
详细阐述Mapxtreme for .net开发gis应用系统
mapxtreme2008,releasenotes