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>