2012-08-27 47 views
3

当我尝试部署具有的MongoDB(hello-spring-mongodb)示例Java Spring应用程序,我得到下面粘贴的错误,这表明MongoDB的服务失败绑定。我在所有自己的应用程序中都收到了这个错误,从命令行和STS 3.0.0部署了这两个错误。关键的错误是:Cloudfoundry春MongoDB的示例应用程序部署失败

错误创建名为“mongoDbFactory”豆:init方法的调用失败;嵌套的例外是 org.cloudfoundry.runtime.env.CloudServiceException:预期类org.cloudfoundry.runtime.env.MongoServiceInfo 1个型服务,但found0

完全跟踪:

Bind existing services to 'hello-weeels'? [yN]: 
Create services to bind to 'hello-weeels'? [yN]: y 
1: mongodb 
2: mysql 
3: postgresql 
4: rabbitmq 
5: redis 
What kind of service?: 1 
Specify the name of the service [mongodb-9c56b]: 
Create another? [yN]: n 
Would you like to save this configuration? [yN]: y 
Manifest written to manifest.yml. 
Creating Application: OK 
Creating Service [mongodb-9c56b]: OK 
Binding Service [mongodb-9c56b]: OK 
Uploading Application: 
    Checking for available resources: OK 
    Processing resources: OK 
    Packing application: OK 
    Uploading (3K): OK 
Push Status: OK 
Staging Application 'hello-weeels': OK           
Starting Application 'hello-weeels': .. 
Error: Application [hello-weeels] failed to start, logs information below. 

====> /logs/stderr.log <==== 

Aug 27, 2012 9:17:24 PM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-54519 
Aug 27, 2012 9:17:24 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 392 ms 
Aug 27, 2012 9:17:24 PM org.apache.catalina.realm.JAASRealm setContainer 
INFO: Set JAAS app name Catalina 
Aug 27, 2012 9:17:24 PM org.apache.catalina.core.StandardService start 
INFO: Starting service Catalina 
Aug 27, 2012 9:17:24 PM org.apache.catalina.core.StandardEngine start 
INFO: Starting Servlet Engine: Apache Tomcat/6.0.35 
Aug 27, 2012 9:17:24 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory ROOT 
Aug 27, 2012 9:17:24 PM org.cloudfoundry.reconfiguration.CloudAutoStagingBeanFactoryPostProcessor usingCloudService 
INFO: Found an instance of org.cloudfoundry.runtime.service.AbstractCloudServiceFactory. Autostaging will be skipped. 
Aug 27, 2012 9:17:25 PM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
Aug 27, 2012 9:17:25 PM org.apache.catalina.core.StandardContext start 
SEVERE: Context [] startup failed due to previous errors 

====> /logs/stdout.log <==== 

INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started 
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Mon Aug 27 21:17:24 UTC 2012]; root of context hierarchy 
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [root-context.xml] 
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [META-INF/cloud/cloudfoundry-auto-reconfiguration-context.xml] 
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.s[email protected]c292cb2: defining beans [mongoTemplate,mongoDbFactory,__appCloudJpaPostgreSQLReplacementProperties,__appCloudJpaMySQLReplacementProperties,__appCloudHibernatePostgreSQLReplacementProperties,__appCloudHibernateMySQLReplacementProperties,org.cloudfoundry.reconfiguration.CloudAutoStagingBeanFactoryPostProcessor#0]; root of factory hierarchy 
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.s[email protected]c292cb2: defining beans [mongoTemplate,mongoDbFactory,__appCloudJpaPostgreSQLReplacementProperties,__appCloudJpaMySQLReplacementProperties,__appCloudHibernatePostgreSQLReplacementProperties,__appCloudHibernateMySQLReplacementProperties,org.cloudfoundry.reconfiguration.CloudAutoStagingBeanFactoryPostProcessor#0]; root of factory hierarchy 
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoTemplate' defined in class path resource [root-context.xml]: Cannot resolve reference to bean 'mongoDbFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoDbFactory': Invocation of init method failed; nested exception is org.cloudfoundry.runtime.env.CloudServiceException: Expected 1 service of class org.cloudfoundry.runtime.env.MongoServiceInfo type, but found0 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630) 
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035) 

回答

0

你改变预期的mongo db的名字?问候,弹簧mondgodb应用程序是configured要寻找一个名为“你好”(第二个构造SimpleMongoDbFactory的ARG)分贝。也许尝试更新此属性以反映您的mongo db的名称并重新推送。

希望这有助于

克里斯

0

的HELLO-弹簧MongoDB的运行,而无需更改配置。它在我的CF安装上成功部署。从目标目录

C:\eclipseWork\Indigo\hello-spring-mongodb\target>vmc push hello-spring-mongodb 
Would you like to deploy from the current directory? [Yn]: 
Detected a Java SpringSource Spring Application, is this correct? [Yn]: 
Application Deployed URL [hello-spring-mongodb.vcap.me]: 
Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]: 
How many instances? [1]: 
Bind existing services to 'hello-spring-mongodb'? [yN]: y 
1: mongodb-86f0e 
Which one?: 1 
Create services to bind to 'hello-spring-mongodb'? [yN]: 
Would you like to save this configuration? [yN]: 
Creating Application: OK 
Binding Service [mongodb-86f0e]: OK 
Uploading Application: 
    Checking for available resources: OK 
    Processing resources: OK 
    Packing application: OK 
    Uploading (2K): OK 
Push Status: OK 
Staging Application 'hello-spring-mongodb': OK 
Starting Application 'hello-spring-mongodb': OK 

你可以尝试先创建MongoDB的服务,然后按应用vmc push hello-sping-mongodb:首先,我创建了MongoDB的服务:

vmc create-service mongoDB 

,然后我跑?

+0

这是令人费解。我试图先创建MongoDB服务,试图命名它的各种东西,尝试了我能想到的一切。我在OSX上。有效的一件事是删除使用Spring配置文件,并让Cloud Foundry自动重新配置我用于本地测试的MongoDbFactory bean。 – Ben

+0

你能分享你的应用程序代码吗? –

+0

我没有改变一行 - 直接从上面链接的github repo中直接克隆。 – Ben

0

看来,云廓线结构无根-context.xml中定义。再次检查您是否有以下配置:

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <constructor-arg ref="mongoDbFactory"/>  
</bean> 


<beans profile="default"> 
    <mongo:db-factory id="mongoDbFactory" dbname="pwdtest" host="127.0.0.1" port="27017" username="mongo_user" password="passwd"/> 
</beans> 

<beans profile="cloud"> 
    <cloud:mongo-db-factory id="mongoDbFactory"/> 
</beans> 
+0

我真的很感谢你对这个问题的重视,但是我再一次从repo中克隆 - 这正是我的root-context.xml的样子。似乎我可能不是唯一一个得到这个错误: http:// stackoverflow。com/questions/12132688/sts-3-0-0-with-spring-roo-1-2-2-can-deploy-to-cloudfoundry -with-mongodb-servi – Ben

+0

重现此错误的唯一方法是将在评论云概况。 –

5

替换:

<beans profile="default"> 
    <mongo:db-factory id="mongoDbFactory" dbname="pwdtest" host="127.0.0.1" port="27017" username="mongo_user" password="passwd"/> 
</beans> 

<beans profile="cloud"> 
    <cloud:mongo-db-factory id="mongoDbFactory"/> 
</beans> 

有了:

<mongo:db-factory 
    id="mongoDbFactory" 
    dbname="${mongo.name}" 
    host="${mongo.host}" 
    port="27017" 
    username="${mongo.username}" 
    password="${mongo.password}" /> 

...和cloudfoundry自动重新配置将做的工作正常。如果仍有问题,请在“Spring资源管理器视图”>“属性”中右键单击项目,然后启用“Bean验证器”。

0

确保服务名称相匹配,并更新cloudfoundry运行时版本。看到我对另一个问题的回答有同样的例外here

相关问题