1 package net.sf.crispy.impl.xmlrpc; 2 3 import java.io.IOException; 4 import java.io.OutputStream; 5 import java.util.Hashtable; 6 import java.util.List; 7 import java.util.Map; 8 9 import javax.servlet.ServletConfig; 10 import javax.servlet.ServletException; 11 import javax.servlet.http.HttpServlet; 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet.http.HttpServletResponse; 14 15 import net.sf.crispy.util.Util; 16 17 import org.apache.commons.logging.Log; 18 import org.apache.commons.logging.LogFactory; 19 import org.apache.xmlrpc.XmlRpcServer; 20 21 /** 22 * This servlet can you use, to make service for XML-RPC availeable. 23 * Or you can overwrite this servlet. 24 * 25 * @author Linke 26 * 27 */ 28 public class XmlRpcHttpAdminServlet extends HttpServlet { 29 30 protected static final Log log = LogFactory.getLog (XmlRpcAdminServiceImpl.class); 31 32 private static final long serialVersionUID = 5325412481289471271L; 33 protected XmlRpcAdminServiceImpl adminService = null; 34 35 36 public void init(ServletConfig config) throws ServletException { 37 Map lvMapService = new Hashtable(); 38 adminService = new XmlRpcAdminServiceImpl(new XmlRpcServer(), lvMapService, null); 39 initTest(); 40 } 41 42 private void initTest() { 43 try { 44 Object lvEchoImpl = Util.createObject("test.crispy.example.service.EchoImpl"); 45 adminService.addService("test.crispy.example.service.Echo", lvEchoImpl); 46 } catch (Exception e) { 47 if (log.isDebugEnabled()) { log.debug("Can't load Test-Class test.crispy.example.service.Echo."); } 48 } 49 } 50 51 52 public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 53 synchronized (adminService) { 54 XmlRpcServer lvXmlRpcServer = adminService.getXmlRpcServer(); 55 byte[] result = lvXmlRpcServer.execute(req.getInputStream ()); 56 res.setContentType("text/xml"); 57 res.setContentLength(result.length); 58 OutputStream output = res.getOutputStream(); 59 output.write(result); 60 output.flush(); 61 } 62 } 63 64 65 public String addService(String pvServiceInterface, String pvImplClass) { 66 return adminService.addService(pvServiceInterface, pvImplClass); 67 } 68 69 public String addService(String pvServiceInterface, Object pvServiceImpl) { 70 return adminService.addService(pvServiceInterface, pvServiceImpl); 71 } 72 73 74 public String removeService(String pvServiceInterface) { 75 return adminService.removeService(pvServiceInterface); 76 } 77 78 public Boolean existService(String pvServiceInterface) { 79 return adminService.existService(pvServiceInterface); 80 } 81 82 public List getAllService() { 83 return adminService.getAllService(); 84 } 85 86 87 }