问一个根据WSDL文件编写web service客户端的问题

21 views
Skip to first unread message

shorthair

unread,
Sep 6, 2007, 3:37:51 AM9/6/07
to cxf-zh
Hi,
大家好,最近接到一个任务是根据客户提供的几个WSDL文件和XSD文件,编写一个客户端Java程序。
我一开始用的是AXIS 1.4,可是写出客户端和测试用的service以后发现,传输的SOAP消息结构不正确,后来去maillist查了一下,
那个问题好像是AXIS的一个关于数组映射的bug。
所以我想改用CXF来写客户端,不知道怎么开发比较简单,之前我用AXIS的时候都没有用IDE,用CXF是不是也可以这样做,还是一定要跟
SPRING或者eclipse结合起来用啊,因为我一直没用java的IDE,对java也不是很熟
我本来想看看CXF网站上的user guide,可是那个好像写的很不清楚。

问题比较初级。

想问问大家有什么建议?

先谢过了

shorthair

maomao

unread,
Sep 6, 2007, 3:50:17 AM9/6/07
to cxf-zh
用wsdl2java就可以了, 会帮助你产生客户端和服务端的代码,只要完成你的impl这个类就可以了

http://cwiki.apache.org/confluence/display/CXF20DOC/Tools

shorthair

unread,
Sep 6, 2007, 3:53:31 AM9/6/07
to cxf-zh
谢谢

另外因为我自己还要写个测试用的service,那server端也可以根据这个生成么?
有没有象axis那样可以通过deploy.wsdd来发布服务?

James Mao

unread,
Sep 6, 2007, 4:15:11 AM9/6/07
to cxf...@googlegroups.com
也可以,可以部署到tomcat, 你可以看看sample里面的例子, 按照Readme的步骤来做就可以

Forza Milan

unread,
Sep 9, 2007, 10:19:24 PM9/9/07
to cxf...@googlegroups.com
Hi,

请问我用cxf的wsdl2java工具生成java文件时候为什么会有这样的error啊?

WSDLToJava Error : Thrown by JAXB : undefined attribute 'emf-envelope:encodingStyle'

同样的文件我用axis1.4的时候没有问题

谢谢

James Mao

unread,
Sep 9, 2007, 10:24:13 PM9/9/07
to cxf...@googlegroups.com
第一步, 你可以把-validate打开,校验一下你的wsdl是否正确,

其次, 你打开verbose模式,看看stacktrace,  或者把wsdl发上来,

你用了encoding soap?
jaxws2.0不支持rpc/encoding

Forza Milan

unread,
Sep 9, 2007, 11:26:32 PM9/9/07
to cxf...@googlegroups.com
我自己试了一下
validate的时候有nullpointer exception

Loading FrontEnd jaxws ...
Loading DataBinding jaxb ...
wsdl2java -client -validate -verbose ENS-Notf-S-Concrete.wsdl
wsdl2java - 2.0.1-incubator


WSDLToJava Error : java.lang.NullPointerException

org.apache.cxf.tools.common.ToolException: java.lang.NullPointerException
        at org.apache.cxf.tools.validator.internal.WSDLRefValidator.<init>(WSDLRefValidator.java:118)
        at org.apache.cxf.tools.validator.internal.WSDL11Validator.isValid(WSDL11Validator.java:86)
        at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.validate(JAXWSDefinitionBuilder.java
:204)
        at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.validate(JAXWSDefinitionBuilder.java
:63)
        at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java :149)
        at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:234)
        at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83)
        at org.apache.cxf.tools.wsdlto.WSDLToJava.run (WSDLToJava.java:102)
        at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:171)
Caused by: java.lang.NullPointerException
        at org.apache.cxf.tools.validator.internal.ValidatorUtil.getImportedWsdlMap (ValidatorUtil.java:144)
        at org.apache.cxf.tools.validator.internal.ValidatorUtil.getImportedWsdlMap(ValidatorUtil.java:169)
        at org.apache.cxf.tools.validator.internal.ValidatorUtil.getSchemaList(ValidatorUtil.java :101)
        at org.apache.cxf.tools.validator.internal.WSDLRefValidator.<init>(WSDLRefValidator.java:114)
        ... 8 more

可以帮忙给看看么?

万分感谢
wsdl.rar

maomao

unread,
Sep 9, 2007, 11:38:25 PM9/9/07
to cxf-zh
看了一下wsdl, 你的ENS-Notf-S-Abstract.wsdl 中schema部分写的有问题,
正确写法,应该是把schema的import写在
<wsdl:types>
<xsd:schema>
<xsd:import namespace="YOUR_NAME_SPACE"
schemaLocation="YOUR_SCHEMA/>
</xsd:schema>
</wsdl:types>
要用types包起来, 否则wsdl2java 把schema当作wsdl来处理,所以有异常,不过我们应该把错误消息,更好的报告出来,而不是
NEP, 我等下fix这个问题
谢谢你的报告 :)

> at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:102)


> at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:171)
> Caused by: java.lang.NullPointerException
> at
> org.apache.cxf.tools.validator.internal.ValidatorUtil.getImportedWsdlMap(
> ValidatorUtil.java:144)
> at
> org.apache.cxf.tools.validator.internal.ValidatorUtil.getImportedWsdlMap(
> ValidatorUtil.java:169)
> at
> org.apache.cxf.tools.validator.internal.ValidatorUtil.getSchemaList(
> ValidatorUtil.java:101)
> at org.apache.cxf.tools.validator.internal.WSDLRefValidator.<init>(
> WSDLRefValidator.java:114)
> ... 8 more
>
> 可以帮忙给看看么?
>
> 万分感谢
>

> On 9/10/07, James Mao <maoma...@gmail.com> wrote:
>
>
>
> > 第一步, 你可以把-validate打开,校验一下你的wsdl是否正确,
>
> > 其次, 你打开verbose模式,看看stacktrace, 或者把wsdl发上来,
>
> > 你用了encoding soap?
> > jaxws2.0不支持rpc/encoding
>

> > On 9/10/07, Forza Milan <shorth...@gmail.com> wrote:
>
> > > Hi,
>
> > > 请问我用cxf的wsdl2java工具生成java文件时候为什么会有这样的error啊?
>
> > > WSDLToJava Error : Thrown by JAXB : undefined attribute
> > > 'emf-envelope:encodingStyle'
>
> > > 同样的文件我用axis1.4的时候没有问题
>
> > > 谢谢
>

> > > On 9/6/07, James Mao <maoma...@gmail.com> wrote:
>
> > > > 也可以,可以部署到tomcat, 你可以看看sample里面的例子, 按照Readme的步骤来做就可以
>

> > > > On 9/6/07, shorthair < shorth...@gmail.com> wrote:
>
> > > > > 谢谢
>
> > > > > 另外因为我自己还要写个测试用的service,那server端也可以根据这个生成么?
> > > > > 有没有象axis那样可以通过deploy.wsdd来发布服务?
>
> > > > > On Sep 6, 3:50 pm, maomao <maoma...@gmail.com> wrote:
> > > > > > 用wsdl2java就可以了, 会帮助你产生客户端和服务端的代码,只要完成你的impl这个类就可以了
>
> > > > > >http://cwiki.apache.org/confluence/display/CXF20DOC/Tools
>
> > > > > > On Sep 6, 3:37 pm, shorthair <shorth...@gmail.com > wrote:
>
> > > > > > > Hi,
> > > > > > > 大家好,最近接到一个任务是根据客户提供的几个WSDL文件和XSD文件,编写一个客户端Java程序。
> > > > > > > 我一开始用的是AXIS 1.4,
> > > > > 可是写出客户端和测试用的service以后发现,传输的SOAP消息结构不正确,后来去maillist查了一下,
> > > > > > > 那个问题好像是AXIS的一个关于数组映射的bug。
>
> > > > > 所以我想改用CXF来写客户端,不知道怎么开发比较简单,之前我用AXIS的时候都没有用IDE,用CXF是不是也可以这样做,还是一定要跟
> > > > > > > SPRING或者eclipse结合起来用啊,因为我一直没用java的IDE,对java也不是很熟
> > > > > > > 我本来想看看CXF网站上的user guide,可是那个好像写的很不清楚。
>
> > > > > > > 问题比较初级。
>
> > > > > > > 想问问大家有什么建议?
>
> > > > > > > 先谢过了
>
> > > > > > > shorthair
>
>
>

> wsdl.rar
> 10KDownload

Reply all
Reply to author
Forward
0 new messages