제목이 적절한지 모르겠지만...
우선 axis 엔진에서 기본적인 데이타형 이외에
Object들을 전달하기 위해서 조금 다른 방법이 필요하다..
이것을 테스트하기 위해서 다음과 같은 interface를 작성하였다.
public class ReturnTest implements ReturnTypeTest {
public String[] returnArray() throws RemoteException {
return new String[] {"a","b","c"};
}
public ArrayList<String> returnArrayList() throws RemoteException {
ArrayList<String> alist = new ArrayList<String>();
alist.add("a");
alist.add("l");
alist.add("i");
alist.add("s");
alist.add("t");
return alist;
}
public HashMap<String, String> returnHashMap() throws RemoteException {
HashMap<String, String> hmap = new HashMap<String, String>();
hmap.put("h", "h");
hmap.put("m", "m");
hmap.put("a", "a");
hmap.put("p", "p");
return hmap;
}
public List<String> returnList() throws RemoteException {
List<String> list = new ArrayList<String>();
list.add("l");
list.add("i");
list.add("s");
list.add("t");
return list;
}
public Map<String, String> returnMap() throws RemoteException {
Map<String, String> map = new HashMap<String, String>();
map.put("m", "m");
map.put("a", "a");
map.put("p", "p");
return map;
}
public TestBean returnTestBean() throws RemoteException {
List<String> list = new ArrayList<String>();
list.add("l");
list.add("i");
list.add("s");
list.add("t");
HashMap<String, String> hmap = new HashMap<String, String>();
hmap.put("1", "h");
hmap.put("2", "m");
hmap.put("3", "a");
hmap.put("4", "p");
Vector<HashMap<String, String>> vec = new Vector<HashMap<String, String>>();
vec.add(hmap);
vec.add(hmap);
vec.add(hmap);
TestBean tb = new TestBean();
tb.setA("a");
tb.setB(1);
tb.setList(list);
tb.setVec(vec);
tb.setHashmap(hmap);
return tb;
}
public Vector<String> returnVector() throws RemoteException {
Vector<String> vec = new Vector<String>();
vec.add("v");
vec.add("e");
vec.add("c");
vec.add("t");
vec.add("o");
vec.add("r");
return vec;
}
}
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@page import="org.apache.axis.client.Service"%>
<%@page import="org.apache.axis.client.Call"%>
<%@page import="java.net.URL"%>
<%@page import="javax.xml.namespace.QName"%>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.List" %>
<%@page import="com.nexzone.prw.mapping.test.TestBean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.Vector"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
try {
String endpointURL = "http://localhost:8585/prw/services/ReturnTest";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new URL(endpointURL));
// Bean 사용방법
call.setOperationName(new QName("ReturnTest","returnTestBean"));
QName qname = new QName("ReturnTest", "TestBean");
call.registerTypeMapping(TestBean.class ,qname,
org.apache.axis.encoding.ser.BeanSerializerFactory.class,
org.apache.axis.encoding.ser.BeanDeserializerFactory.class );
call.setReturnType(qname);
Object[] params = new Object[] { };
TestBean tb = (TestBean) call.invoke(params);
out.println("A" + tb.getA() + "<br />");
out.println("B" + tb.getB() + "<br />");
Object[] list = tb.getList();
out.println("<br />List ================= <br />");
for (int i=0; i<list.length;i++) {
out.println(i + " : " + list[i] + "<br />");
}
out.println("<br />HashMap in Vector ================= <br />");
Vector<HashMap<String, String>> vec = tb.getVec();
out.println(vec.size());
HashMap<String, String> map = null;
for (int i=0;i<vec.size();i++) {
map = (HashMap<String, String>)vec.get(i);
out.println(map.get(Integer.toString(i+1)) + "<br />");
}
out.println("<br />HashMap ================= <br />");
HashMap<String, String> hmap = tb.getHashmap();
out.println(hmap.size());
// Vector 사용방법
call.setOperationName(new QName("ReturnTest","returnVector"));
QName qname2 = new QName("ReturnTest", "apachesoap:Vector");
call.registerTypeMapping(Vector.class ,qname2,
org.apache.axis.encoding.ser.BeanSerializerFactory.class,
org.apache.axis.encoding.ser.BeanDeserializerFactory.class );
call.setReturnType(qname2);
Vector<String> vector = (Vector<String>) call.invoke(params);
out.println(vector.size());
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
댓글을 달아 주세요
이 위치는 유익한뿐 아니라 재미있는다!
좋은 위치! 너를 감사하십시요.