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 { } } } OUTOUT: 15:51:45,950 INFO [STDOUT] doGet(): Got request 15:51:51,618 INFO [STDOUT] java.net.MalformedURLException 15:51:51,618 INFO [STDOUT] at java.net.URL.(Unknown Source) 15:51:51,618 INFO [STDOUT] at java.net.URL.(Unknown Source) 15:51:51,618 INFO [STDOUT] at java.net.URL.(Unknown Source) 15:51:51,618 INFO [STDOUT] at dk.mobilenation.imagetool.web.ResizeServlet.resizeImage(ResizeServlet.java:82) 15:51:51,618 INFO [STDOUT] at dk.mobilenation.imagetool.web.ResizeServlet.doGet(ResizeServlet.java:69) 15:51:51,618 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) 15:51:51,618 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 15:51:51,618 INFO [STDOUT] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 15:51:51,618 INFO [STDOUT] at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) 15:51:51,618 INFO [STDOUT] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:157) 15:51:51,618 INFO [STDOUT] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 15:51:51,618 INFO [STDOUT] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 15:51:51,618 INFO [STDOUT] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 15:51:51,618 INFO [STDOUT] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) 15:51:51,618 INFO [STDOUT] at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 15:51:51,618 INFO [STDOUT] at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) 15:51:51,628 INFO [STDOUT] at java.lang.Thread.run(Unknown Source) 15:51:51,628 INFO [STDOUT] doGet() request caught exception 15:51:56,154 INFO [STDOUT] doGet(): Got request 15:52:01,122 INFO [STDOUT] doGet(): Got request 15:52:08,542 INFO [STDOUT] java.lang.IllegalStateException: getOutputStream() has already been called for this response 15:52:08,542 INFO [STDOUT] at org.apache.catalina.connector.Response.getWriter(Response.java:596) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186) 15:52:08,542 INFO [STDOUT] at dk.mobilenation.imagetool.web.ResizeServlet.resizeImage(ResizeServlet.java:101) 15:52:08,542 INFO [STDOUT] at dk.mobilenation.imagetool.web.ResizeServlet.doGet(ResizeServlet.java:69) 15:52:08,542 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) 15:52:08,542 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 15:52:08,542 INFO [STDOUT] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 15:52:08,542 INFO [STDOUT] at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) 15:52:08,542 INFO [STDOUT] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:157) 15:52:08,542 INFO [STDOUT] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 15:52:08,542 INFO [STDOUT] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 15:52:08,552 INFO [STDOUT] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 15:52:08,552 INFO [STDOUT] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) 15:52:08,552 INFO [STDOUT] at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 15:52:08,552 INFO [STDOUT] at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) 15:52:08,552 INFO [STDOUT] at java.lang.Thread.run(Unknown Source) 15:52:08,552 INFO [STDOUT] doGet() request caught exception