출처

XmlRpcServlet 를 이용하면 XML-RPC Server 를 손쉽게 만들 수 있다.

1개의 설정파일과 서비스를 위한 class 및 web.xml 을 수정하면 문서처럼 10분이면 끝난다.

테스트는 eclipse + apach 6.0 에서 수행함.


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <display-name>xml_rpc_web</display-name>
 
 <servlet>
        <servlet-name>XmlRpcServlet</servlet-name>
        <servlet-class>org.apache.xmlrpc.webserver.XmlRpcServlet</servlet-class>
        <init-param>
          <param-name>enabledForExtensions</param-name>
          <param-value>true</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>XmlRpcServlet</servlet-name>
        <url-pattern>/bbaeggar</url-pattern>
    </servlet-mapping>
   
</web-app>

XmlRpcServlet.properties
- 요넘은 org/apache/xmlrpc/webserver/XmlRpcServlet.properties 경로에 만들어 줘야함.
Calculator=org.apache.xmlrpc.demo.Calculator
Login=org.apache.xmlrpc.demo.Login


3. 서비스 클래스..

위에 프로퍼티에서 사용되는 서비스 클래스는 알아서 만들어주면 될듯.


4. 테스트

Client.java

import java.net.URL;


import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;

public class Client {

 public static void main(String[] args) throws Exception {
        // create configuration
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("http://127.0.0.1:8080/xml_rpc_web/bbaeggar"));
        config.setEnabledForExtensions(true); 
        config.setConnectionTimeout(60 * 1000);
        config.setReplyTimeout(60 * 1000);

        XmlRpcClient client = new XmlRpcClient();
     
        // use Commons HttpClient as transport
        client.setTransportFactory(
            new XmlRpcCommonsTransportFactory(client));
        // set configuration
        client.setConfig(config);

        // make the a regular call
        Object[] params = new Object[]
            { new Integer(2), new Integer(3) };
        Integer result = (Integer) client.execute("Calculator.add", params);
         System.out.println("2 + 3 = " + result);
        
         for(int i = 0;i<100;i++) {
      // make the a regular call
         Object[] params1 = new Object[]
             { "bbaeggar", "0000" };
         Boolean result1 = (Boolean) client.execute("Login.login", params1);
          System.out.println("is Login = " + result1);
         }
     
    }

}


ps.

http://ws.apache.org/xmlrpc/server.html <- 여기를 잘 읽다보면 stand-alone 형태로도 서비스를 제공할 수 있어 더 좋은듯.

 


Posted by 짱가쟁이