无法使用cloudfoundry插件部署grails应用程序

时间:2012-05-18 19:15:56

标签: grails grails-plugin cloudfoundry

" grails cf-push"导致下面列出的错误。有没有办法使用cloudfoundry插件来开始新鲜"。我宁愿不在MySQL数据库和MongoDB数据库中丢失我的测试数据。

May 18, 2012 6:31:26 PM org.apache.catalina.core.StandardContext start

SEVERE:错误listenerStart 2012年5月18日下午6:31:26 org.apache.catalina.core.StandardContext start 严重:由于先前的错误,Context []启动失败 2012年5月18日下午6:31:26 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap 严重:Web应用程序[]使用[org.codehaus.groovy.reflection.ClassInfo.ThreadLocalMapHandler]类型的键创建了一个ThreadLocal(值[org.codehaus.groovy.reflection.ClassInfo$ThreadLocalMapHandler@6434d75f])和类型的值[java.lang.ref.SoftReference](值[java.lang.ref.SoftReference@4927d15e])但在Web应用程序停止时无法将其删除。这很可能造成内存泄漏。 2012-05-18 18:31:26,379 [main] ERROR context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建名为' grailsApplication'的bean时出错。在ServletContext资源[/WEB-INF/applicationContext.xml]中定义:init方法的调用失败;嵌套异常是java.lang.NoClassDefFoundError:org / apache / http / conn / ClientConnectionManager     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)     在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:294)     在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)     在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)     在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)     在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)     在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)     在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)     at org.codehaus.groovy.grails.web.context.GrailsContextLoader.initWebApplicationContext(GrailsContextLoader.java:66)     在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)     在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)     在org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)     在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)     在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)     在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)     在org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)     在org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)     在org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)     在org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)     在org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)     在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)     在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)     在org.apache.catalina.core.StandardHost.start(StandardHost.java:840)     在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)     在org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)     在org.apache.catalina.core.StandardService.start(StandardService.java:525)     在org.apache.catalina.core.StandardServer.start(StandardServer.java:754)     在org.apache.catalina.startup.Catalina.start(Catalina.java:595)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     在java.lang.reflect.Method.invoke(Method.java:597)     在org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)     在org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 引起:java.lang.NoClassDefFoundError:org / apache / http / conn / ClientConnectionManager     at java.lang.Class.forName(Class.java:169)     at java.lang.Class.forName(Class.java:247) 引起:java.lang.ClassNotFoundException:org.apache.http.conn.ClientConnectionManager     ......还有2个 因为上下文停止而停止Tomcat。

stderr.log是: 2012年5月18日下午6:41:00 org.apache.coyote.http11.Http11Protocol init 信息:在http-31903上初始化Coyote HTTP / 1.1 2012年5月18日下午6:41:00 org.apache.catalina.startup.Catalina加载 信息:初始化在403毫秒内处理 2012年5月18日下午6:41:00 org.apache.catalina.realm.JAASRealm setContainer 信息:设置JAAS应用程序名称Catalina 2012年5月18日下午6:41:00 org.apache.catalina.core.StandardService开始 信息:开始服务Catalina 2012年5月18日下午6:41:00 org.apache.catalina.core.StandardEngine start 信息:启动Servlet引擎:Apache Tomcat / 6.0.35 2012年5月18日下午6:41:00 org.apache.catalina.startup.HostConfig deployDirectory 信息:部署Web应用程序目录ROOT 2012年5月18日下午6:41:02 org.apache.catalina.core.StandardContext start 严重:错误listenerStart 2012年5月18日下午6:41:02 org.apache.catalina.core.StandardContext start 严重:由于先前的错误,Context []启动失败 2012年5月18日下午6:41:02 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap 严重:Web应用程序[]使用[org.codehaus.groovy.reflection.ClassInfo.ThreadLocalMapHandler]类型的键(值org.codehaus.groovy.reflection.ClassInfo$ThreadLocalMapHandler@6d1576d7)创建了一个ThreadLocal,其值为[ java.lang.ref.SoftReference](值[java.lang.ref.SoftReference@1c2d5534])但在Web应用程序停止时无法将其删除。这很可能会造成内存泄漏。

2 个答案:

答案 0 :(得分:0)

如果您执行cf-update或删除应用程序并重新运行cf-push,它将询问您是否要使用现有的MySQL和Mongo服务。如果您这样做,那么没有任何数据丢失 - 只需在重新运行cf-push之前不要删除服务以及应用程序。

确保您使用'grails prod cf-push',因为这将使用生产配置 - 如果您运行'grails cf-push'就会显示警告。

根本原因是来自HttpClient库的CNFE。看看你是否可以在本地工作,它应该可以在Cloud Foundry上正常工作,因为你只需要推送一个war文件。

答案 1 :(得分:0)

我发现了问题。我添加了一个使用来自第三方软件包的外部jar的服务。第三方软件包附带2个jar:一个包含依赖项,另一个没有依赖项。我将第三方zip解压缩到我的类路径中,但只包含了我的lib目录中没有依赖项的zip。当我切换到使用具有依赖关系的jar时,部署了应用程序。

以下事情使得这个简单问题难以解决:

  1. 错误日志只是声明有“grailsApplication”出现问题并且找不到类
  2. 使用run-app在我的工作站上运行应用程序,
  3. 应用程序无法在我的工作站上使用run-运行战争(无论是否提供正确的罐子),
  4. 睡眠不足!

关于下一期!