DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
An XML-RPC Servlet
// This depends upon the Apache XML-RPC library.
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.xmlrpc.XmlRpcServer;
public class XmlRpcServlet extends HttpServlet {
public class EchoHandler {
public String echo(String input) {
return input;
}
}
private XmlRpcServer server = new XmlRpcServer();
private static Log log = LogFactory.getLog(XmlRpcServlet.class);
@Override
public void init(ServletConfig config) throws ServletException {
server.addHandler("echo", new EchoHandler());
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
byte[] result = server.execute(request.getInputStream());
response.setContentType("text/xml");
response.setContentLength(result.length);
OutputStream output = response.getOutputStream();
output.write(result);
output.flush();
}
}
// The following needs to be added to your web.xml file to // expose the servlet so it may be called remotely.
<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>XmlRpcServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/remoteapi</url-pattern>
</servlet-mapping>





