An XML-RPC Servlet
1 2 import java.io.IOException; 3 import java.io.OutputStream; 4 5 import javax.servlet.ServletConfig; 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import org.apache.commons.logging.Log; 12 import org.apache.commons.logging.LogFactory; 13 import org.apache.xmlrpc.XmlRpcServer; 14 15 public class XmlRpcServlet extends HttpServlet { 16 public class EchoHandler { 17 public String echo(String input) { 18 return input; 19 } 20 } 21 22 private XmlRpcServer server = new XmlRpcServer(); 23 24 private static Log log = LogFactory.getLog(XmlRpcServlet.class); 25 26 @Override 27 public void init(ServletConfig config) throws ServletException { 28 server.addHandler("echo", new EchoHandler()); 29 } 30 31 @Override 32 protected void doGet(HttpServletRequest request, 33 HttpServletResponse response) throws ServletException, IOException { 34 doPost(request, response); 35 } 36 37 @Override 38 protected void doPost(HttpServletRequest request, 39 HttpServletResponse response) throws ServletException, IOException { 40 byte[] result = server.execute(request.getInputStream()); 41 42 response.setContentType("text/xml"); 43 response.setContentLength(result.length); 44 45 OutputStream output = response.getOutputStream(); 46 output.write(result); 47 output.flush(); 48 } 49 }
// The following needs to be added to your web.xml file to
// expose the servlet so it may be called remotely.
1 2 <servlet> 3 <servlet-name>XmlRpcServlet</servlet-name> 4 <servlet-class>XmlRpcServlet</servlet-class> 5 </servlet> 6 7 <servlet-mapping> 8 <servlet-name>XmlRpcServlet</servlet-name> 9 <url-pattern>/remoteapi</url-pattern> 10 </servlet-mapping>