веб-сервис Java мыло, как получить список из запроса XML - PullRequest
0 голосов
/ 22 октября 2018

Я работаю с веб-сервисом SOAP.Я хочу восстановить список productOrder из Java.Моя проблема в том, что список productOrder, восстановленный из класса Java, равен нулю.

Я не знаю, как восстановить этот список из Java.

Ниже я объясню свои классы:

Это запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://uciext.ws.hw3/wsdl">
   <soapenv:Header/>
   <soapenv:Body>
      <wsdl:processOrder>
         <!--Optional:-->
         <arg0>
            <vendorCode>330029</vendorCode>
            <vendorName>My Shop</vendorName>
            <orderNumber>1000339</orderNumber>
            <!--1 or more repetitions:-->
            <wsdl:productOrder>
               <!--Optional:-->
               <productSku>111</productSku>
               <!--Optional:-->
               <productName>Kindle Fire</productName>
               <!--Optional:-->
               <orderQuantity>5</orderQuantity>
            </wsdl:productOrder>
         </arg0>
      </wsdl:processOrder>
   </soapenv:Body>
</soapenv:Envelope>

У меня есть Order.java для анализа этого xml

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "vendorCode",
    "vendorName",
    "orderNumber",
    "productOrder"
})
@XmlRootElement(name = "order")
public class Order {

    @XmlElement(required = true)
    protected String vendorCode;
    @XmlElement(required = true)
    protected String vendorName;
    @XmlElement(required = true)
    protected String orderNumber;
    @XmlElement(required = true)
    protected List<ProductOrder> productOrder;


    public String getVendorCode() {
        return vendorCode;
    }



    public void setVendorCode(String value) {
        this.vendorCode = value;
    }



    public String getVendorName() {
        return vendorName;
    }



    public void setVendorName(String value) {
        this.vendorName = value;
    }



    public String getOrderNumber() {
        return orderNumber;
    }



    public void setOrderNumber(String value) {
        this.orderNumber = value;
    }



    public List<ProductOrder> getProductOrder() {
        if (productOrder == null) {
            productOrder = new ArrayList<ProductOrder>();
        }
        return this.productOrder;
    }



}

У меня есть метод processOrder в интерфейсе и их реализация.Этот
является интерфейсом

@WebService(targetNamespace = "http://uciext.ws.hw3/wsdl")
public interface OrderServiceWS {

    @WebMethod
    OrderConfirm processOrder(@WebParam(name="arg0", mode=Mode.IN) Order order) throws Exception;



}

processOrder находится в классе

@XmlRootElement(name = "processOrder", namespace = "http://uciext.ws.hw3/wsdl")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "processOrder", namespace = "http://uciext.ws.hw3/wsdl")
public class ProcessOrder {

    @XmlElement(name = "arg0", namespace = "")
    private com.uciext.ws.hw3.service.model.order.Order arg0;


    public com.uciext.ws.hw3.service.model.order.Order getArg0() {
        return this.arg0;
    }



    public void setArg0(com.uciext.ws.hw3.service.model.order.Order arg0) {
        this.arg0 = arg0;
    }

}

Это реализация интерфейса, которая называется методом processOrder.

@WebService(
           portName = "OrderPort",
           serviceName = "OrderService",
           targetNamespace = "http://uciext.ws.hw3/wsdl",
           endpointInterface = "com.uciext.ws.hw3.service.OrderServiceWS")
public class OrderServiceWSImpl implements OrderServiceWS {

    private InventoryManagerImpl manager = new InventoryManagerImpl();

    @Override
    public OrderConfirm processOrder(Order order) throws Exception {
        Util.log("SOAP processOrder request [ order=" + order);
        Util.log("OrderServiceWS start processOrder");
        OrderDAO orderDAO = new OrderDAO();
        List<ProductOrder> productOrderList = new ArrayList<ProductOrder>();
        List<ProductOrderDAO> productOrderDAOList = new ArrayList<ProductOrderDAO>();
        ProductOrderDAO productOrderDAO1 = null;
        ProductDAO productDAO = null;
        OrderConfirm orderConfirm = null;
        ProductOrder productOrder = null;
        ProductConfirm productConfirm = null;
        List<ProductConfirm> productConfirmList = new ArrayList<ProductConfirm>();
        Double totalPrice = 0.0;

        Util.log("OrderServiceWS start processOrder vendorCode "+order.getVendorCode());

        orderDAO.setVendorCode(order.getVendorCode());
        orderDAO.setVendorName(order.getVendorName());
        orderDAO.setOrderId(Long.parseLong(order.getOrderNumber()));
        Util.log("OrderServiceWS processOrder before productOrderList ");




        productOrderList = order.getProductOrder();


        Util.log("OrderServiceWS processOrder before productOrderList size  "+productOrderList.size());

Значение vendorCode является правильным, но productOrderList.size () имеет значение cero

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...