2016-09-12 34 views
1

AWSラムダ関数をテストする際に問題が発生しました。基本的にSpringベースのアプリケーションです。これは、以下のコードを呼び出してBeanを作成しようとしています。AWSラムダ - XMLスキーマのNamespaceHandlerを見つけることができません

private static ApplicationContext getSpringContext() { 
     if (springContext == null) { 
      synchronized (ApplicationContext.class) { 
       if (springContext == null) { 
        springContext = new ClassPathXmlApplicationContext("config/application-context.xml"); 
       } 
      } 
     } 

問題:

{ 
    "errorMessage": "Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]\nOffending resource: class path resource [config/application-context.xml]\n", 
    "errorType": "org.springframework.beans.factory.parsing.BeanDefinitionParsingException", 
    "stackTrace": [ 
    "org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)", 
    "org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)", 
    "org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)", 
    "org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:315)", 
    "org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1429)", 
    "org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1422)", 
    "org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187)", 
    "org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:147)", 
    "org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:101)", 
    "org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:495)", 
    "org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)", 
    "org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)", 
    "org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)", 
    "org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)", 
    "org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)", 
    "org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)", 
    "org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)", 
    "org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)", 
    "org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)", 
    "org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)", 
    "org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:539)", 
    "org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)", 
    "org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)", 
    "org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)", 
    "com.thermofisher.synbio.app.controller.Application.getSpringContext(Application.java:13)", 
    "com.thermofisher.synbio.app.controller.Application.getBean(Application.java:21)", 
    "com.thermofisher.synbio.app.controller.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:15)", 
    "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)", 
    "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)", 
    "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)", 
    "java.lang.reflect.Method.invoke(Method.java:498)" 
    ] 
} 

Stragely、私はメインの方法でそれを実行すると、これは、私のローカルマシンに完全に正常に動作 enter image description here

にあるアプリケーションのcontext.xml。

mavenを使用してJarを作成し、mavenパッケージとして目標を設定します。 助けを歓迎します。

おかげで

答えて

0

問題はのmaven-シェードプラグインの使用に関連しています。

いくつかの潜在的な修正がここで説明されています How to create spring-based executable jar with maven?

私は同じ問題を持って、次の設定を追加することによって、それを修正:

<configuration> 
    <transformers> 
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
     <resource>META-INF/spring.handlers</resource> 
    </transformer> 
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
     <resource>META-INF/spring.schemas</resource> 
    </transformer> 
    </transformers> 
</configuration> 

Explications:https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer

関連する問題