Aegis 是一个默认的 Xfire 绑定方式,它将 XML 映射为 POJO, 支持代码先行的开发.你开发服 务类与 POJO,它为你生成 XML schema/wsdl
XML 和 注解映射概览
默认情况下,你的 POJO 类被是基于他们的名字与命名空间被序列化。如果你有一个类在 "org.codehaus.xfire"包里,名字叫"Employee",它会被使用命名空间"http://xfire.codehaus.org" 和本地名字 "Employee"进行序列化。
举例:
public class Employee {
private String name;
private String title;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
在 XML 里它被转换成:
<Employee xmlns="http://xfire.codehaus.org">
<name>Santa Claus</name>
<title>Chief Present Officer (CPO)</title>
</Employee>
在 XML Schema 里变的更为复杂:
<xsd:complexType name="Employee">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1/>
<xsd:element name="title" type="xsd:string" minOccurs="0" maxOccurs="1/>
</xsd:sequence>
</xsd:complexType>
支持的类型
-
基本类型: int, double, float, long, byte[], short, String, BigDecimal Arrays Collections
-
日期: java.util.Date, java.util.Calendar, java.sql.Timestamp, java.sql.Date, java.sql.Time
-
XML: org.w3c.dom.Docmument, org.jdom.Element, XMLStreamReader, Source
-
以上类型的聚合类
如果 Java bean 里定义了构造函数,一定不能忘记定义一个默认的构造函数(无参)。(Aegis 需要一个无参的构造器来初始化客户端 java 类)
使用 XML 控制映射
使用 Aegis 很容易控制从 bean 到 xml 的转换。 .aegis.xml 映射配置文件必须存在于和你的 bean 或者服务类相同的包中,且命名为与 bean 或服务类相同名字。
以上例子应当命名为"/org/codehaus/xfire/Employee.aegis.xml", 格式如下:
<mappings>
<mapping uri="" name="">
<method name="methodName">
<return-type mappedName="" componentType=""/>
<parameter index="" mappedName=""/>
</method>
<property name="" mappedName="" style="attribute|element" componentType=""/>
</mapping>
</mappings>
当你创建 ClassName.aegis.xml 来控制映射的时候, 你只会用到一个 mapping 元素, 并且你 不需要在 mapping 元素上使用任何的属性. 使用一到多个 property 元素指定属性的映射. 使 用 name=指明要映射的属性名(Pojo 中名字). <method> 用于配置服务类中的方法 <property> 用于配置 javabean 中的属性 用于配置 服务类中的方法, 中的属性.
上边的例子显示出了许多可能使用的元素, 上边的例子显示出了许多可能使用的元素,大部分都是可选的
控制命名
假设上边的例子需要元素首字母大写,并且使用"urn:north-pole:operations"命名空间. 配置文件 就修改成:
<mappings xmlns:np="urn:north-pole:operations">
<mapping name="np:Employee">
<property name="name" mappedName="Name"/>
<property name="title" mappedName="Title"/>
</mapping>
</mappings>
命名空间被定义在了 mappings 元素里。 之后这个前缀被用于为 name/title 指定 QNames 元素, 使映射变成以下:
<np:Employee xmlns:np="urn:north-pole:operations">
<np:Name>Santa Claus</np:Name>
<np:Title>Chief Present Officer (CPO)</np:Title>
</np:Employee>
忽略属性
如果要使某个属性不被序列化,可以加 ignore 来实现。:
<mappings>
<mapping>
<property name="propertyName" ignore="true"/>
</mapping>
</mappings>
控制 minOccurs 和 nillable
默认的 Aegis 的假设任意的 java 对象可以为空,那么相关的 schema 元素应当设为为 minOccurs=’0’ 且 nillable=’true’. 配置文件中也有属性对此进行控制。
<mappings>
<mapping>
<property name='everpresentProperty' minOccurs='1' nillable='false'/>
</mapping>
<mappings>
使用 Aegis 基本类型
为了使用在"org.codehaus.xfire.aegis.type.basic"包里 Aegis 提供的多种类型,接下来的例子使 wsdl 使用"xsd:date"而不是默认的"xsd:dateTime"
<mappings xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<mapping>
<property name="birthDate" type="org.codehaus.xfire.aegis.type.basic.DateType" typeName="xsd:date" />
</mapping>
</mappings>
在 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>
分享到:
相关推荐
2. **xfire-aegis**: Aegis绑定器是xfire的一个组件,它允许直接在Java对象上进行SOAP绑定,无需编写额外的接口或类。Aegis使用了XFire的代码生成器,可以自动生成WSDL(Web服务描述语言)文档。 3. **xfire-...
`aegis.xml`配置文件主要用于在Web服务(尤其是使用了XFire框架的情况下)中定义如何处理复杂的数据类型,特别是那些集合类型的参数或返回值。通过配置`aegis.xml`文件,开发者能够确保Web服务能够正确解析这些复杂...
3. **数据绑定**:通过JAXB和Aegis,Xfire可以方便地将Java对象与XML数据进行绑定,简化了数据的序列化和反序列化过程。 4. **MTOM/XOP**:Xfire支持Message Transmission Optimization Mechanism (MTOM)和XML-...
4. **Aegis绑定器**:Aegis是XFire的一部分,它负责将Java对象序列化和反序列化为XML。Aegis绑定器允许你在不使用XML Schema的情况下,直接将普通的Java对象转换为Web服务消息,反之亦然。这极大地提高了开发效率,...
2. xfire-aegis:Aegis是XFire的一个子项目,提供了对象到XML的绑定,允许将Java对象直接映射为SOAP消息,反之亦然。 3. xfire-annotations:这个模块支持使用Java注解来定义Web服务接口和实现,使得代码更简洁、易...
2. **xfire-aegis.jar**:Aegis是XFire的一个数据绑定模块,用于将Java对象与XML进行映射。它允许开发人员使用简单的Java注解或XML Schema来定义数据模型,并自动处理序列化和反序列化过程。 3. **xfire-...
xfire-aegis-1.2.6.jar
例如,Aegis绑定提供了高性能且轻量级的解决方案,而JAXB则更适用于Java对象到XML的自动化映射。 总的来说,XFire用户库包是开发Web Services服务的重要资源。通过理解和熟练运用这个库,开发者可以快速构建健壮、...
8. **xfire-aegis-1.2.6.jar**:Aegis是xfire的一个绑定模块,负责将Java对象与XML Schema映射,实现对象到XML的自动转换。 9. **XmlSchema-1.1.jar**:这个库提供了XML Schema的处理能力,帮助验证XML文档是否符合...
3. **XML绑定**:通过Aegis绑定,XFire将Java对象直接映射到XML,反之亦然,使得数据交换更加简单。 4. **模块化设计**:XFire采用模块化设计,允许用户按需选择和组合所需的组件,降低了系统的复杂性。 5. **...
XFire之所以得到广泛的关注,一方面是因为它对性能的优化,另一方面是因为其灵活的接口和对多种绑定方式的支持。这使得XFire在实现服务接口的时候提供了多种选择,包括但不限于POJO、XMLBeans、JAXB 1.1、JAXB 2.0、...
Aegis数据绑定支持基本的数据类型、集合、Map以及自定义的Java类,为开发者提供了一种灵活的方式来处理Java对象和服务之间的转换。 以下是使用Apache CXF结合Spring发布Web Services(Aegis数据绑定)的基本步骤: ...
2. **XML Binding (XFire Aegis)**:XFire使用Aegis绑定,这是一种基于Java反射的机制,可以将Java对象直接序列化和反序列化为XML,支持自定义数据类型。 3. **配置文件**:XML配置文件(如`xfire.xml`)是XFire的...
XFire通过XML绑定(如JAXB)和数据绑定框架(如Aegis)将Java类与SOAP消息进行映射。 2. **Web服务基础**: Web服务是一种基于网络的应用程序接口,使用标准的XML格式来交换数据。它们通常通过SOAP(简单对象访问...
5. **Aegis绑定**:XFire特有的Aegis绑定机制,允许直接将Java类映射到XML,无需编写复杂的XML Schema定义。 6. **插件系统**:XFire拥有强大的插件系统,允许扩展其功能,如添加新的数据绑定机制、序列化器或协议...
此外,你需要配置URL映射,将`.ws`请求路由到`HelloWebService`处理,从而实现通过URL调用Web Service。 测试阶段,你可以通过HTTP方式访问`.ws?wsdl`来获取Web Service的描述文件。这个文件可以在客户端用来调用...
- **xfire-aegis-1.2.6.jar**:Aegis绑定是XFire的一种数据绑定机制,能够将Java对象直接映射到XML,简化了数据交换的过程。 - **xfire-generator-1.2.6.jar**:代码生成器,可以自动生成基于WSDL的服务端和客户端...
webservice中用到的jar,xfire-aegis-1.2.6.jar
5. **Aegis绑定**: XFire特有的Aegis绑定层,允许直接在POJO(Plain Old Java Object)上暴露服务,无需额外的XML注解,进一步简化了服务的开发过程。 6. **拦截器机制**: XFire支持拦截器,开发者可以通过编写拦截...