首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Aegis 默许的 Xfire 绑定方式,将 XML 映射为 POJO

2012-11-23 
Aegis 默认的 Xfire 绑定方式,将 XML 映射为 POJO????? Aegis 是一个默认的 Xfire 绑定方式,它将 XML 映射

Aegis 默认的 Xfire 绑定方式,将 XML 映射为 POJO

????? Aegis 是一个默认的 Xfire 绑定方式,它将 XML 映射为 POJO, 支持代码先行的开发.你开发服 务类与 POJO,它为你生成 XML schema/wsdl


XML 和 注解映射概览


????? 默认情况下,你的 POJO 类被是基于他们的名字与命名空间被序列化。如果你有一个类在 "org.codehaus.xfire"包里,名字叫"Employee",它会被使用命名空间"http://xfire.codehaus.org" 和本地名字 "Employee"进行序列化。

举例:

??

???? 当你创建 ClassName.aegis.xml 来控制映射的时候, 你只会用到一个 mapping 元素, 并且你 不需要在? mapping 元素上使用任何的属性. 使用一到多个 property 元素指定属性的映射. 使 用 name=指明要映射的属性名(Pojo 中名字). <method> 用于配置服务类中的方法 <property> 用于配置 javabean 中的属性 用于配置 服务类中的方法, 中的属性.


上边的例子显示出了许多可能使用的元素, 上边的例子显示出了许多可能使用的元素,大部分都是可选的

?

控制命名

?

?假设上边的例子需要元素首字母大写,并且使用"urn:north-pole:operations"命名空间. 配置文件 就修改成:

?

命名空间被定义在了 mappings 元素里。 之后这个前缀被用于为 name/title 指定 QNames 元素, 使映射变成以下:

?

控制 minOccurs 和 nillable
默认的 Aegis 的假设任意的 java 对象可以为空,那么相关的 schema 元素应当设为为 minOccurs=’0’ 且 nillable=’true’. 配置文件中也有属性对此进行控制。

?

在 java 代码里设置默认的 minOccurs 和 nillable 参数

?

?

如果你有大部分或者所有的属性都有一个非 0 的 minOccurs 或者非 false 的 nillable, 你可以在 java 代码里更改 Aegis 默认设置
示例:它从服务工厂得到了 binding provider,改变了配置参数

?

?

?

AnnotationServiceFactory serviceFactory = new AnnotationServiceFactory(); // We 'happen to know' what types are used. AegisBindingProvider binder = (AegisBindingProvider)serviceFactory.getBindingProvider() ; DefaultTypeMappingRegistry tmr = (DefaultTypeMappingRegistry)binder.getTypeMappingRegistry (); // here we disuade XFire from its rather annoying tendency to assume that, just because // anything in Java can be null, that we want to advertise all that nullity all over. Configuration configuration = tmr.getConfiguration(); configuration.setDefaultMinOccurs(1); configuration.setDefaultNillable(false);

?

nillable="true":该元素的值可以为空,但是该元素不能省略,也就是说,

只能:该元素的值可以为空,但是该元素不能省略,也就是说,只能: <minzero xsi:nil="true"><minzero> 而不能直接将 minzero 这个元素去掉 应该就是表示这个元素为空) (注意:xsi:nil="true"或者 xsi:nil="1"应该就是表示这个元素为空)

注意: 或者 应该就是表示这个元素为空 minOccurs="0":该元素可以直接被省略掉,但是不能让该元素? 的值为空,也就是说,

不能: :该元素可以直接被省略掉,但是不能让该元素的值为空,也就是说,不能: <minzeroxsi:nil="true"><minzero>

热点排行