# JSP Problem mit Image-Generierung (war: JSP werden nicht...)



## Joltan (5. Jul 2005)

*Ich hab' den Thread mal umgenannt, da sich das Thema 'leicht' geändert hat, s.u.*

Hallo,

Ich habe mit Netbeans eine JSP erstellt, welche mir einen Gameserver abfrägt (über gesonderte Library) und das Ergebnis als jpeg image ausgibt. Lokal funktioniert das alles bestens, aber wenn ich die Seite auf meinem Server ablege, dann wird mir einfach der Quelltext der JSP angezeigt... Die META-INF und WEB-INF Verzeichnisse, alle Unterverzeichnisse und Dateien habe ich auf den Server kopiert, daran liegt es also nicht.

Vorschläge?


----------



## DP (5. Jul 2005)

welcher server?


----------



## Joltan (5. Jul 2005)

DP hat gesagt.:
			
		

> welcher server?


Apache/Tomcat 4.irgendwas. Hier mal die JSP:

```
<%@page contentType="image/jpeg"%>
<%@page import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,jDSSQlib.*,java.util.Date" %>

<%

boolean querysuccess = true;

QueryServer q = new QueryServer();
q.setAlias("xyz");
q.setAddress("some.server.net");
q.setPort(10815);
q.setCalltype(10);
q.setAllowcascade(false);

querysuccess = q.Query();

if (querysuccess){
    Date d = new Date();

    int width = 300;
    int height = 100;

    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();

    g.setColor(Color.WHITE);
    g.fillRect(0,0,width,height);
    
    g.setColor(Color.BLUE);
    g.fillRect(0,0,width,5);
    g.fillRect(0,85,width,100);

    g.setColor(Color.black);
    g.drawString(q.getAddress() + ":" + q.getPort(),5,20);
    g.drawString("Status: " + q.getStatus(),200,20);
    if (q.getName() != "") g.drawString(q.getName(),5,35);
    if (q.getNumplayers()>0) {
        g.drawString(q.getNumplayers() + " players online",5,50);
    }
    if (q.getMissionname() != "") {
        g.drawString("mission: " + q.getMissionname() + " (" + q.getIsland() + ")",5,65);
    }
    g.drawString("last queried: " + d.toString(),5,80);

    g.setColor(Color.white);
    g.drawString("jsDSSQ v0.1 by Daddl",180,97);

    g.dispose();

    ServletOutputStream sos = response.getOutputStream();
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
    encoder.encode(image);
}else{
    int width = 1;
    int height = 100;
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    g.setColor(Color.white);
    g.fillRect(0,0,width,height);
    g.dispose();
    ServletOutputStream sos = response.getOutputStream();
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
    encoder.encode(image);
}
%>
```

Das Ergebnis sollte dann eigentlich so aussehen:


----------



## DP (5. Jul 2005)

wo haste die hinkopiert? erscheint deine "anwendung" im tomcat-manager?


----------



## Joltan (5. Jul 2005)

Ok, jetzt stell' ich mich mal so dumm, wie ich mich grad' fühl: "tomcat-manager"???  ???:L 

Ich hab die Verzeichnisstruktur einfach auf den Server kopiert - muß ich da noch etwas zusätzlich machen? Sorry, aber das ist meine erste JSP-Seite, und ich habe mit dem Server noch keinerlei Erfahrung.


----------



## DP (5. Jul 2005)

http://localhost:8080/manager bzw. http://localhost:8080/admin, da kannste deine anwendung installieren.

schau dir ggf. mal die struktur von /webapps/examples an...


----------



## Guest (5. Jul 2005)

Arf, nach viel hin und her habe ich jetzt endlich rausgefunden, wie ich die JSP installiert bekomme, nun erhalte ich aber folgende Fehlermeldung:


```
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Thread.java:534)

root cause

javax.servlet.ServletException: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:536)
	at org.apache.jsp.query_jsp._jspService(query_jsp.java:137)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Thread.java:534)
```

Server ist ein vServer mit Apache Tomcat/4.1.27.


----------



## Joltan (5. Jul 2005)

Das war von mir, btw.

Im Debug Modus von Netbeans läuft es einwandfrei (allerdings verwendet Netbeans eine neuere Tomcat-Version).


----------



## Joltan (5. Jul 2005)

Noch etwas, ich habe jetzt mal diese vereinfachte JSP benutzt und erhalte den selben Fehler:

```
<%@page contentType="image/jpeg"%>
<%@page import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.Date" %>

<%
    Date d = new Date();
    int width = 300;
    int height = 100;
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    g.setColor(Color.WHITE);
    g.fillRect(0,0,width,height);
    
    g.setColor(Color.BLUE);
    g.fillRect(0,0,width,5);
    g.fillRect(0,85,width,100);

    g.setColor(Color.black);
    g.drawString("ERROR: UNABLE TO CONTACT SERVER",5,50);
    g.drawString("last queried: " + d.toString(),5,80);
    g.setColor(Color.white);
    g.drawString("jDSSQ v0.9",230,97);
    g.dispose();
    ServletOutputStream sos = response.getOutputStream();
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
    encoder.encode(image);
%>
```
Meine externe Library kann also als Fehlerquelle ausgeschlossen werden. Was könnte hier Probleme bereiten?


----------



## hugo (5. Jul 2005)

Der Tomcat braucht zur Erzeugung von Grafiken eine Laufzeitumgebung die das unterstützt (Bring NetBeans wahrscheinlich für sich schon mit). Im Fall von Linux will er als zum Beispiel den X-Server haben. Das muss dann in die conf vom Tomcat mit rein.


----------



## Joltan (5. Jul 2005)

Habe gerade mal nachgesehen - X-Windows ist installiert, in der Tomcat-Config konnte ich allerdings nichts finden, was mir weitergeholfen hätte...


----------

