0

Hibernate を永続化プロバイダーとして使用する SpringData/JPA2 Web サービスを開発しています。次のフレームワークを使用します。 cxf=2.6.2 hibernate= 4.1.1.Final springframework=3.1.2.RELEASE spring.data=1.2.0.RELEASE

データベース関連のコードは、Eclipse からの単体テスト中に正常に動作する「コア サブモジュール」にあります。core-submodule を依存関係として持つ webservice 用の別のサブモジュールがあります。私が日食から単体テストを行ったとき、開発中にこれまでのところうまくいくようです。十分な進捗が得られたので、デスクトップに jboss AS 7.2 を新しくインストールしてデプロイしようとしています。standalone.xml にデータソースを設定し、jTDS 1.2.7 のドライバーをモジュール ディレクトリにデプロイしました。

war ファイルをデプロイすると、このエラー スタック トレースが表示されます。このエラーのトラブルシューティングをどこから始めればよいかわかりません。したがって、どこから始めればよいか途方に暮れているので、ヒントやポイントをいただければ幸いです:(スタックトレースは以下に貼り付けられます:

    15:52:34,954 INFO  [org.springframework.context.support.ClassPathXmlApplicationContext] (MSC service thread 1-3) 
    Bean 'entityManagerFactory' of type [class org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    15:52:34,972 INFO  [org.springframework.context.support.ClassPathXmlApplicationContext] (MSC service thread 1-3) 
    Bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0' of type [class org.springframework.transaction.annotation.AnnotationTransactionAttributeSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    15:52:34,976 INFO  [org.springframework.context.support.ClassPathXmlApplicationContext] (MSC service thread 1-3) 
    Bean 'org.springframework.transaction.config.internalTransactionAdvisor' of type [class org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    15:52:34,983 INFO  [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-3) 
    Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1bb71ac: defining beans [org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#1,dataSource,entityManagerFactory,entrLoanRepository,keyRefRepository,org.springframework.data.repository.core.support.RepositoryInterfaceAwareBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,addKeyRefService,createEntrLoanService,disableAllKeyRefService,retrieveEntrLoanService,entrLoanServiceImpl,keyRefServiceImpl,retrieveKeyRefService,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy
    15:52:35,487 INFO  [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-3) 
    Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1bb71ac: defining beans [org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#1,dataSource,entityManagerFactory,entrLoanRepository,keyRefRepository,org.springframework.data.repository.core.support.RepositoryInterfaceAwareBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,addKeyRefService,createEntrLoanService,disableAllKeyRefService,retrieveEntrLoanService,entrLoanServiceImpl,keyRefServiceImpl,retrieveKeyRefService,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy
    15:52:35,499 INFO  [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] (MSC service thread 1-3) 
    Closing JPA EntityManagerFactory for persistence unit 'persistenceUnit'
    15:52:35,503 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) 
    MSC00001: Failed to start service jboss.deployment.unit."euclid-ws.war".
    INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."euclid-ws.war".
    INSTALL: JBAS018733: Failed to process phase INSTALL of deployment "euclid-ws.war"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_33]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_33]
        at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33]
    Caused by: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'entrLoanServiceImpl': Injection of resource dependencies failed; 
    nested exception is org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'entrLoanRepository': 
    FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
        at org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder.newInstance(NonSpringBusHolder.java:174)
        at org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder.configure(NonSpringBusHolder.java:96)
        at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.startDeploymentBus(BusDeploymentAspect.java:129)
        at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.start(BusDeploymentAspect.java:68)
        at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.deploy(AspectDeploymentProcessor.java:74)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
        ... 5 more
    Caused by: org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'entrLoanServiceImpl': Injection of resource dependencies failed; 
    nested exception is org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'entrLoanRepository': 
    FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:307)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at com.sgbeuclid.ws.web.ServicingContext.getAppContext(ServicingContext.java:16)
        at com.sgbeuclid.ws.web.Euclid.<init>(Euclid.java:52)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.6.0_33]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [rt.jar:1.6.0_33]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [rt.jar:1.6.0_33]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [rt.jar:1.6.0_33]
        at java.lang.Class.newInstance0(Class.java:355) [rt.jar:1.6.0_33]
        at java.lang.Class.newInstance(Class.java:308) [rt.jar:1.6.0_33]
        at org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder.newInstance(NonSpringBusHolder.java:170)
        ... 10 more
    Caused by: org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'entrLoanRepository': FactoryBean threw exception on object creation; 
    nested exception is java.lang.NullPointerException
        at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
        at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1442)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:248)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:443)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:417)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:559)
        at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:150)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:304)
        ... 31 more
    Caused by: java.lang.NullPointerException
        at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:73)
        at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:115)
        at org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149)
        at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1220)
        at org.hibernate.ejb.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:178)
        at org.hibernate.ejb.EntityManagerImpl.<init>(EntityManagerImpl.java:89)
        at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:179)
        at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:174)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_33]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_33]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_33]
        at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_33]
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:376)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:517)
        at $Proxy37.createEntityManager(Unknown Source) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:234)
        at $Proxy40.createNamedQuery(Unknown Source)    at org.springframework.data.jpa.repository.query.NamedQuery.<init>(NamedQuery.java:60)
        at org.springframework.data.jpa.repository.query.NamedQuery.lookupFrom(NamedQuery.java:111)
        at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:125)
        at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:160)
        at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:280)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:148)
        at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:125)
        at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:41)
        at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
        ... 41 more

    15:52:35,611 ERROR [org.jboss.as.server] (DeploymentScanner-threads - 1) 
    JBAS015870: Deploy of deployment "euclid-ws.war" was rolled back with the following failure message: 
    {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"euclid-ws.war\".
    INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"euclid-ws.war\".
    INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"euclid-ws.war\"
        Caused by: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entrLoanServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entrLoanRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
        Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entrLoanServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entrLoanRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
        Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entrLoanRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
        Caused by: java.lang.NullPointerException"}}
    15:52:35,688 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment euclid-ws.war in 76ms

基本的に、リポジトリをインスタンス化しようとしているときに nullpointer を取得しているように見えます。

ここに web.xml があります。CXFServlet を使用する必要がありますか? それとも、これで十分に見えますか?

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

        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:META-INF/spring/applicationContext-ws.xml</param-value>
        </context-param>

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


        <!-- 
        commenting out the CXFServlet . It does not appear to be needed while deploying to jboss.
        <servlet>
            <servlet-name>CXFServlet</servlet-name>
            <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>CXFServlet</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>

        <session-config>
            <session-timeout>60</session-timeout>
        </session-config>
         -->

        <servlet>
            <servlet-name>euclid</servlet-name>
            <servlet-class>com.sgb.euclid.ws.web.Euclid</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>euclid</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>

    </web-app>

また、おそらく関係ありませんが、知っておくと便利です。で、警告メッセージが表示されました:

JBAS016012: Deployment deployment "euclid-ws.war" contains CDI annotations but beans.xml was not found.

CDI を明示的に使用しようとはしていませんが、WEB-INF に空の beans.xml ファイルが必要ですか? または、代わりに Spring Container を使用しようとしているときに、警告を安全に無視できますか?

4

1 に答える 1

2

これを追加

<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />

persistence.xml。どのように私は知っていますか?Google が教えてくれました

于 2012-12-19T21:53:20.897 に答える