soap java序列化_java – 在CXF中的SOAP响应错误地反序列化为null简单前端Aegis数据绑定...

我正在写一个SOAP Web服务的客户端.

我正在使用图书馆CXF.

与简单的前端.

和神盾数据绑定.

服务器正在为Web方法提供Java接口(名为MediaService),并在客户端项目中导入该接口.

然后我使用一个MediaService.aegis.xml文件来提供方法参数的名称(对于它们不被命名和序列化请求).

这是我在客户端上使用的代码:

ClientProxyFactoryBean factory = new ClientProxyFactoryBean();

factory.setDataBinding(new AegisDatabinding());

factory.setServiceClass(MediaService.class);

factory.setAddress(urlMediaServer);

MediaService service = (MediaService) factory.create();

final List listeReferences = service.sendMedia(bu, media);

服务界面如下所示:

public interface MediaService

{

public List sendMedia(String bu, Media media) throws Exception;

}

我启用了XML流日志记录,以便我看到发送到服务器的XML流,以及返回的流.

以下是流:

请求:

sc_phx

TEST_CODE

test.png

响应:

standard

photo

standard

photo

该服务被调用,它回复并且客户端收到正确的回复.

但是在客户端中,使Web Service调用的service.sendMedia(bu,media)行返回null.

反驳回复是有问题的.

你有什么想法,怎么解决?

最好的祝福.

更新:

我忘了提到这个方法:

MediaService service = (MediaService) factory.create();

我得到这个错误:

INFO: Creating Service {http://service.soclemedia.mycompany.com/}MediaService from class com.mycompany.soclemedia.service.MediaService

24 nov. 2011 15:18:37 org.apache.cxf.aegis.type.XMLTypeCreator

INFO: Could not set aegis schema. Not validating.

java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"

at javax.xml.parsers.DocumentBuilderFactory.setSchema(DocumentBuilderFactory.java:489)

at org.apache.cxf.aegis.type.XMLTypeCreator.(XMLTypeCreator.java:125)

at org.apache.cxf.aegis.AegisContext.createRootTypeCreator(AegisContext.java:122)

at org.apache.cxf.aegis.AegisContext.createTypeCreator(AegisContext.java:111)

at org.apache.cxf.aegis.AegisContext.initialize(AegisContext.java:153)

at org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:229)

at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)

at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:438)

at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:501)

at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241)

at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)

at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)

at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:153)

...

这是我的cxf.xml:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:cxf="http://cxf.apache.org/core"

xsi:schemaLocation="http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">

更新2:

这里是我的MediaService.aegis.xml:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值