5

我正在使用 JBoss 5.1 (EAP)。我正在使用 Spring Web 服务(3.0.5)。对于编组,我使用的是 JaxB。

我正在使用 maven.jaxb2.plugin 从架构(xsd)生成 pojo。

当我在 JBoss 上部署 EAR 时,我收到以下错误:

    19:05:52,524 错误 [[eventmanager-ws]] 为 servlet eventmanager-ws 分配异常
    com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:1 计数 IllegalAnnotationExceptions
    javax.activation.DataHandler 没有无参数默认构造函数。
            此问题与以下位置有关:
                    在 javax.activation.DataHandler
                    在受保护的 javax.activation.DataHandler
                    uk.co.aol.shipmanager.ws.schema.ReportResponse.data
                    在 uk.co.aol.shipmanager.ws.schema.ReportResponse
                    在公共 uk.co.aol.shipmanager.ws.schema.ReportResponse
                    uk.co.aol.shipmanager.ws.schema.ObjectFactory.createReportResponse()
                    在 uk.co.aol.shipmanager.ws.schema.ObjectFactory

            在 com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.j>ava:102)
            在 com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:472)
            在 com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:302)
            在 com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1136)
            在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
            在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)
            在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202)
            在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            在 java.lang.reflect.Method.invoke(Method.java:597)
            在 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
            在 javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
            在 javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
            在 javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
            在 org.springframework.oxm.jaxb.Jaxb2Marshaller.createJaxbContextFromContextPath(Jaxb2Marshaller.java:>355)
            在 org.springframework.oxm.jaxb.Jaxb2Marshaller.getJaxbContext(Jaxb2Marshaller.java:328)
            在 org.springframework.oxm.jaxb.Jaxb2Marshaller.afterPropertiesSet(Jaxb2Marshaller.java:317)
            在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
            在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
            在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
            在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
            在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
            在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingleto>BeanRegistry.java:222)

我检查了 jaxb2 插件版本并尝试使用以前的版本,假设 JBoss 获得了 JaxB 2.1.12,尝试了很多版本但没有运气。

有什么建议么?

谢谢,阿迪

4

1 回答 1

0

在您的实体中的某个地方,您有 type 的字段DataHandler@javax.xml.bind.annotation.XmlTransient用注释 标记此字段

class SomeEntity  
{  
    //...   
   @javax.xml.bind.annotation.XmlTransient  
   private javax.activation.DataHandler yourField;  
   // ...  
}
于 2012-08-30T20:00:09.163 回答