доброй ночи, есть простой код servlet, который отлично работает под томкатом - выдает картинку с IP запросившего:
| Код | public class IpRanger extends HttpServlet { private static final String CONTENT_TYPE = "image/gif"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType(CONTENT_TYPE); ServletOutputStream out = response.getOutputStream(); ImageIO.write(drawGraphics(request.getRemoteAddr()), "gif", out); }
private BufferedImage drawGraphics(String ip) { BufferedImage imgBuff = new BufferedImage(350, 19, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = imgBuff.createGraphics();
g2.setColor(Color.red); g2.drawString(ip, 80, 16);
return imgBuff; } }
|
пробую этот код запустить под glassfish последним - выдает в поток вместо рисунка 0 байт, я попробывал для теста еще упростить код - выдавать не в ответ, а записывать в файл
| Код | public class Test { private static final String CONTENT_TYPE = "image/gif";
public static void main(String[] args) throws Exception {
FileOutputStream file = new FileOutputStream("junk"); BufferedImage img = drawGraphics("hello"); ImageIO.write(img, "gif", file); file.close(); }
private static BufferedImage drawGraphics(String ip) { BufferedImage imgBuff = new BufferedImage(350, 19, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = imgBuff.createGraphics();
g2.setColor(Color.red); g2.drawString(ip, 80, 16);
return imgBuff; } }
|
в итоге, если этот файл скомпилить как J2SE - то все отлично, он заполняет файл рисунком. а вот если запустить под glassfish, то в файл пишется 0 байт. Смотрел логи сервера - ничего нет Что ему не нравится? |