Ошибка при генерации wsdl из инструмента wsgen - PullRequest
0 голосов
/ 29 апреля 2011

Я пробую генерацию wsdl с помощью инструмента wsgen. Я одобрил файлы jaxb-api.jar и jaxws-api.jar.

У меня есть библиотека TestTo, которая имеет класс TestingTo AS

public class TestingTo implements Serializable{
    public String name;
}

Эта библиотека TestTO включена в проект веб-сервиса.

Мой веб-сервис как ниже-

@WebService()
public class IcfInfra {

    @WebMethod(operationName = "printTest")
    public TestingTo printTest(@WebParam(name = "string") String string)
    {
        TestingTo to = new TestingTo();
        to.name = string;
        System.out.println(string);
        return to;
    }
}

Когда я запускаю скрипт Ant для Wsgen, я получаю следующую ошибку -

main:
     [exec] Note:       ap round: 1
     [exec] Problem encountered during annotation processing;
     [exec] see stacktrace below for more information.
     [exec] java.lang.NullPointerException
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisit
or.isLegalType(WebServiceVisitor.java:794)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisit
or.isLegalMethod(WebServiceVisitor.java:642)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisit
or.methodsAreLegal(WebServiceVisitor.java:611)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisit
or.isLegalImplementation(WebServiceVisitor.java:529)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisit
or.shouldProcessWebService(WebServiceVisitor.java:332)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisit
or.visitClassDeclaration(WebServiceVisitor.java:123)
     [exec]     at com.sun.tools.apt.mirror.declaration.ClassDeclarationImpl.acc
ept(ClassDeclarationImpl.java:95)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceAP.bu
ildModel(WebServiceAP.java:329)
     [exec]     at com.sun.tools.ws.processor.modeler.annotation.WebServiceAP.pr
ocess(WebServiceAP.java:270)
     [exec]     at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationPr
ocessor.process(AnnotationProcessors.java:60)
     [exec]     at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
     [exec]     at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java
:258)
     [exec]     at com.sun.tools.apt.main.Main.compile(Main.java:1102)
     [exec]     at com.sun.tools.apt.main.Main.compile(Main.java:964)
     [exec]     at com.sun.tools.apt.Main.processing(Main.java:95)
     [exec]     at com.sun.tools.apt.Main.process(Main.java:85)
     [exec]     at com.sun.tools.apt.Main.process(Main.java:67)
     [exec]     at com.sun.tools.ws.wscompile.WsgenTool.buildModel(WsgenTool.jav
a:219)
     [exec]     at com.sun.tools.ws.wscompile.WsgenTool.run(WsgenTool.java:123)
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces
sorImpl.java:39)
     [exec]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
hodAccessorImpl.java:25)
     [exec]     at java.lang.reflect.Method.invoke(Method.java:597)
     [exec]     at com.sun.tools.ws.Invoker.invoke(Invoker.java:131)
     [exec]     at com.sun.tools.ws.WsGen.main(WsGen.java:52)
     [exec] error: compilation failed, errors should have been reported
     [exec] Result: 1

Теперь я изменил свой веб-сервис как

@WebService()
@XmlSeeAlso({
    TestingTo.class
})
public class IcfInfra {
   ...
}

Когда я выполняю ant-скрипт, я получаю ошибку как -

main:
     [exec] Exception in thread "main" java.lang.ArrayStoreException: sun.reflec
t.annotation.TypeNotPresentExceptionProxy
     [exec]     at sun.reflect.annotation.AnnotationParser.parseClassArray(Annot
ationParser.java:653)
     [exec]     at sun.reflect.annotation.AnnotationParser.parseArray(Annotation
Parser.java:460)
     [exec]     at sun.reflect.annotation.AnnotationParser.parseMemberValue(Anno
tationParser.java:286)
     [exec]     at sun.reflect.annotation.AnnotationParser.parseAnnotation(Annot
ationParser.java:222)
     [exec]     at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Ann
otationParser.java:69)
     [exec]     at sun.reflect.annotation.AnnotationParser.parseAnnotations(Anno
tationParser.java:52)
     [exec]     at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070)
     [exec]     at java.lang.Class.getAnnotation(Class.java:3029)
     [exec]     at com.sun.tools.ws.wscompile.WsgenOptions.validateEndpointClass
(WsgenOptions.java:244)
     [exec]     at com.sun.tools.ws.wscompile.WsgenOptions.validate(WsgenOptions
.java:226)
     [exec]     at com.sun.tools.ws.wscompile.WsgenTool.run(WsgenTool.java:122)
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces
sorImpl.java:39)
     [exec]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
hodAccessorImpl.java:25)
     [exec]     at java.lang.reflect.Method.invoke(Method.java:597)
     [exec]     at com.sun.tools.ws.Invoker.invoke(Invoker.java:131)
     [exec]     at com.sun.tools.ws.WsGen.main(WsGen.java:52)

Оцените Если кто-то может сообщить мне, что нужно сделать, чтобы успешно сгенерировать wsdl.

Спасибо, Adish

1 Ответ

0 голосов
/ 29 апреля 2011

Обычно я использую CXF в качестве реализации SOAP и maven для конфигурации проекта, см. Ссылку в конце (есть пример проекта для загрузки). Но я предполагаю, что вы должны установить тип доступа для вашего класса TestingTo следующим образом (см. javadoc ):

@XmlAccessorType( XmlAccessType.FIELD )
public class TestingTo implements Serializable{
    public String name;
}

CXF: Определение первых веб-сервисов Contract с генерацией wsdl из java

...