0

我有一个Spring MVC project(contains Controller & jsp files)DAO project(Contains DB operation related files)& 两个项目都是使用注释配置的。MVC 项目依赖于 DAO 项目。现在,我正在为 MVC 和 DAO 项目编写 JUnit 测试。因此,我创建了一个单独的“测试项目”,在其中添加了 MVC 项目作为依赖(Java Build Path -> Projects tab -> Add -> MVC Project & ok)项,并包含了所有需要的 jar 文件(JUnit 和 spring-test.jar)。我正在使用RAD IDE, Spring 3, JUnit4 & Websphere application server (version 7).

我的项目结构:

MVCProject (Depends on DAOProject --> Web App project)
    |
     WebContent
        |
         WEB-INF
            |
             spring-context.xml

DAOProject (Java project)
    |
     src  


TestProject(Depends on MVCProject --> Java project)
    |
     src 
        |
         com.xyz.dao.test
            |
             DAOImplTest.java
        |
         config
            |
             test-spring-context.xml

我将 spring-context.xml 文件的内容复制到 test-spring-context.xml 中。下面是我的 JUnit 测试项目代码,

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:config/test-spring-context.xml"})
public class DAOImplTest {

    @Autowired
    private DAO dao;

    String id = null;

    /**
     * Test method for {@link com.xyz.core.dao.DAOImpl#getById(java.lang.String)}.
     */
    @Test
    public void testGetById() {

        id = "Test12345";
        try {
            dao.getById(id);
        } catch (Exception e) {         
            e.printStackTrace();
        }
    }
}  

尝试运行测试用例 ( The XMLInputFactory does not recognize the property "reuse-instance") 时出现以下错误。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'imageHandler' defined in file [D:\Workspace\MVCProjectName\WebContent\WEB-INF\classes\com\xyz\web\webservice\ImageHandlerImpl.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.xyz.webservice.ImageHandlerImpl]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: The XMLInputFactory does not recognize the property "reuse-instance".
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:435)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:409)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:541)
    at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:147)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:297)
    ... 64 more
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.xyz.webservice.ImageHandlerImpl]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: The XMLInputFactory does not recognize the property "reuse-instance".
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:141)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958)
    ... 77 more
Caused by: java.lang.IllegalArgumentException: The XMLInputFactory does not recognize the property "reuse-instance".
    at com.ibm.xml.xlxp.api.stax.msg.StAXMessageProvider.throwIllegalArgumentException(StAXMessageProvider.java:42)
    at com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl.setProperty(XMLInputFactoryImpl.java:1870)
    at org.apache.axiom.util.stax.dialect.SJSXPDialect.makeThreadSafe(SJSXPDialect.java:65)
    at org.apache.axiom.om.util.StAXUtils$8.run(StAXUtils.java:544)
    at java.security.AccessController.doPrivileged(AccessController.java:229)
    at org.apache.axiom.om.util.StAXUtils.newXMLInputFactory(StAXUtils.java:517)
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory_perClassLoader(StAXUtils.java:588)
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory(StAXUtils.java:171)
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory(StAXUtils.java:136)
    at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:223)
    at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:217)
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:555)
    at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:93)
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:76)
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:640)
    at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:105)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:60)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:174)
    at org.apache.axis2.jaxws.ClientConfigurationFactory.getClientConfigurationContext(ClientConfigurationFactory.java:51)
    at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:74)
    at org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:67)
    at org.apache.axis2.jaxws.spi.ServiceDelegate.<init>(ServiceDelegate.java:84)
    at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:45)
    at javax.xml.ws.Service.<init>(Service.java:57)
    at com.xyz.handler.broker.ImageHandlerService.<init>(ImageHandlerService.java:39)
    at com.xyz.handler.broker.ImageHandlerProxy$Descriptor.<init>(ImageHandlerProxy.java:21)
    at com.xyz.handler.broker.ImageHandlerProxy.<init>(ImageHandlerProxy.java:69)
    at com.xyz.webservice.ImageHandlerImpl.<init>(ImageHandlerImpl.java:30)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:80)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
    ... 79 more

请帮我解决这个问题。
提前致谢。

4

2 回答 2

0

伙计们,
我能够解决这个问题。
这个问题发生在我的时候RAD JRE System library set to jdk7,所以通过设置 RAD 'JRE System library' to 'JavaSE-1.6'(属性 --> 库选项卡 --> JRE 系统库 --> 单击编辑并设置 JavaSE-1.6)解决了这个问题。
原因可能是 sun jdk7、IBM(xml.jar) 和 apache axiom 版本之间的 jar 冲突(不确定,但据我谷歌搜索最终得出了这个假设)。
希望它可以帮助面临类似问题的人。
快乐学习。

于 2013-12-31T08:53:21.623 回答
0

这是 Axiom 中的一个问题,已在 1.2.15 中修复。有关详细信息,请参阅AXIOM-443 。

于 2015-08-27T22:19:20.250 回答