Heroku上的Neo4j REST网址“错误401未经授权”

时间:2013-03-07 00:37:19

标签: heroku neo4j spring-data-neo4j

我正在使用正确的NEO4J_URL环境变量,如heroku config所示。 如果我通过浏览器使用相同的neo4j url,它工作正常(没有auth失败)。但是我的应用程序无法启动heroku下面的错误。 (我使用的是spring-data-neo4j)

网址看起来像http://username:password@123456ac6.hosted.neo4j.org:1234/db/data/。最后在没有'/ db / data'的情况下尝试,也可以使用和不使用尾部斜杠。没有帮助。

如果有人已经面对/解决了这个问题,请提供帮助。服务器启动时的堆栈跟踪:

←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m Caused by:
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.index.RestIndexManager.existsForNodes(RestIndexManager.java:45)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m java.lang.RuntimeException: Error reading as JSON '<html>|<head>|<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>|<tit
le>Error 401 UNAUTHORIZED</title>|</head>|<body><h2>HTTP ERROR 401</h2>|<p>Problem accessing /db/data/index/node. Reason:|<pre>    UNAUTHORIZED</pre></p><hr /><i><small>Powered by Jetty://</
small></i><br/>                                                |<br/>                                                |<br/>                                                |<br/>
                                   |<br/>                                                |<br/>                                                |<br/>
       |<br/>                                                |<br/>                                                |<br/>                                                |<br/>
                                 |<br/>                                                |<br/>
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.util.JsonHelper.jsonToSingleValue(JsonHelper.java:62)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.RequestResult.toEntity(RequestResult.java:114)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m                      |<br/>                                                |<br/>                                                |<br/>
                                        |<br/>                                                |<br/>                                                |<br/>
            |<br/>                                                ||</body>|</html>|'
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.RequestResult.toMap(RequestResult.java:120)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.util.JsonHelper.readJson(JsonHelper.java:57)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.index.RestIndexManager.indexInfo(RestIndexManager.java:50)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory.chooseStrategy(TypeRepresentationStrategyFactor
y.java:56)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.neo4j.rest.graphdb.ExecutingRestAPI.indexInfo(ExecutingRestAPI.java:327)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$36bc2a37.CGLIB$typeRepresentationStrategyFactory$7(<generated>)
←[36m2013-03-06T23:44:31+00:00 app[web.1]:←[0m  at org.springframework.data.neo4j.rest.SpringRestGraphDatabase.getIndex(SpringRestGraphDatabase.java:100

1 个答案:

答案 0 :(得分:1)

正如@MichaelHunger所建议的,我使用了其他SpringRestGraphDatabase构造函数,它将用户名和密码作为单独的参数,现在可以访问neo数据库。

我早期的春季背景看起来像这样

<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
    <constructor-arg index="0" value="${NEO4J_URL}" />
</bean>

现在我将其更改为如下所示,一切正常!在这里,我通过两个额外的环境变量提供用户名和密码。是的,在heroku上设置用户名和密码环境变量方面有一些手动工作(或者更不用说,您可以在应用程序中对其进行硬编码)。这是添加neo4j heroku附加组件后自动可用的NEO4J_URL环境变量的补充。

<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
    <constructor-arg index="0" value="${NEO4J_URL}" />
    <constructor-arg index="1" value="${NEO4J_USERNAME}" />
    <constructor-arg index="2" value="${NEO4J_PASSWORD}" />
</bean>

谢谢@MichaelHunger!