axis web service傳送 兩個 對象數組

先是 調用測試端代碼:

  SimDesignVariable[] designValue = new SimDesignVariable[1000];
  designValue[0] = new SimDesignVariable("psSpringXIn",0.0);
  designValue[1] = new SimDesignVariable("psSpringYIn",0.0);
  designValue[2] = new SimDesignVariable("psSpringZIn",0.0);
  
  designValue[3] = new SimDesignVariable("psSpringXOut",0.0);
  designValue[4] = new SimDesignVariable("psSpringYout",0.0);
  designValue[5] = new SimDesignVariable("psSpringZout", 0);
  
  designValue[6] = new SimDesignVariable("ssSpringX",0.0);
  designValue[7] = new SimDesignVariable("ssSpringY",0.0);
  designValue[8] = new SimDesignVariable("ssSpringZ",0.0);
  

  
//  另一個定長對象數組
  SimObjectiveFunction[] obfunctionValue = new SimObjectiveFunction[100];
  obfunctionValue[0] = new SimObjectiveFunction("WzY",0.0);
  obfunctionValue[1] = new SimObjectiveFunction("WzZ",0.0);
  obfunctionValue[2] = new SimObjectiveFunction("Vcr",0.0);
  
  String targetEendPoint = "http://166.22.55.102:8080/axis/services/SimCallOptXml?wsdl";
  Object result = new Object();
  // System.out.println(order.isChecked());
  try {

   Service service = new Service();
   Call call = (Call) service.createCall();
   QName qn = new QName("urn:SimCallOptXml", "Orde");
   QName qn22 = new QName("urn:SimCallOptXml", "Order");
   call.registerTypeMapping(SimDesignVariable.class, qn,
     new org.apache.axis.encoding.ser.BeanSerializerFactory(
       SimDesignVariable.class, qn),
     new org.apache.axis.encoding.ser.BeanDeserializerFactory(
       SimDesignVariable.class, qn));

   call.registerTypeMapping(SimObjectiveFunction.class, qn22,
     new org.apache.axis.encoding.ser.BeanSerializerFactory(
       SimObjectiveFunction.class, qn22),
     new org.apache.axis.encoding.ser.BeanDeserializerFactory(
       SimObjectiveFunction.class, qn22));
   call.setTargetEndpointAddress(new java.net.URL(targetEendPoint));
   call.setOperationName(new QName("SimCallOptXml", "procress"));
   System.out.println("Success...");
   call.addParameter("arg1", qn, ParameterMode.IN);
   call.addParameter("arg2", qn22, ParameterMode.IN);
   call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
   result = (String) call.invoke(new Object[] { designValue, obfunctionValue });

   
  }
  catch (AxisFault fault) {
   result = "Error is: " + fault.toString();
  }
  catch (IOException e) {
   e.printStackTrace();
  } catch (ServiceException e) {
   e.printStackTrace();
  }

 

    上面比較重要的就是怎樣添加兩種供 Call識別的 參數類型(SimDesignVariable類, 和SimObjectiveFunction類)

 

  被調用的SimCallOptXml類 中  procress(SimDesignVariable[ ] degsign, SimObjectiveFunction[ ] obfunctionValue)  

  在發佈服務的描述文件server-config.wsdd 中的片段:

 

     <service name="SimCallOptXml" provider="java:RPC">
  <parameter name="allowedMethods" value="procress"/>
  <parameter name="className" value="objectTest.simCallOpt.SimCallOptXml"/>
  <beanMapping languageSpecificType="java:objectTest.simCallOpt.SimDesignVariable" qname="ns3:SimDesignVariable" xmlns:ns3="urn:SimCallOptXml"/>
  <beanMapping languageSpecificType="java:objectTest.simCallOpt.SimObjectiveFunction" qname="ns3:SimObjectiveFunction" xmlns:ns3="urn:SimCallOptXml"/>
 </service>

 

   主要是多添加了一個 beanMapping  標籤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章