远程neo4j连接权限被拒绝错误

时间:2016-04-25 14:39:52

标签: neo4j spring-data-neo4j-4 neo4j-ogm

我可以从localhost到达neo4j服务器并成功运行查询,但我无法从远程计算机运行查询。在远程计算机上,我可以从浏览器访问neo4j。 http://x.x.x.x:7474让我进入neo4j网络界面。但是当我从spring执行查询时,它会给出permision denied错误。查询很简单:

User u = new User();
u.setName("test");
session.save(u);

ogm.properties:

driver=org.neo4j.ogm.drivers.http.driver.HttpDriver
URI=http://neo4j:1234@x.x.x.x:7474

完整堆栈跟踪是:

2016-04-25 17:37:31.531  INFO 6040 --- [tp2116224318-27] o.n.o.drivers.http.request.HttpRequest   : Thread 27: request {"statements":[{"statement":"UNWIND {rows} as row CREATE (n:`User`) SET n=row.props RETURN row.nodeRef as nodeRef, ID(n) as nodeId","parameters":{"rows":[{"nodeRef":-83203329,"props":{"name":"test"}}]},"resultDataContents":["row"],"includeStats":false}]}
2016-04-25 17:37:31.531  INFO 6040 --- [tp2116224318-27] o.n.o.drivers.http.request.HttpRequest   : Thread 27: POST http://neo4j:1234@x.x.x.x:7474/db/data/transaction/commit HTTP/1.1
2016-04-25 17:37:31.533  INFO 6040 --- [tp2116224318-27] o.apache.http.impl.execchain.RetryExec   : I/O exception (java.net.SocketException) caught when processing request to {}->http://x.x.x.x:7474: Permission denied: connect
2016-04-25 17:37:31.534  INFO 6040 --- [tp2116224318-27] o.apache.http.impl.execchain.RetryExec   : Retrying request to {}->http://x.x.x.x:7474
2016-04-25 17:37:31.535  INFO 6040 --- [tp2116224318-27] o.apache.http.impl.execchain.RetryExec   : I/O exception (java.net.SocketException) caught when processing request to {}->http://x.x.x.x:7474: Permission denied: connect
2016-04-25 17:37:31.535  INFO 6040 --- [tp2116224318-27] o.apache.http.impl.execchain.RetryExec   : Retrying request to {}->http://x.x.x.x:7474
2016-04-25 17:37:31.537  INFO 6040 --- [tp2116224318-27] o.apache.http.impl.execchain.RetryExec   : I/O exception (java.net.SocketException) caught when processing request to {}->http://x.x.x.x:7474: Permission denied: connect
2016-04-25 17:37:31.537  INFO 6040 --- [tp2116224318-27] o.apache.http.impl.execchain.RetryExec   : Retrying request to {}->http://x.x.x.x:7474
2016-04-25 17:37:31.538  WARN 6040 --- [tp2116224318-27] o.n.o.drivers.http.request.HttpRequest   : Thread 27: Caught IOException : Permission denied: connect
2016-04-25 17:37:31.543  WARN 6040 --- [tp2116224318-27] o.eclipse.jetty.servlet.ServletHandler   : 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.neo4j.ogm.exception.ResultProcessingException: Could not obtain new Transaction: 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:980) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[javax.servlet-api-3.1.0.jar:3.1.0]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:224) ~[websocket-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) [jetty-security-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.Server.handle(Server.java:499) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) [jetty-io-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.15.v20160210.jar:9.2.15.v20160210]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.15.v20160210.jar:9.2.15.v20160210]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
Caused by: org.neo4j.ogm.exception.ResultProcessingException: Could not obtain new Transaction: 
    at org.neo4j.ogm.drivers.http.driver.HttpDriver.newTransactionUrl(HttpDriver.java:138) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    at org.neo4j.ogm.drivers.http.driver.HttpDriver.newTransaction(HttpDriver.java:87) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    at org.neo4j.ogm.session.transaction.DefaultTransactionManager.openTransaction(DefaultTransactionManager.java:57) ~[neo4j-ogm-core-2.0.1.jar:na]
    at org.neo4j.ogm.session.delegates.TransactionsDelegate.beginTransaction(TransactionsDelegate.java:37) ~[neo4j-ogm-core-2.0.1.jar:na]
    at org.neo4j.ogm.session.Neo4jSession.beginTransaction(Neo4jSession.java:380) ~[neo4j-ogm-core-2.0.1.jar:na]
    at org.neo4j.ogm.session.request.RequestExecutor.executeSave(RequestExecutor.java:68) ~[neo4j-ogm-core-2.0.1.jar:na]
    at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:70) ~[neo4j-ogm-core-2.0.1.jar:na]
    at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:43) ~[neo4j-ogm-core-2.0.1.jar:na]
    at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:364) ~[neo4j-ogm-core-2.0.1.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_66]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_66]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_66]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_66]
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) ~[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at com.sun.proxy.$Proxy63.save(Unknown Source) ~[na:na]
    at com.rest.controller.HomeController.index(HomeController.java:56) ~[bin/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_66]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_66]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_66]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_66]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    ... 37 common frames omitted
Caused by: org.neo4j.ogm.exception.ResultProcessingException: Failed to execute request: 
    at org.neo4j.ogm.drivers.http.driver.HttpDriver.executeHttpRequest(HttpDriver.java:119) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    at org.neo4j.ogm.drivers.http.driver.HttpDriver.newTransactionUrl(HttpDriver.java:133) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    ... 71 common frames omitted
Caused by: org.neo4j.ogm.exception.ConnectionException: Error connecting to remote graph over HTTP
    at org.neo4j.ogm.drivers.http.request.HttpRequest.execute(HttpRequest.java:261) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    at org.neo4j.ogm.drivers.http.driver.HttpDriver.executeHttpRequest(HttpDriver.java:94) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    ... 72 common frames omitted
Caused by: java.net.SocketException: Permission denied: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[na:1.8.0_66]
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) ~[na:1.8.0_66]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_66]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_66]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_66]
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_66]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_66]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_66]
    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:74) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) ~[httpclient-4.5.1.jar:4.5.1]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107) ~[httpclient-4.5.1.jar:4.5.1]
    at org.neo4j.ogm.drivers.http.request.HttpRequest.execute(HttpRequest.java:227) ~[neo4j-ogm-http-driver-2.0.1.jar:na]
    ... 73 common frames omitted

neo4j-server.properties

#***************************************************************
# Server configuration
#***************************************************************

# Require (or disable the requirement of) auth to access Neo4j
dbms.security.auth_enabled=true
dbms.security.allow_outgoing_browser_connections=true
#
# HTTP Connector
#

# http port (for all data, administrative, and UI access)
org.neo4j.server.webserver.port=7474

# Let the webserver only listen on the specified IP. Default is localhost (only
# accept local connections). Uncomment to allow any connection. Please see the
# security section in the neo4j manual before modifying this.
org.neo4j.server.webserver.address=0.0.0.0

#
# HTTPS Connector
#

# Turn https-support on/off
#org.neo4j.server.webserver.https.enabled=true

# https port (for all data, administrative, and UI access)
#org.neo4j.server.webserver.https.port=7473

# Certificate location (auto generated if the file does not exist)
#dbms.security.tls_certificate_file=conf/ssl/snakeoil.cert

# Private key location (auto generated if the file does not exist)
#dbms.security.tls_key_file=conf/ssl/snakeoil.key

# Internally generated keystore (don't try to put your own
# keystore there, it will get deleted when the server starts)
#org.neo4j.server.webserver.https.keystore.location=data/keystore

#*****************************************************************
# Administration client configuration
#*****************************************************************


# Comma separated list of JAX-RS packages containing JAX-RS resources, one
# package name for each mountpoint. The listed package names will be loaded
# under the mountpoints specified. Uncomment this line to mount the
# org.neo4j.examples.server.unmanaged.HelloWorldResource.java from
# neo4j-examples under /examples/unmanaged, resulting in a final URL of
# http://localhost:${org.neo4j.webserver.port}/examples/unmanaged/helloworld/{nodeId}
#org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.examples.server.unmanaged=/examples/unmanaged

#*****************************************************************
# HTTP logging configuration
#*****************************************************************

# HTTP logging is disabled. HTTP logging can be enabled by setting this
# property to 'true'.
org.neo4j.server.http.log.enabled=true

# Logging policy file that governs how HTTP log output is presented and
# archived. Note: changing the rollover and retention policy is sensible, but
# changing the output format is less so, since it is configured to use the
# ubiquitous common log format
org.neo4j.server.http.log.config=D:/neo4jdata/neo4j-http-logging.xml
dbms.querylog.filename=D:/neo4jdata/queries.log

1 个答案:

答案 0 :(得分:1)

我不认为这是'neo4j'问题。这看起来更像防火墙相关的异常,因为java.net.SocketException: Permission denied: connect可能意味着有一个防火墙阻止你对端口7474的请求。是的我知道你可以从你的浏览器连接好但是neo4j / apache HttpClient正在内部打开java.net套接字它被封锁了。其他用户在使用java.net套接字时遇到类似问题,具体取决于防火墙设置,使用的java版本,操作系统版本等等。

尝试使用java.net socket到http://x.x.x.x:7474或使用Apache HttpClient打开直接连接,看看是否仍然得到相同的异常。这应该告诉你spring数据neo4j lib是否是原因。

请参阅这些问题/答案以进一步解决问题:

Random UnreachableBrowserException when running Selenium tests

另见:

http://jonathangiles.net/blog/?p=1126

相关问题