首页 / 浏览问题 / 云GIS / 问题详情
REST API requires mongo?
匿名
2017年05月29日

Does REST API require mongodb connection?

The following exception got during starting my application within REST API:

com.mongodb.MongoSocketOpenException: Exception opening socket
        at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongo-java-driver-3.4.2.jar!/:na]
        at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongo-java-driver-3.4.2.jar!/:na]
        at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongo-java-driver-3.4.2.jar!/:na]
        at java.lang.Thread.run(Unknown Source) [na:1.8.0_131]
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_131]
        at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[na:1.8.0_131]
        at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:1.8.0_131]
        at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:1.8.0_131]
        at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:1.8.0_131]
        at java.net.PlainSocketImpl.connect(Unknown Source) ~[na:1.8.0_131]
        at java.net.SocksSocketImpl.connect(Unknown Source) ~[na:1.8.0_131]
        at java.net.Socket.connect(Unknown Source) ~[na:1.8.0_131]
        at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongo-java-driver-3.4.2.jar!/:na]
        at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongo-java-driver-3.4.2.jar!/:na]
        ... 3 common frames omitted

The exception occurred when the dependency was introduced in pom.xml

		<dependency>
			<groupId>com.supermap.iserver</groupId>
			<artifactId>iserver-all</artifactId>
			<version>8.0.2</version>
		</dependency>

问题关闭原因: resolved

1个回答

    Please Google my answer below:

    只是使用iServer REST API(通过iServer JAVA API)是不依赖mongodb的,iServer REST API和JAVA API的关系请参考iServer帮助文档,或者这篇博客:http://blog.csdn.net/supermapsupport/article/details/70158940
    使用iServer JAVA API主要引用iServer-all-{version}.jar及其依赖包,如果只使用它来访问iServer的服务是无需MongoDB的,使用到MongoDB的地方是:打开本地(而不是iServer地图服务)MongoDB缓存。
    所以,需要根据你们具体使用来确认报错原因。

1,780EXP 2017年05月31日

我们的程序既没有调用mongodb也没有打开本地MongoDB缓存。我想应该可以断定iserver-all引入的iserver-all-8.0.2.jar及其依赖包中的程序尝试创建一个MongoDB connection。因此,可能的解决方案:

  • 注入设置以让其不尝试创建MongoDB connection?
  • 替换iserver-all为响应的artifactId,使其不包含无关依赖包?
  • 其他?
你们使用的框架是要查找iServer-all的所有依赖项,不管是否使用到?
这个需要你们自己解决,我不了解你们使用的框架。
引入iServer-all是要用com.supermap.services.providers.RestDataProvider,如此是否有恰当的artifactId而不是iServer-all?

我也不清楚这个Maven应该怎么配置,我只能告诉你,使用JAVA API只用来对接iServer发布的服务,最少需要引用这些包:
http://support.supermap.com.cn/product/search.aspx?querystr=JAVA%20API
即(包名的版本号视具体情况):

aliyun-sdk-oss-2.0.6.jar
cal10n-api-0.7.7.jar
commons-io-2.5.jar
commons-lang-2.6.jar
commons-lang3-3.5.jar
ehcache-2.10.3.jar
fastjson-1.2.8.jar
iserver-all-8.1.1-14511.jar
jsr311-api-1.1.1.jar
log4j-1.2.17.jar
org.restlet.ext.json-2.2.3.jar
org.restlet.lib.org.json-2.0.jar
org.restlet-2.2.3.jar
rest-sdk-8.1.1-14511.jar
service-model-8.1.1-14511.jar
slf4j-api-1.7.21.jar
slf4j-ext-1.7.21.jar
slf4j-log4j12-1.7.21.jar


就是这篇博客
http://blog.csdn.net/supermapsupport/article/details/70158940
里的使用JAVA API示例工程里引用的那些包。

...