Java 在Glassfish 4上运行Spring 3应用程序

Java 在Glassfish 4上运行Spring 3应用程序,java,spring,spring-mvc,intellij-idea,glassfish,Java,Spring,Spring Mvc,Intellij Idea,Glassfish,我试图在Glassfish 4上运行我的Spring MVC应用程序(在tomcat 7.0.41上运行得很好),但出现了一些问题。 我是Glassfish的新手,所以我只是使用IntelliJ IDEA运行配置来启动它。 但当我尝试运行时,我在Glassfish日志中有一个stacktrace: ERROR: org.springframework.web.context.ContextLoader - Context initialization failed org.springf

我试图在Glassfish 4上运行我的Spring MVC应用程序(在tomcat 7.0.41上运行得很好),但出现了一些问题。 我是Glassfish的新手,所以我只是使用IntelliJ IDEA运行配置来启动它。 但当我尝试运行时,我在Glassfish日志中有一个stacktrace:

    ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'validator' defined in class path resource [data-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'validationMessageSource' threw exception; nested exception is java.lang.NoSuchMethodError: org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.<init>(Lorg/hibernate/validator/resourceloading/ResourceBundleLocator;)V
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1427)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1132)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:5362)
    at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:743)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5898)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'validationMessageSource' threw exception; nested exception is java.lang.NoSuchMethodError: org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.<init>(Lorg/hibernate/validator/resourceloading/ResourceBundleLocator;)V
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:101)
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1424)
    ... 60 more]]
错误:org.springframework.web.context.ContextLoader-上下文初始化失败
org.springframework.beans.factory.BeanCreationException:创建名为“validator”的bean时出错,该名称在类路径资源[data context.xml]中定义:设置属性值时出错;嵌套异常为org.springframework.beans.PropertyBatchUpdateException;嵌套的PropertyAccessException(1)是:
PropertyAccessException 1:org.springframework.beans.MethodInvocationException:属性“validationMessageSource”引发异常;嵌套的异常是java.lang.NoSuchMethodError:org.hibernate.validator.MessageInterpolator.ResourceBundleMessageInterpolator。(Lorg/hibernate/validator/resourceloading/ResourceBundleLocator;)V
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1427)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1132)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:626)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
位于org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:5362)
位于com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:743)
位于org.apache.catalina.core.StandardContext.start(StandardContext.java:5898)
位于com.sun.enterprise.web.WebModule.start(WebModule.java:691)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
在com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278)上
在com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924)上
位于com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
位于org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
PropertyAccessException 1:org.springframework.beans.MethodInvocationException:属性“validationMessageSource”引发异常;嵌套的异常是java.lang.NoSuchMethodError:org.hibernate.validator.MessageInterpolator.ResourceBundleMessageInterpolator。(Lorg/hibernate/validator/resourceloading/ResourceBundleLocator;)V
位于org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:101)
位于org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1424)
... 60多个]]
data-context.xml(其中可能存在一些歧义):


org.hibernate.dialogue.postgresql82dialogue
3.
50
10
真的

它通过以下方式连接到应用程序上下文:

web.xml

    ...
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:root-context.xml
    </param-value>
  </context-param>
    ...
。。。
上下文配置位置
类路径:root-context.xml
...
root-context.xml

 <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
        <import resource="data-context.xml"/>
        <import resource="security-context.xml"/>
    </beans>


我做错了什么?

这似乎是Hibernate Validator库的类加载问题-您的Glassfish上可能安装了该库的另一个版本


您可以在Glassfish 4.0中阅读更多关于类加载顺序的信息,其中有一整章内容-类加载程序。

Hibernate Validator库的类加载似乎有问题-您的Glassfish上可能安装了该库的另一个版本,我不熟悉Glassfish,但它很可能捆绑了旧版本的验证器jar。我同意验证器存在问题,但更可能是新版本,因为Glassfish 4是Java EE 7的实现。我想用Glassfish 3试试你的应用程序。你是从哪里来的?你是使用maven而它们被冻结了,还是依赖容器提供的JAR?@Boris Treunkov,是的,这是GF和我的内置库之间的某种依赖冲突。谢谢,这已经足够了。“如果你把这个正式化为答案,我会接受的。”疯子,我使用maven时没有一个
 <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
        <import resource="data-context.xml"/>
        <import resource="security-context.xml"/>
    </beans>