본문 바로가기
xml

XML-RPC 보낼때....(공부해가면서 하기 ㅠㅠ)

by 바이홍 2008. 3. 26.
반응형

Bean객체 생성이 중요한거 같다.
그 빈의 이름으로 xml이 생성된다는 사실을 알자
일단 이거 하나가지고 다 돌아가는 것은 아닙니다. 순순히 참고 자료라는 사실을 ^^


import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Vector;

import org.apache.xmlrpc.XmlRpcClient;

public class test{
 public static void main(String args[]) throws SQLException{
  Vector sendParams = new Vector();
  ResultBean result = new ResultBean();
  String xml = "";
  String msg = "";
  int cnt = 0;
  int count = 0;
  Connection conn = null;
  try{
   XmlRpcClient server = new XmlRpcClient(XML_WebKey.ser); //XmlRpcClient클레스에
   conn = XmlRpcUtil.getConnection();
   // 서버메서드로 넘길 파라미터처리(ArrayList)
   TestDAO dao = new TestDAO();
   beanList testbean = new beanList();  //보낼데이터를 담을 bean.
   ArrayList beans = dao.getTest(conn);  //데이터를 testbean에 담는다.
   if(beans.size() > 0){     //데이터가 있는 경우를 체크.
   testbean.setbeanList(beans);    //bean을 ArrayList에 담는다.
    xml = XmlRpcUtil.writeBean(testbean); //writeBean에 Bean을 넣어 xml을 생성한다.
    sendParams.addElement(xml.getBytes());

   // 데이터 전송 & 결과값 리턴
   String ret = (String)server.execute(XML_WebKey.order, sendParams); //XML_WebKey클래스에 있는 order메서드를 호출한다. order에는 주소정보가 있다
   result = (ResultBean)XmlRpcUtil.readBean(ret, "result", ResultBean.class);
   msg += result.toString();

   // 리턴값처리 Message 성공시 (getCode() 000:성공 001:실패)
   if(result.getCode().equals("000")){
    conn.setAutoCommit(false);
    for(int j = 0 ; j < beans.size() ; j++){
     beanList delvorder = (beanList)beans.get(j);
     if(beanList.getNo().equals("")){
  //처리된 결과값이 성공일 시 성공이라는 flag를 확인하기 위해서 update한다.
      cnt = dao.updateTest(conn, delvorder.getNo(), delvorder.getCo(), delvorder.getPrd());
     }
     if(cnt == 1)count++;
    }
    if(count == beans.size()){
     conn.commit();
     msg = "성공";
    }else{
     conn.rollback();
     msg = "실패";
    }
   }
   }else if(beans.size() == 0){
    msg = " [TransmitDelvOrderFor] 전송할데이터가 없으므로, 원격메서드를 호출하지 않았습니다.";
   }else{
    msg = " [TransmitDelvOrderFor] 처리할 데이터가 0보다 적습니다.";
   }
  }catch(Exception e){
   conn.rollback();
   conn.setAutoCommit(true);
   e.printStackTrace();
   msg = "\r\n Exception("+XML_WebKey.transmit+"): " + e.toString();
  }finally{
   conn.setAutoCommit(true);
   if(conn != null) conn.close();
   XmlRpcUtil.logsXml(xml, "Test");
   XmlRpcUtil.logs(msg, "Test");
  }
 }
 private static final long serialVersionUID = 42L;
}

반응형