Netty+XML协议栈开发-高效XML绑定框架JiBX

Netty+XML协议栈开发-高效XML绑定框架JiBX

Tags: Netty Xml

摘要

JiBX入门,JiBX示例,Netty+XML协议栈开发-高效XML绑定框架JiBX

Netty+XML开发场景介绍

作为一个示例程序,我们先模拟一个简单的用户订购系统。客户端填写订单,通过HTTP客户端向服务器端发送订购请求,请求消息放在HTTP消息体重,以XML承载,既采用HTTP+XML的方式进行通讯。

HTTP服务器端接受到订购请求后,对订单请求进行修改,然后通过HTTP+XML的方式返回应答信息。双方采用HTTP1.1协议,连接类型为CLOSE方式,即双方交互完成,由HTTP服务端主动关闭链路,随后客户端也关闭链路并退出。

Netty不支持xml的序列化和反序列化,这就是本节需要了解的,使用JiBX操作XML,实现pojo和XML之间的相互转换。

JiBX下载地址

jibx 1.2.6 用到的lib下载地址
https://sourceforge.net/projects/jibx/files/jibx/jibx-1.2.6/
解压后有个lib文件夹使我们后面会用到的
C:\Users\Administrator\Desktop\jibx_1_2_6\jibx\lib

准备pojo文件

geter,seter请自行补齐

package netty_http_xml;

public class Order {
    private long orderNumber;
    private Customer customer;
    private Address billTo;
    private Shipping shipping;
    private Address shipTo;
    private Float total;

    @Override
    public String toString() {
        return "Order [orderNumber=" + orderNumber + ", customer=" + customer
                + ", billTo=" + billTo + ", shipping=" + shipping.toString()
                + ", shipTo=" + shipTo + ", total=" + total + "]";
    }
}
package netty_http_xml;
import java.util.List;
public class Customer {
    private long customerNumber;
    private String firstName;
    private String lastName;
    private List<String> middleNames;
}
package netty_http_xml;
public class Address {
    // required
    private String street1;
    //optional
    private String street2;
    private String city;
    private String state;
    private String postCode;
    private String country;
}
package netty_http_xml;
public enum Shipping {
    STANDARD_MAIL,
    PRIORITY_MAIL,
    INTERNATIONAL_MAIL,
    DOMESTIC_EXPRESS,
    INTERNATIONAL_EXPRESS
}

生成schame文件,bind.xml文件,class类

项目所在文件夹如下
M:\coding_test_proj\netty-http

01 在该目录下 mvn compile , 生成class文件

02进入classes文件夹,生成bind文件

 java -Djava.ext.dirs=C:\Users\Administrator\Desktop\jibx_1_2_6\jibx\lib    org.jibx.binding.generator.BindGen -b bind.xml netty_http_xml.Order

03 运行mvn jibx:bind生成需要的class文件

进入项目根目录 M:\coding_test_proj\netty-http
运行mvn jibx:bind

04 查看效果

运行 TestOrder.java 可以看到xml和java之间能正常相互转换

完整代码地址

 https://coding.net/u/javacore/p/netty-http/git/tree/master/src/main/java/netty_http_xml