Hibernate 无法使用从同一maven原型创建的两个SpringMVC webapps启动Tomcat服务器

Hibernate 无法使用从同一maven原型创建的两个SpringMVC webapps启动Tomcat服务器,hibernate,tomcat,spring-mvc,spring-security,Hibernate,Tomcat,Spring Mvc,Spring Security,我已经使用SpringMVCquickstart原型创建了两个SpringMVC应用程序(包括SpringMVC、SpringSecurity、hibernate),我可以在tomcat上单独运行每个应用程序,但不能一起运行 当我将这两个项目都添加到Tomcat上时,服务器将不会出现,我得到 Aug 30, 2013 8:14:48 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring Frame

我已经使用SpringMVCquickstart原型创建了两个SpringMVC应用程序(包括SpringMVC、SpringSecurity、hibernate),我可以在tomcat上单独运行每个应用程序,但不能一起运行

当我将这两个项目都添加到Tomcat上时,服务器将不会出现,我得到

Aug 30, 2013 8:14:48 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'appServlet'
然后下一行是红色文本中的错误,如下所示,然后服务器被终止

Exception in thread "main" 
我在logback.xml上启用了Spring日志级别进行调试,它编写了一组带有调试和信息的日志消息,但没有任何带有警告或错误的消息,显示对内部发生的情况的任何洞察

有没有人经过这件事并找到了解决办法

按建议添加日志

Sep 13, 2013 8:20:24 AM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Programs\Java\jdk1.7.0_21\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Programs/Java/jdk1.6.0_32/bin/../jre/bin/server;C:/Programs/Java/jdk1.6.0_32/bin/../jre/bin;C:/Programs/Java/jdk1.6.0_32/bin/../jre/lib/amd64;c:\Python27;C:\Programs\Java\jdk1.6.0_32\bin;C:\Programs\apache-maven-3.0.4\bin;c:\Programs\mongodb243\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Programs\eclipse-jee-juno -with-SpringToolSuit;;.
Sep 13, 2013 8:20:24 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:shows' did not find a matching property.
Sep 13, 2013 8:20:24 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:com.maha.science.web' did not find a matching property.
Sep 13, 2013 8:20:24 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-7080"]
Sep 13, 2013 8:20:24 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-7009"]
Sep 13, 2013 8:20:24 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 705 ms
Sep 13, 2013 8:20:25 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 13, 2013 8:20:25 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.25
Sep 13, 2013 8:20:31 AM org.apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath:   [com.maha.science.config.WebAppInitializer@c2854c7]
Sep 13, 2013 8:20:31 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Sep 13, 2013 8:20:35 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'appServlet1'
Exception in thread "main" 
文卡特

您需要为每个应用指定不同的根密钥

如果您使用的是XML配置,那么请使用Karthikenyan的方法,在每个web.XML中指定不同的值:

<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>thisisdistinctforeachwebapp</param-value>
</context-param>

文卡特

您需要为每个应用指定不同的根密钥

如果您使用的是XML配置,那么请使用Karthikenyan的方法,在每个web.XML中指定不同的值:

<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>thisisdistinctforeachwebapp</param-value>
</context-param>

HTH

经过一段时间的努力,这个问题终于得到了解决,我写了一篇文章,希望它能在类似情况下帮助其他人

在试验logback时,xml 提供了有关实际错误的更多信息

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1130)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:293)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
看起来webapp中有大量的hibernate、spring和其他库,所以我在服务器上添加了VM参数,如下所示

-XX:MaxPermSize=128m
双击服务器并打开启动配置,在VM参数部分添加上面的参数,这样做很神奇

我已经恢复了之前为appServlet提供唯一servlet名称的更改,并删除了唯一的WebApprotKey作为上下文参数,它仍然可以工作


总之,只要我们将XX:MaxPermSize=128m参数设置为服务器启动,我们就可以在一台tomcat服务器上运行从同一个maven quickstart创建的多个Web应用程序,而不会出现任何问题。

经过一段时间的努力,这个问题终于得到了解决,我写了一篇文章,希望它能在类似的情况下帮助其他人

在试验logback时,xml 提供了有关实际错误的更多信息

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1130)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:293)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
看起来webapp中有大量的hibernate、spring和其他库,所以我在服务器上添加了VM参数,如下所示

-XX:MaxPermSize=128m
双击服务器并打开启动配置,在VM参数部分添加上面的参数,这样做很神奇

我已经恢复了之前为appServlet提供唯一servlet名称的更改,并删除了唯一的WebApprotKey作为上下文参数,它仍然可以工作


总之,只要我们将XX:MaxPermSize=128m参数设置为服务器启动,我们就可以在一台tomcat服务器上运行从同一个maven quickstart创建的多个Web应用程序,而不会出现任何问题。

这两个应用程序是否具有相同的servlet名称?正在使用WebAppInitializer,是的,我看到两个项目上的DispacherServlet名称相同(appServlet)。部署两个具有相同servlet名称的应用程序会在tomcat中造成严重问题。尝试更改其中一个servlet的名称。在web.xml
webapprotkey app.root
中添加以下内容。每个应用程序的值都应该是唯一的。两个应用程序是否具有相同的servlet名称?正在使用WebAppInitializer,是的,我看到两个项目上的DispacherServlet名称相同(appServlet)。部署两个具有相同servlet名称的应用程序会在tomcat中造成严重问题。尝试更改其中一个servlet的名称。在web.xml
webapprotkey app.root
中添加以下内容。对于每个应用程序,该值应该是唯一的。感谢详细的回答,出于某种原因,我仍然在线程“main”中遇到异常快速启动包含spring security,也集成了hibernate,这可能是导致问题的原因吗?我没有看到任何错误消息,除了Thread main中的异常,我发布了问题中的日志。日志中的警告如何?否则,您需要获得有关异常根的更详细信息。检查Tomcat的日志以及应用程序的日志。感谢您的详细回答,出于某种原因,我仍然在线程“main”中遇到异常quickstart包含spring security,也集成了hibernate,这会导致问题吗?我没有看到任何错误消息,除了线程“main”中的异常,我发布了日志,我现在的问题是日志中的警告如何?否则,您需要获得有关异常根的更详细信息。检查Tomcat的日志以及应用程序的日志。