从 wsgen 工具生成 wsdl 时出错
我正在 wsgen 工具的帮助下尝试生成 wsdl。我已经认可了 jaxb-api.jar 和 jaxws-api.jar 文件。
我有一个 TestTo 库,其中包含 TestTo 类 AS
public class TestingTo implements Serializable{
public String name;
}
该 TestTO 库包含在 webservice 项目中。
我的 WebService 如下 -
@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;
}
}
当我为 Wsgen 运行 Ant 脚本时,出现以下错误 -
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
现在我将我的 Web 服务修改为
@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。
谢谢, 阿迪什
I am trying out wsdl generation with the help of the wsgen tool. I have endorsed jaxb-api.jar and jaxws-api.jar files.
I have a library TestTo which has TestingTo class AS
public class TestingTo implements Serializable{
public String name;
}
This TestTO library is included in webservice project.
My WebService is as below-
@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;
}
}
When I run Ant script for Wsgen I get following error -
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
Now I modified my webservice as
@WebService()
@XmlSeeAlso({
TestingTo.class
})
public class IcfInfra {
...
}
When I execute ant script i get error as -
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)
Appreciate If someone can let me know what needs to be done in order to sucessfully generate the wsdl.
Thanks,
Adish
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我通常使用CXF作为SOAP实现并使用maven进行项目配置,请参阅最后的链接(有一个示例项目可供下载)。但我的猜测是,您必须像这样设置 TestTo 类的访问器类型(请参阅 javadoc):
CXF:使用 java 生成的 wsdl 定义契约优先 Web 服务
I usualy use CXF as SOAP implementation and maven for project configuration, see the link at the end (there is a sample project to download). But my guess is that you have to set the accessor type for your TestingTo class like this (see javadoc):
CXF: Defining Contract first webservices with wsdl generation from java