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年的,但两者中任取其一都会冲突,在网上找到一个,综合两者的,
10. **集成其他系统**:MapXtreme可以无缝集成到其他企业系统,如ESRI的ArcGIS、Oracle Spatial等,提供跨平台的地图服务。 通过深入学习这份“MapXtreme入门资料大全”,你将能够理解MapXtreme的基本原理,掌握...
该产品通过集成MapInfo和MapX的功能,使信息管理员能够在Web服务器上安装MapXtreme,并对其进行编程与管理。这样,用户便可以通过标准的Web浏览器访问MapXtreme,从而获得地图显示、专题地图制作、地理数据分析等一...
它提供了丰富的API和控件,使得开发者能够轻松地在Web或桌面环境中集成交互式地图功能。本资源包含的是MapXtreme内置控件的源代码,这对于深入理解和自定义MapXtreme的应用是非常有价值的。 MapXtreme的核心特性...
此外,教程还会涉及MapXtreme2008的API集成,包括JavaScript、.NET和Java版本,用户可以学习如何使用这些API来开发自定义的地图应用。通过实例代码,用户将学会如何添加标记、绘制图形、实现点击事件处理等功能,...
6. **集成其他系统**:MapXtreme API可以与常见的数据库系统(如Oracle、SQL Server、MySQL等)无缝集成,同时支持JDBC和ODBC,方便数据的存储和检索。此外,它还可以与其他企业级应用(如ERP、CRM)集成,扩展GIS...
3. **Web服务集成**:MapXtreme 6.7支持SOAP和RESTful接口,可与Web服务无缝集成,实现地理数据的在线共享和交互。 4. **客户端组件**:提供了丰富的客户端控件,如Map Control,使得开发者可以轻松地在.NET应用...
MapXtreme是一款强大的地图开发工具,主要用于构建桌面和移动应用程序中的地理信息系统(GIS)解决方案。这个"MapXtreme 桌面完整示例"提供了25个不同的实例,帮助用户深入理解和学习如何利用MapXtreme进行地图操作...
MapXtreme与MapInfo紧密集成,用户可以使用MapInfo进行地图编辑和分析,然后通过MapXtreme在Web上发布和交互。两者结合,可以实现从数据管理到应用发布的完整GIS流程。 6. **开发与集成**: 使用MapXtreme的开发...
MapXtreme是一款由Esri公司开发的专业地图应用程序开发插件,主要用于构建地理信息系统(GIS)解决方案。它提供了丰富的地图渲染、数据管理、空间分析以及交互式地图服务等功能,广泛应用于Web应用程序和移动设备上...
2. MapXtreme 2005 与 Visual Studio.Net 2003 无缝集成,使开发变得容易。 3. 遵循工业标准和 OGC 标准,提供了真正的互操作性。 4. 增强的功能特性能开发更为复杂而又灵活的系统。 MapXtreme 2005 SDK 是为熟悉 ...
6. **交互性与动态更新**:MapXtreme支持地图的交互性,用户可以缩放、平移地图,同时专题图会相应地更新。此外,如果你的数据源是动态的,比如实时更新的数据库,你可以编写代码来实现专题图的实时更新。 7. **...
9. **服务集成**:了解如何与Web服务(如WFS、WMS、KML等)进行集成,获取并显示来自这些服务的地图数据。 10. **性能优化**:探讨如何通过缓存、分块加载等技术提高地图应用程序的性能和响应速度。 代码实例是...
1. **Web页面集成**:MapXtreme为Web应用提供了丰富的控件集,包括`MapInfo.Web.UI.WebControls`和`MapInfo.WebControls`。前者用于Web页面的开发,后者则更多地用于服务器端处理。例如,在使用`MapInfo.Web.UI....
本培训教材将深入讲解如何利用MapXtreme for Java实现高效的GIS解决方案。 一、MapXtreme for Java基础 MapXtreme for Java的核心是其地图引擎,它能够处理各种地理数据,包括矢量图层、栅格图层和地形数据。该软件...
标题“MapXtreme for Java开发CS版之一”暗示了我们即将探讨的是关于使用MapXtreme这款GIS(地理信息系统)软件的Java版本进行客户端(Client-Side,CS)开发的相关知识。MapXtreme是Extremesoft公司(现为...
- MapXtreme可以与各种地图服务(如WMS、WFS)集成,获取和展示在线地图数据,也可以与GIS服务器(如ArcGIS Server)配合使用,进行数据交换和处理。 通过以上知识点的学习和实践,开发者可以利用MapXtreme for ...