5

JBoss 5.1 (EAP) を使用しています。Spring Web サービス (3.0.5) を使用しています。マーシャリングには JaxB を使用しています。

スキーマ (xsd) から pojo を生成するために maven.jaxb2.plugin を使用しています。

JBoss に EAR をデプロイすると、次のエラーが発生します。

    19:05:52,524 ERROR [[eventmanager-ws]] サーブレット 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で
                    public 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(ネイティブメソッド)
            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

エンティティのどこかに、タイプがのフィールドがありますDataHandler。このフィールドに @javax.xml.bind.annotation.XmlTransient注釈 を付けます

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