Как я могу проверить действительность wsdl, потому что я получил IllegalAnnotationsException?

Я сгенерировал пакет Java с помощью команды wsdl2java CXF. Теперь я хочу развернуть wsdl на сервере Tomcat, но я получил эти ошибки в журналах, когда я запускаю сервер

Я использую opebEjb.

Похоже, wsdl не является действительным. Как я могу это проверить?

Журнал:

Вызывается: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException в org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:268) в org.apache.cxf.jw.EndpointImpl.publish(EndpointImpl.java:202) в org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:397) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.remphondN в sun.rempho.N NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke(Method.java:597) принудительное возвращение на пенсию.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1412) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1373) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333) ... еще 30 причин: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:274) в org.ache..service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:371) при org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:525) при org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:422) в org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:190) в org.apache.cxf.jaxwactSupport.JaxWan.FeSFF org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100) в org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.axwe.WeF.create(JaxWsServerFactoryBean.java:168) в org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:339) в org.apache.cxf.jaxws.EndpointImpl.doPublish (EndpointImpl.jpg). Еще 39

Вызвано: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 48 отсчетов исключений IllegalAnnotationException

Для элемента {urn:hl7-org:v3}assignDevice нет ObjectFactory с @XmlElementDecl. эта проблема связана со следующим местоположением: в защищенном javax.xml.bind.JAXBElement com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer.assignedDevice в com.santeos.dmp.iheprofiles.hL7.for.forum.Jerver.Forum com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess.authorOrPerformer на com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess в защищенном com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message.controlActProcess в com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message

Нет объекта ObjectFactory с @XmlElementDecl для элемента {urn:hl7-org:v3}assignPerson. эта проблема связана со следующим местоположением: в защищенном javax.xml.bind.JAXBElement com.santeos.dmp.iheprofiles.hl7.MFMIMT700701UV01AuthorOrPerformer.assignedPerson в com.santeos.dmp.iheprofiles.hl7.istor.werF com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess.authorOrPerformer на com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess в защищенном com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MFMIMT700701UV01ControlActProcess com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message.controlActProcess в com.santeos.dmp.iheprofiles.hl7.PRPAIN201304UV02MCCIMT000100UV01Message

2 ответа

Как сказал Julien в комментарии выше, эту проблему можно решить, изменив имя пакета для каждого wsdl, если вы используете более одного wsdl. В моем случае у меня было два wsdl, один загружен в мое рабочее пространство вместе со всеми необходимыми xsd, а второй использовался с использованием URL. Оба они указывают на один и тот же сервер. Причиной загрузки первого wsdl стало столкновение двух имен в фабрике объектов. Да, внешние привязки не работали, просто потому что wsdl был полным беспорядком.

Итак, когда я пытался сгенерировать исходники с помощью wsdltojava, он завершился неудачно с "Нет ObjectFactory с @XmlElementDecl...". Я последовал комментариям Julien, и проблема была решена. Я не уверен, что это лучшее и более чистое решение, но оно сработало.

Какие флаги вы передаете в wsdl2java?

Можете ли вы проверить сгенерированный код для классов ObjectFactory? Проверьте их, чтобы увидеть, аннотируются ли какие-либо методы с помощью @XmlElementDecl.

Другие вопросы по тегам