2011-08-09 14 views
0

Spring 3.0.5.RELEASEで開発されたRESTサービスをWAS 7.0.0.17のwar-fileとしてデプロイしようとしています。起動時に私は次の例外を取得し、サービスは文句を言わない(明らかに)結果を返す:Spring RESTサービスWAS7起動時の例外

[8/9/11 13:26:44:592 CEST] 00000013 extension  E com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor createServletWrapper Error occured while preparing the servlet for initialization. 
          javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception created by servlet 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:434) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:169) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.initialize(ServletWrapper.java:1809) 
    at com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor.createServletWrapper(WebExtensionProcessor.java:98) 
    at com.ibm.ws.webcontainer.webapp.WebApp.getServletWrapper(WebApp.java:1037) 
    at com.ibm.ws.webcontainer.webapp.WebApp.getServletWrapper(WebApp.java:958) 
    at com.ibm.ws.webcontainer.webapp.WebApp.initializeTargetMappings(WebApp.java:637) 
    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:435) 
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:304) 
    at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:100) 
    at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:166) 
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:731) 
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:616) 
    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:376) 
    at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:668) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1123) 
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1319) 
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:610) 
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:944) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:726) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2048) 
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:441) 
    at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123) 
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:384) 
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$300(CompositionUnitMgrImpl.java:112) 
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:951) 
    at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'standorteDS' defined in ServletContext resource [/WEB-INF/rest-context.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org/springframework/expression/spel/support/StandardEvaluationContext.setBeanResolver(Lorg/springframework/expression/BeanResolver;)V 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1707) 
    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:380) 
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:299) 
    ... 19 more 
Caused by: java.lang.NoSuchMethodError: org/springframework/expression/spel/support/StandardEvaluationContext.setBeanResolver(Lorg/springframework/expression/BeanResolver;)V 
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:129) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1245) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:224) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:311) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) 
    ... 33 more 

は私がローカルにインストールTomcatのサーバ上でアプリケーションを開発しました。そのプラットフォームでは、それは間違いなく実行されていました。

私の残りの部分-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.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 

<bean id="standorteDS" class="mobile.standorte.ds.StandorteDS"> 
    <property name="ds" ref="datasource" /> 
</bean> 

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/my_datasource" /> 
    <property name="lookupOnStartup" value="false" /> 
    <property name="cache" value="true" /> 
    <property name="proxyInterface" value="javax.sql.DataSource" /> 
</bean> 

そして、私の残りの部分-servlet.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" xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<!-- To enable @RequestMapping process on type level and method level --> 
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="classesToBeBound"> 
     <list> 
      <value>mobile.standorte.bean.Standort</value> 
      <value>mobile.standorte.bean.StandorteList</value> 
     </list> 
    </property> 
</bean> 

<bean id="standorte" class="org.springframework.web.servlet.view.xml.MarshallingView"> 
    <constructor-arg ref="jaxbMarshaller" /> 
</bean> 

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="xml" value="application/xml"/> 
      <entry key="html" value="text/html"/> 
     </map> 
    </property> 

    <property name="viewResolvers"> 
     <list> 
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> 
     </list> 
    </property> 
</bean> 

<bean id="standorteController" class="mobile.standorte.controller.StandorteController"> 
    <property name="standorteDS" ref="standorteDS" /> 
    <property name="jaxb2Mashaller" ref="jaxbMarshaller" /> 
</bean> 

と最後にweb.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_1189606987655" version="2.5"> 

<display-name>Standorte Service Mobile</display-name> 

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

<!-- The context params that read by ContextLoaderListener --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/rest-context.xml 
    </param-value> 
</context-param> 

<!-- This listener will load other application context file in addition to springweb-servlet.xml --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<servlet> 
    <servlet-name>rest</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>rest</servlet-name> 
    <url-pattern>/StandorteService/*</url-pattern> 
</servlet-mapping> 

データソースは、Application Serverで構成され、プロパティdsを持つクラスも展開されています。

サービスが開始されない理由がわかりません。どのように問題を解決するためのヒントをありがとう。

+0

アプリケーションがクラスローダー「親の最後」で構成されているため、websphereが最初にアプリケーションから構成をロードするように追加することを希望しました。 – Florian

+0

問題が見つかりました。リリース3.0.0への依存.Releaseはweb-mvc 3.0.5.Releaseに加えてバージョン3.0.0.Releaseにlib springframework-expressionを追加しました。 Strangly Tomcatが正しいものをロードしました.Websphereは間違ったものを選択しました。 – Florian

答えて

1

この行で判断すると、バージョンミスマッチまたはjarがない箇所があり、spring-expression.jarがあることを確認します。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'standorteDS' defined in ServletContext resource [/WEB-INF/rest-context.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org/springframework/expression/spel/support/StandardEvaluationContext.setBeanResolver(Lorg/springframework/expression/BeanResolver;) 
+0

こんにちは、私はそれをチェックし、libはインストールされているwarファイル "spring-expression-3.0.5.RELEASE.jar"のWEB-INF/libフォルダにあります。 – Florian

+0

jBossアプリケーションサーバーに同じファイルの古いバージョンが含まれているため、クラスが検出されないことがあります。だから、私はspring jarのWebSphereのライブラリフォルダをチェックする。 AFAIK戦争図書館は、共通または共有されたものよりも優先されるべきです。 – Ali

関連する問題