2009-07-01 4 views
2

私は、JBoss 4.2に私のEAR/WARファイルを展開していると私は、一般的なアプリケーションのコンテキストファイルをロードするためのweb.xmlを有線しましたので、私は親スプリングコンテキストを介して共通Beanを共有することができます。親コンテキストベースのWebアプリ

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"  
version="2.4"> 
<display-name>Validation Service</display-name> 
<description>Validation Service</description> 

<context-param> 
    <param-name>locatorFactorySelector</param-name> 
    <param-value>classpath*:coreBeanContext.xml</param-value> 
</context-param> 
<context-param> 
    <param-name>parentContextKey</param-name> 
    <param-value>coreBeanFactory</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

'coreBeanFactory'は 'ClassPathXmlApplicationContext'を使用するように定義されています。

<?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-2.0.xsd" 
    default-lazy-init="true"> 

<bean id="coreBeanFactory" 
    class="org.springframework.context.support.ClassPathXmlApplicationContext"> 
    <constructor-arg> 
     <value>coreApplicationContext.xml</value> 
    </constructor-arg> 
</bean> 

しかし、起動時に

は、coreBeanContext.xmlファイルがロードされている、しかし、私は、この例外

Caused by: org.springframework.beans.factory.access.BootstrapException: 
Unable to return specified BeanFactory instance: factory key [coreBeanFactory], 
from group with resource name [classpath*:coreBeanContext.xml]; 
nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: 
Bean named 'coreBeanFactory' must be of type 
[org.springframework.beans.factory.BeanFactory], 
but was actually of type 
[org.springframework.context.support.ClassPathXmlApplicationContext] 
at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:410) 

SingletonBeanFactoryLocatorが間違った型として、この豆を拾っているなぜ私は思ったんだけどを取得しています?

完全なスタックトレースを追加してください。私のアプリは@Webserviceアノテーションを使用し、デプロイ中にWSDLファイルが生成されます。インタフェース内のオブジェクト参照の1つは、コンストラクタ内のデータベースに接続する必要があります。また、これを引き起こすSpringデータソースBean参照を参照する必要があります。 ATM - SpringBeanAutowiringInterceptorを使用して、オブジェクトが正しく挿入されていることを確認しています。

org.jboss.deployment.DeploymentException: Could not create deployment: file:/C:/projects/libs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp30413validationservice.ear-contents/validation-ejb.jar; - nested throwable: (java.lang.ExceptionInInitializerError) 
at org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:53) 
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1050) 
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782) 
at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:585) 
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
at $Proxy9.deploy(Unknown Source) 
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421) 
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634) 
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263) 
at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336) 
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289) 
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245) 
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:585) 
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) 
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978) 
at $Proxy0.start(Unknown Source) 
at org.jboss.system.ServiceController.start(ServiceController.java:417) 
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:585) 
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) 
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
at $Proxy4.start(Unknown Source) 
at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302) 
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782) 
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:585) 
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
at $Proxy5.deploy(Unknown Source) 
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482) 
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362) 
at org.jboss.Main.boot(Main.java:200) 
at org.jboss.Main$1.run(Main.java:508) 
at java.lang.Thread.run(Thread.java:595) 
Caused by: java.lang.ExceptionInInitializerError 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:585) 
at java.lang.Class.getEnumConstants(Class.java:2903) 
at java.util.EnumMap.<init>(EnumMap.java:109) 
at com.sun.xml.bind.v2.model.impl.RuntimeEnumLeafInfoImpl.<init>(RuntimeEnumLeafInfoImpl.java:83) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createEnumLeafInfo(RuntimeModelBuilder.java:103) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createEnumLeafInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:207) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:98) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:192) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:93) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:298) 
at com.sun.xml.bind.v2.model.impl.TypeRefImpl.calcRef(TypeRefImpl.java:92) 
at com.sun.xml.bind.v2.model.impl.TypeRefImpl.getTarget(TypeRefImpl.java:69) 
at com.sun.xml.bind.v2.model.impl.RuntimeTypeRefImpl.getTarget(RuntimeTypeRefImpl.java:58) 
at com.sun.xml.bind.v2.model.impl.RuntimeTypeRefImpl.getTarget(RuntimeTypeRefImpl.java:51) 
at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.get(ElementPropertyInfoImpl.java:74) 
at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.get(ElementPropertyInfoImpl.java:77) 
at java.util.AbstractList$Itr.next(AbstractList.java:422) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:238) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:98) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:192) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:93) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:298) 
at com.sun.xml.bind.v2.model.impl.TypeRefImpl.calcRef(TypeRefImpl.java:92) 
at com.sun.xml.bind.v2.model.impl.TypeRefImpl.getTarget(TypeRefImpl.java:69) 
at com.sun.xml.bind.v2.model.impl.RuntimeTypeRefImpl.getTarget(RuntimeTypeRefImpl.java:58) 
at com.sun.xml.bind.v2.model.impl.RuntimeTypeRefImpl.getTarget(RuntimeTypeRefImpl.java:51) 
at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.get(ElementPropertyInfoImpl.java:74) 
at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.get(ElementPropertyInfoImpl.java:77) 
at java.util.AbstractList$Itr.next(AbstractList.java:422) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:238) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:98) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:192) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:93) 
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:79) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:298) 
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:313) 
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:432) 
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286) 
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139) 
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:105) 
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:116) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.createJAXBContext(JAXWSMetaDataBuilder.java:921) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder.buildWebServiceMetaData(JAXWSWebServiceMetaDataBuilder.java:146) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:50) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderEJB3.buildMetaData(JAXWSMetaDataBuilderEJB3.java:78) 
at org.jboss.wsf.stack.jbws.UnifiedMetaDataDeploymentAspect.create(UnifiedMetaDataDeploymentAspect.java:71) 
at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:115) 
at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97) 
at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:90) 
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188) 
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) 
at $Proxy34.start(Unknown Source) 
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025) 
... 67 more 
Caused by: org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [coreBeanFactory], from group with resource name [classpath*:coreBeanContext.xml]; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'coreBeanFactory' must be of type [org.springframework.beans.factory.BeanFactory], but was actually of type [org.springframework.context.support.ClassPathXmlApplicationContext] 
at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:410) 
at xxx.common.utilities.spring.SpringContainerUtilities.getSingletonFactoryBean(SpringContainerUtilities.java:211) 
at xxx.common.utilities.spring.SpringContainerUtilities.getCoreFocusDataSource(SpringContainerUtilities.java:145) 
at xxx.common.collections.LabelSerialCollection.checkForConnection(LabelSerialCollection.java:687) 
at xxx.common.collections.LabelSerialCollection.populate(LabelSerialCollection.java:813) 
at xxx.common.collections.LabelSerialCollection.getInstance(LabelSerialCollection.java:342) 
at xxx.common.enums.SEIProducts.<clinit>(SEIProducts.java:23) 
... 133 more 
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'coreBeanFactory' must be of type [org.springframework.beans.factory.BeanFactory], but was actually of type [org.springframework.context.support.ClassPathXmlApplicationContext] 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168) 
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:884) 
at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:397) 
... 139 more 
2009-07-20 10:20:20,487 DEBUG [org.jboss.deployment.scanner.URLDeploymentScanner] Watch URL for: file:/C:/projects/libs/jboss-4.2.2.GA/server/default/deploy/validationservice.ear -> file:/C:/projects/libs/jboss-4.2.2.GA/server/default/deploy/validationservice.ear 
2009-07-20 10:20:20,487 ERROR [org.jboss.deployment.scanner.URLDeploymentScanner] Incomplete Deployment listing: 

答えて

0

私の推測では、Springは2つの異なるクラスローダーによって読み込まれていると思います。この場合、Webアプリケーションのクラスローダーは親コンテキストをBeanFactoryにキャストできません。

あなたのWARはEAR内にパッケージ化されていますが、それは間違いありませんか?もしそうなら、あなたはEARの中にSpringの単一のコピーを持っていますか、またはWARの中に追加のSpring JARを持っていますか?

+0

私はEARの「LIB」フォルダ内のバネ2.5.6のコピーをした、と私の戦争は何のjarファイルが含まれていません。 jbossサーバーフォルダには古いバージョンのspringがありますが、私の設定ではEAR libフォルダのバージョンが使用されています。私は現在、この分離レベルに を使用しています私の耳-deployer.xmlで <属性名=「孤立」> 真しかし、私が「偽」このフィールドを設定するときに例外が消えます。 – emeraldjava

+0

ああ、JBossクラスローダーの喜び。 Isolationを無効にすることで、JBossにすべてをフラット化し、クラスローディングの問題を解消するように指示します。しかし、あなたのアプリケーションはコンテナと戦うのではなく、お互いに戦い始めるので、お勧めしません。 – skaffman

+0

古いバージョンのSpringをサーバのlibディレクトリから削除し、隔離しておくとどうなりますか? – skaffman

0

これは、JBossのクラスロードではなく、これをバネ構成の問題として分類します。この設定であなたの意図が何であるかを記述できますか?

はあなただけで複数のアプリケーション・コンテキストをロードする必要がありますか、またはこのようにロードされたアプリケーション・コンテキストを持っている必要がありますか?

あなただけ単一のアプリケーションコンテキストをロードし、その構成内の他のすべてのアプリケーション・コンテキストをインポートする、またはのconfigureすべてのコンテキストをweb.xmlのを経由して、それらをSpringコンテキスト・ローダー・リスナーによってロードされていることを試みることができます。

  • 単一のアプリケーションコンテキスト:コンテキスト${servlet-name}-servlet.xmlが自動的にロードされます。 web.xml経由Composing XML-based configuration metadata
  • 構成で説明したように、このコンフィギュレーションファイルに<import/>ディレクティブを挿入することができます。Common configurationで説明したように、WebアプリケーションのcontextConfigLocationコンテキストパラメータを設定します。

このようにアプリケーションを設定する理由がわかっている場合は、詳細を記入してください。推奨されるアプローチは、すべてのコンテキストを外部的に(この場合はweb.xmlコンテキストパラメータ経由で)設定するか、コンテキストに<import/>で他のコンテキストをインポートさせることです。私はこれが役立つことを願っ


Kariem

関連する問題