使用实用程序模块部署复合项目与Hibernate 5和Spring 4在Eclipse中的Tomcat失败 [英] Deployment Compound Projects using Utility Module With Hibernate 5 and Spring 4 in Eclipse on Tomcat failed

查看:197
本文介绍了使用实用程序模块部署复合项目与Hibernate 5和Spring 4在Eclipse中的Tomcat失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我决定将工作分解为Eclipse Mars(Neon)中的更多模块。一个模块可部署为WAR REST服务。使用集成的Tomcat(版本8.0.41)来使用:右键单击服务器视图中的服务器 - >添加和删除原因:

  15:42:21.104 [localhost-startStop-1] INFO osweb.context.ContextLoader  - 根WebApplicationContext:初始化启动
15:42:21.123 [localhost-startStop-1] INFO oswcs AnnotationConfigWebApplicationContext - 刷新根WebApplicationContext:启动日期[星期四29 15:42:21 CEST 2017];上下文层次结构
15:42:21.201 [localhost-startStop-1] INFO oswcsAnnotationConfigWebApplicationContext - 注册注释类:[class com.deepam.spring.config.AppRestConfig]
15:42:21.218 [ localhost-startStop-1] ERROR osweb.context.ContextLoader - 上下文初始化失败
java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy
at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser .java:724)
at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation。 AnnotationParser.parseAnnotations(AnnotationParser.java :72)
在java.lang.Class.createAnnotationData(Class.java:3521)
在java.lang.Class.annotationData(Class.java:3510)
在java.lang。 Class.getAnnotations(Class.java:3446)
在org.springframework.core.type.StandardAnnotationMetadata。< init>(StandardAnnotationMetadata.java:68)
在org.springframework.beans.factory.annotation .AnnotatedGenericBeanDefinition。< init>(AnnotatedGenericBeanDefinition.java:56)
在org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:167)
在org.springframework.context.annotation。 AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:142)
在org.springframework.context.annotation.AnnotatedBeanDefinitionReader.register(AnnotatedBeanDefinitionReader.java:131)
在org.springframework.web.context.support.AnnotationConfigWebApplicationContext。 loadBeanDefinitions(Annota tionConfigWebApplicationContext.java:210)
在org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
在org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java: 614)
在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
在org .apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4851)
在org.apache.catalina.core.StandardContext.startInternal(StandardC ontext.java:5314)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase。 java.util.concurrent.FutureTask.run(FutureTask.java:266)

在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java .lang.Thread.run(Thread.java:745)
2011年6月29日3:42:21 org.apache.catalina.core.StandardContext listenerStart
SEVERE:异常发送上下文初始化事件到监听器org.springframework.web.context.ContextLoaderListener的实例
java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy
at sun.reflect.annotation.AnnotationParser.parse ClassArray(AnnotationParser.java:724)
at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect .annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
在java.lang.Class.createAnnotationData(Class.java:3521)
在java.lang.Class.annotationData(Class.java:3510 )
在java.lang.Class.getAnnotations(Class.java:3446)
在org.springframework.core.type.StandardAnnotationMetadata。< init>(StandardAnnotationMetadata.java:68)
在org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition。< init>(AnnotatedGenericBeanDefinition.java:56)
在org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:167)
在org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:142)
在org。 springframework.context.annotation.AnnotatedBeanDefinitionReader.register(AnnotatedBeanDefinitionReader.java:131)
在org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions(AnnotationConfigWebApplicationContext.java:210)
在org.springframework。 context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
在org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
在org.springframework.context.support。 AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
在org.springframework 。org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4851)
在.StandardContext.startInternal(StandardContext.java:5314)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
在org.apache.catalina.core.ContainerBase $ StartChild .call(ContainerBase.java:1408)
在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1398)
在java.util.concurrent.FutureTask.run(FutureTask .java:266)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang.Thread.run(Thread.java:745)

2011年6月29日3:42:21 PM org.apache.catalina.core.StandardContext startInternal
SEVERE:一个或多个监听器启动失败。完整的详细信息将在相应的容器日志文件中找到
2011年6月29日3:42:21 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
INFO:创建SecureRandom实例,用于生成会话ID [SHA1PRNG]花了[201]毫秒。
Jun 29,2017 3:42:21 PM org.apache.catalina.core.StandardContext startInternal
SEVERE:Context [/ SpringOracleJDBCJPAREST]由于以前的错误而启动失败
2011年6月29日3 :42:21 PM org.apache.catalina.core.ApplicationContext log
INFO:关闭Spring根WebApplicationContext
2011年6月29日3:42:21 org.apache.catalina.core.StandardContext listenerStop
SEVERE:异常发送上下文破坏事件到类org.springframework.web.context.ContextLoaderListener的监听器实例
java.lang.IllegalStateException:BeanFactory未初始化或已关闭 - 在通过以下方式访问bean之前调用'刷新' ApplicationContext
在org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
在org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)
(org.springframework.context.support.AbstractApplicationContext.doClose .web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:583)
在org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:116)
在org.apache.catalina.core .StandardContext.listenerStop(StandardContext.java:4898)
在org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5537)
在org.apache.catalina.util.LifecycleBase.stop (LifecycleBase.java:221)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:149)
在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase .java:1408)
在org.apache.catalina.core.ContainerBase $ StartChild.call(Con tainerBase.java:1398)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang.Thread.run(Thread.java:745)

如果我从Eclipse生成的相同的.war文件这样做:右键单击父项目 - >运行方式 - Maven安装手动放入 {Apache Tomcat Innstallation} / webaaps 目录,它没有错误地正常运行。如何设置Eclipse以启用自动部署,而不会出现上下文初始化失败错误?
P.S.一个大项目合并在一起没有部署问题。

解决方案

解决方案是从Tomcat集成环境中取消部署.war文件,并将其直接复制到 $ tomcat_home / webapps 部署目录。每个设置都可以像以前一样设置。这意味着,Tomcat也可以从Eclipse管理。我们可以从Eclipse重新启动Tomcat,使用控制台视图查看日志。
我想,该Context需要一些进一步的配置或者它是一个错误,但这种解决方法工作正常。
只有一个限制,无法自动部署,Tomcat不会在View Servers中显示已部署的模块。






I decided to split the work to more modules in Eclipse Mars (Neon). One module is deployable as war REST Service. Using integrated Tomcat (version 8.0.41) to use: Right click on Server in Servers View -> Add and Remove causes:

    15:42:21.104 [localhost-startStop-1] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization started
    15:42:21.123 [localhost-startStop-1] INFO  o.s.w.c.s.AnnotationConfigWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Thu Jun 29 15:42:21 CEST 2017]; root of context hierarchy
    15:42:21.201 [localhost-startStop-1] INFO  o.s.w.c.s.AnnotationConfigWebApplicationContext - Registering annotated classes: [class com.deepam.spring.config.AppRestConfig]
    15:42:21.218 [localhost-startStop-1] ERROR o.s.web.context.ContextLoader - Context initialization failed
    java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
        at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
        at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
        at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
        at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
        at java.lang.Class.createAnnotationData(Class.java:3521)
        at java.lang.Class.annotationData(Class.java:3510)
        at java.lang.Class.getAnnotations(Class.java:3446)
        at org.springframework.core.type.StandardAnnotationMetadata.<init>(StandardAnnotationMetadata.java:68)
        at org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition.<init>(AnnotatedGenericBeanDefinition.java:56)
        at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:167)
        at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:142)
        at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.register(AnnotatedBeanDefinitionReader.java:131)
        at org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions(AnnotationConfigWebApplicationContext.java:210)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4851)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Jun 29, 2017 3:42:21 PM org.apache.catalina.core.StandardContext listenerStart
    SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
        at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
        at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
        at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
        at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
        at java.lang.Class.createAnnotationData(Class.java:3521)
        at java.lang.Class.annotationData(Class.java:3510)
        at java.lang.Class.getAnnotations(Class.java:3446)
        at org.springframework.core.type.StandardAnnotationMetadata.<init>(StandardAnnotationMetadata.java:68)
        at org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition.<init>(AnnotatedGenericBeanDefinition.java:56)
        at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:167)
        at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:142)
        at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.register(AnnotatedBeanDefinitionReader.java:131)
        at org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions(AnnotationConfigWebApplicationContext.java:210)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4851)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

    Jun 29, 2017 3:42:21 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
    Jun 29, 2017 3:42:21 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
    INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [201] milliseconds.
    Jun 29, 2017 3:42:21 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Context [/SpringOracleJDBCJPAREST] startup failed due to previous errors
    Jun 29, 2017 3:42:21 PM org.apache.catalina.core.ApplicationContext log
    INFO: Closing Spring root WebApplicationContext
    Jun 29, 2017 3:42:21 PM org.apache.catalina.core.StandardContext listenerStop
    SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
    java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
        at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)
        at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1006)
        at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:958)
        at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:583)
        at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:116)
        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4898)
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5537)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:221)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:149)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

If I the same .war file generated from Eclipse this way: Right click on Parent project -> Run as - Maven Install put into {Apache Tomcat Innstallation}/webaaps directory manually, it woks fine without errors. How can I setup Eclipse to enable automatic deployment without Context initialization failed errors? P.S. One big project merged all together has no problem with deployment. It works fine as expected.

解决方案

The solution is to undeploy .war file from Tomcat integrated environment and copy it straightforwardly into $tomcat_home/webapps deployment directory. Every setting can be as they previously were set. It means, Tomcat can be administrated from Eclipse as well. We can restart Tomcat from Eclipse, look on log using Console View etc. I suppose, that Context needs some further configuration or it is a bug, but this workaround works fine. There is only one limitation, that automatic deployment is not possible and Tomcat doesn't display deployed modules in View Servers.

这篇关于使用实用程序模块部署复合项目与Hibernate 5和Spring 4在Eclipse中的Tomcat失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆