我正在使用正确的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
答案 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!