将 grails 2.5.5 应用程序部署到 tomcat 7
Deploy grails 2.5.5 app to tomcat 7
我正在尝试将 Grails 2.5.5 应用程序部署到 Tomcat 7(运行 在 Ubuntu 服务器上)。我在 Intellij 14 中使用命令 war -stacktrace -verbose
来创建 war 文件。在我的 target
目录中,它成功地创建了 war 文件,我们称它为 myapp-0.1.war
。然后在终端中(我正在使用 Linux Mint)我使用以下命令将其复制到我的服务器(我在下面的示例中替换了我的详细信息,如 mypcusername
、myserverusername
和123.123.123.123
)
rsync -rtvW --delete /home/mypcusername/NetbeansProjects/myapp/target/myapp-0.1.war/ myserverusername@123.123.123.123:/home/myserverusername/myapp-0.1.war/
上面命令的NetbeansProjects
部分也不用担心,它最初是一个Netbeans项目。然后我使用 sudo cp -a myapp-0.1.war/ /var/lib/tomcat7/webapps/
后跟 sudo rm -R ROOT
来删除原来的 ROOT
目录。然后我 运行 sudo service tomcat7 restart
这就是问题所在。日志给了我以下内容:
Sep 03, 2017 10:23:39 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:39 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Sep 03, 2017 10:23:39 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:39 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:43 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:43 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1734 ms
Sep 03, 2017 10:23:43 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 03, 2017 10:23:43 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52 (Ubuntu)
Sep 03, 2017 10:23:43 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOT
Sep 03, 2017 10:24:18 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined
Sep 03, 2017 10:24:18 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined
2017-09-03 10:24:26,325 [localhost-startStop-1] ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
... 5 more
Caused by: java.lang.UnsupportedClassVersionError: grails/plugin/cache/CacheConfigArtefactHandler : Unsupported major.minor version 52.0 (unable to load class grails.plugin.cache.CacheConfigArtefactHandler)
at CacheGrailsPlugin.<init>(CacheGrailsPlugin.groovy:49)
... 5 more
2017-09-03 10:24:26,330 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
... 5 more
Caused by: java.lang.UnsupportedClassVersionError: grails/plugin/cache/CacheConfigArtefactHandler : Unsupported major.minor version 52.0 (unable to load class grails.plugin.cache.CacheConfigArtefactHandler)
at CacheGrailsPlugin.<init>(CacheGrailsPlugin.groovy:49)
... 5 more
2017-09-03 10:24:26,332 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing Grails: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
... 5 more
Caused by: java.lang.UnsupportedClassVersionError: grails/plugin/cache/CacheConfigArtefactHandler : Unsupported major.minor version 52.0 (unable to load class grails.plugin.cache.CacheConfigArtefactHandler)
at CacheGrailsPlugin.<init>(CacheGrailsPlugin.groovy:49)
... 5 more
Sep 03, 2017 10:24:26 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Sep 03, 2017 10:24:26 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors
Sep 03, 2017 10:24:26 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:24:26 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 43228 ms
编辑 感谢 suricatta,我按照他的指示创建并关闭了所有目录,这些目录使所有 warning 都消失了。我正在更新日志。
自从最初问这个问题后,我意识到我实际上从未将 .war 文件复制到我的服务器,因为当我尝试提取文件时,它会告诉我类似 "you can't extract a directory" 的信息,然后我注意到每次我使用 rsync -rtvW --delete /home/mypcusername/NetbeansProjects/myapp/target/myapp-0.1.war/ myserverusername@123.123.123.123:/home/myserverusername/myapp-0.1.war/
时它都会创建一个名为 myapp-0.1.war 的空目录。
然后我使用 scp /home/mypcusername/NetBeansProjects/myapp/target/myapp-0.1.war myserverusername@41.185.91.194:/home/myserverusername
,它实际上将 war 复制到我的服务器。这次在 /var/lib/tomcat7/webapps/ROOT 中提取实际文件后,我重新启动了 Tomcat,然后给了我上面的日志。当我转到 123.123.123.123:8080 时,我得到一个空白页面,其中有一个 javascript 错误提示 GET http://123.123.123.123:8080/ 404 (Not Found)
我尝试了不同的变体,例如 <ip>:8080/myapp
和 <ip>:8080/myapp/home
都得到了相同的结果.
我查看了 this 答案,但这似乎并不适用于我,因为我的 applicationContext.xml 中没有与该问题的 OP 相同的值。让我知道我是否需要 post 我的 applicationContext.xml.
我开始了一个新项目,将我试图部署的项目中的所有东西复制到新项目中并部署它,这解决了我遇到的问题。
我正在尝试将 Grails 2.5.5 应用程序部署到 Tomcat 7(运行 在 Ubuntu 服务器上)。我在 Intellij 14 中使用命令 war -stacktrace -verbose
来创建 war 文件。在我的 target
目录中,它成功地创建了 war 文件,我们称它为 myapp-0.1.war
。然后在终端中(我正在使用 Linux Mint)我使用以下命令将其复制到我的服务器(我在下面的示例中替换了我的详细信息,如 mypcusername
、myserverusername
和123.123.123.123
)
rsync -rtvW --delete /home/mypcusername/NetbeansProjects/myapp/target/myapp-0.1.war/ myserverusername@123.123.123.123:/home/myserverusername/myapp-0.1.war/
上面命令的NetbeansProjects
部分也不用担心,它最初是一个Netbeans项目。然后我使用 sudo cp -a myapp-0.1.war/ /var/lib/tomcat7/webapps/
后跟 sudo rm -R ROOT
来删除原来的 ROOT
目录。然后我 运行 sudo service tomcat7 restart
这就是问题所在。日志给了我以下内容:
Sep 03, 2017 10:23:39 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:39 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Sep 03, 2017 10:23:39 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:39 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:43 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:23:43 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1734 ms
Sep 03, 2017 10:23:43 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 03, 2017 10:23:43 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52 (Ubuntu)
Sep 03, 2017 10:23:43 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOT
Sep 03, 2017 10:24:18 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined
Sep 03, 2017 10:24:18 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined
2017-09-03 10:24:26,325 [localhost-startStop-1] ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
... 5 more
Caused by: java.lang.UnsupportedClassVersionError: grails/plugin/cache/CacheConfigArtefactHandler : Unsupported major.minor version 52.0 (unable to load class grails.plugin.cache.CacheConfigArtefactHandler)
at CacheGrailsPlugin.<init>(CacheGrailsPlugin.groovy:49)
... 5 more
2017-09-03 10:24:26,330 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
... 5 more
Caused by: java.lang.UnsupportedClassVersionError: grails/plugin/cache/CacheConfigArtefactHandler : Unsupported major.minor version 52.0 (unable to load class grails.plugin.cache.CacheConfigArtefactHandler)
at CacheGrailsPlugin.<init>(CacheGrailsPlugin.groovy:49)
... 5 more
2017-09-03 10:24:26,332 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing Grails: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [CacheGrailsPlugin]!
... 5 more
Caused by: java.lang.UnsupportedClassVersionError: grails/plugin/cache/CacheConfigArtefactHandler : Unsupported major.minor version 52.0 (unable to load class grails.plugin.cache.CacheConfigArtefactHandler)
at CacheGrailsPlugin.<init>(CacheGrailsPlugin.groovy:49)
... 5 more
Sep 03, 2017 10:24:26 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Sep 03, 2017 10:24:26 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors
Sep 03, 2017 10:24:26 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 03, 2017 10:24:26 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 43228 ms
编辑 感谢 suricatta,我按照他的指示创建并关闭了所有目录,这些目录使所有 warning 都消失了。我正在更新日志。
自从最初问这个问题后,我意识到我实际上从未将 .war 文件复制到我的服务器,因为当我尝试提取文件时,它会告诉我类似 "you can't extract a directory" 的信息,然后我注意到每次我使用 rsync -rtvW --delete /home/mypcusername/NetbeansProjects/myapp/target/myapp-0.1.war/ myserverusername@123.123.123.123:/home/myserverusername/myapp-0.1.war/
时它都会创建一个名为 myapp-0.1.war 的空目录。
然后我使用 scp /home/mypcusername/NetBeansProjects/myapp/target/myapp-0.1.war myserverusername@41.185.91.194:/home/myserverusername
,它实际上将 war 复制到我的服务器。这次在 /var/lib/tomcat7/webapps/ROOT 中提取实际文件后,我重新启动了 Tomcat,然后给了我上面的日志。当我转到 123.123.123.123:8080 时,我得到一个空白页面,其中有一个 javascript 错误提示 GET http://123.123.123.123:8080/ 404 (Not Found)
我尝试了不同的变体,例如 <ip>:8080/myapp
和 <ip>:8080/myapp/home
都得到了相同的结果.
我查看了 this 答案,但这似乎并不适用于我,因为我的 applicationContext.xml 中没有与该问题的 OP 相同的值。让我知道我是否需要 post 我的 applicationContext.xml.
我开始了一个新项目,将我试图部署的项目中的所有东西复制到新项目中并部署它,这解决了我遇到的问题。