package dk.mobilenation.imagetool.web; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import javax.servlet.http.HttpServlet; import javax.servlet.ServletException; import javax.servlet.ServletConfig; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URL; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.gif4j.GifDecoder; import com.gif4j.GifEncoder; import com.gif4j.GifImage; import dk.mobilenation.imagetool.interfaces.Image; import dk.mobilenation.imagetool.interfaces.ImageHome; /** * Servlet Class * * @web.servlet name="Resize" * display-name="Name for Resize" * description="Description for Resize" * @web.servlet-mapping url-pattern="/Resize" * @web.servlet-init-param name="A parameter" * value="A value" * @web.ejb-ref * name="ejb/Image" * type="Session" * home="dk.mobilenation.imagetool.interfaces.FiboHome" * remote="dk.mobilenation.imagetool.interfaces.Fibo" * description="Reference to the Image EJB" * * @jboss.ejb-ref-jndi * ref-name="ejb/Image" * jndi-name="ejb/Image" */ public class ResizeServlet extends HttpServlet { private ImageHome home; public ResizeServlet() { super(); // TODO Auto-generated constructor stub } public void init(ServletConfig config) throws ServletException { //super.init(config); try { Context context = new InitialContext(); Object ref = context.lookup("java:/comp/env/ejb/Image"); home = (ImageHome) PortableRemoteObject.narrow(ref, ImageHome.class); } catch (Exception e) { throw new ServletException("Lookup of java:/comp/env/ failed"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { resizeImage(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { resizeImage(request, response); } private void resizeImage(HttpServletRequest request, HttpServletResponse response) { try { Image bean = home.create(); URL imageURL = new URL(request.getParameter("url")); //URL imageURL = new URL("http://gif-animate.per-il-mio-sito.com/animali_pinguini/pinguino-03.gif"); System.out.println("doGet(): Got request"); if (imageURL != null) { try { boolean imageSmooth = Boolean.parseBoolean(request.getParameter("smooth")); int imageWidth = Integer.parseInt(request.getParameter("width")); int imageHeight = Integer.parseInt(request.getParameter("height")); GifImage theImage = GifDecoder.decode(imageURL); GifImage resizedImage = bean.resizeGifImage(imageWidth, imageHeight, theImage, imageSmooth); bean.remove(); response.setContentType("image/gif"); OutputStream out = response.getOutputStream(); GifEncoder.encode(resizedImage,out); } catch (Exception e) { //e.printStackTrace(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println("Error!"); out.println(""); out.println(""); out.println("

"); out.println("Bad user input!"); out.println("

"); out.println(""); out.close(); } } else { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println("Error!"); out.println(""); out.println(""); out.println("

"); out.println("Empty URL!"); out.println("

"); out.println(""); out.close(); } } catch (Exception e) { e.printStackTrace(); System.out.println("doGet() request caught exception"); } finally { } } }