Avatar billede trp79 Nybegynder
10. marts 2005 - 16:15 Der er 21 kommentarer og
1 løsning

Underligt problem med servlet

Hejsa
Jeg får bare en "siden kan ikke vises" med understående servlet, men når jeg udkommenterer linien: thumbnail.makeThumbnail(sti,thsti,"160","120","70"); så virker servletten fint og siden vises. makeThumbnail virker fint og laver thumbnailen som den skal, så jeg forstår ikke hvorfor det driller :(

Jeg deployer en WAR fil på en tomcat 5.0 server.

Håber nogen kan hjælpe, mvh
Torben


















Servletten(der post's til den fra en anden servlet):
package TPUpload;
import com.oreilly.servlet.MultipartRequest;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import TPUpload.Util.Thumbnail;

public class Uploadservlet extends HttpServlet
{
    Thumbnail thumbnail = new Thumbnail();//Bruges til generering af thumbnail
    String dir = "c:/upload"; //Dir hvor uploadéde filer gemmes
    String thdir = "c:/upload/thumb";//dir hvor de thumbs der genereres af de upload'ede filer gemmes.
    String filnavn; //filnavnet på såvel thumb som upload'ede fil
    String sti;//Stien incl filnavn hvor filen gennes
    String thsti;//Stien incl filnavn hvor thumb gemmes
    String imageID;//Det nummer som fil og thumb skal have som filnavn(hentes fra db)
    Connection con = null; //Den forbindelse der bruges til databasen
    PreparedStatement pstmt = null; //til skrivning til database
    PrintWriter out = null;
   
    public Uploadservlet()
    {
    }

    public void init(ServletConfig config)
        throws ServletException
    {
        super.init(config);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");
        out = new PrintWriter(response.getOutputStream());
        out.println("<html>");
        out.println("<head><title>Uploadservlet</title></head>");
        out.println("<body>Get metoden underst&oslash;ttes ikke af servletten.");
        out.println("</body></html>");
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        int result = 0;
        String fejltekst = null;
        response.setContentType("text/html");
        out = new PrintWriter(response.getOutputStream());

        out.println("<html>");
        out.println("<head><title>Fil-upload</title></head>");
        out.println("<body>");
        out.println("<H1>Upload af fil</H1><br><hr><br>");
        MultipartRequest multi = null;
        try
        {
            //String dir = request.getParameter("dir");
            imageID = getNameOfFile();
            sti=dir+"/"+imageID+".jpg";
            thsti=thdir+"/"+imageID+".jpg";
           
            multi = new MultipartRequest(request, dir, 0x989680);
            filnavn = multi.getFilesystemName("file");
            File f = multi.getFile("file");
            filnavn = dir+"/"+imageID+".jpg";
            f.renameTo(new File(filnavn));
            out.println(dir+"<br>");
            out.println("Upload udført."+"<br>");
            out.println("filnavn : " + filnavn + "<br>");
            out.println("<br>");
        }
        catch(Exception e)
        {
          System.err.println("Der skete en fejl under upload.<br>\n" + e.toString());
        }
        try
        {
            //sti=dir+"/"+filnavn;
            //thsti=thdir+"/"+"th"+filnavn;
            thumbnail.makeThumbnail(sti,thsti,"160","120","70");         
            out.println(dir+"<br>");
            out.println("Thumbnail upload udført."+"<br>");
            out.println("filnavn : " + filnavn + "<br>");
            out.println("<br>");
            out.println("upload sti:        "+sti+"<br>");
            out.println("thhumb uploadsti:  "+thsti+"<br>");

        }
        catch(Exception e)
        {
            System.err.println("Der skete en fejl under generering af thumbnail.<br>\n" + e.toString());
        }
        out.println("</body></html>");
        out.flush();
        out.close();
    }

    public String getServletInfo()
    {
        return "Uploadservlet Information";
    }

    public String getNameOfFile()
    {
        ResultSet r = null;     
        int id = -1;
        try
        {
          Context init = new InitialContext();
          Context ctx = (Context) init.lookup("java:comp/env");
          DataSource ds = (DataSource) ctx.lookup("jdbc/Vindmolle");
          ds.setLogWriter(out);
       
          con = ds.getConnection();
          pstmt = con.prepareStatement("SELECT MAX(id) AS id FROM gaestebog");
          r = pstmt.executeQuery();
          r.next();
          id = r.getInt("id");
          id++;
          r.close();
          pstmt.close();
          con.close();
        }
        catch(SQLException s)
        {
            System.err.println("SQLException i getNameOfFile: "+s);
        }     
        catch(NamingException s)
        {
            System.err.println("NamingException i getNameOfFile: "+s);
        }     
        if(id==-1)
          return null;
        else
          return ""+id;
    }
}
Avatar billede arne_v Ekspert
10. marts 2005 - 16:18 #1
Prøv og erstat:

System.err.println("Der skete en fejl under generering af thumbnail.<br>\n" + e.toString());

med:

out.println("Der skete en fejl under generering af thumbnail.<br>\n" + e.toString());

og se hvad den udskriver
Avatar billede trp79 Nybegynder
10. marts 2005 - 16:29 #2
Den viser desværre bare stadig "siden kan ikke vises". Desuden stopper den tomcat serveren når dette sker!
Avatar billede arne_v Ekspert
10. marts 2005 - 16:30 #3
Mystisk.

Hvad er der i Tomcat's log filer ?
Avatar billede trp79 Nybegynder
10. marts 2005 - 16:34 #4
Her er et udpluk....

stdout.txt:
INFO: Installing web application at context path /TP-Upload from URL file:E:/Tomcat 5.0/webapps/TP-Upload
10-03-2005 16:27:20 org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path  from URL file:E:\Tomcat 5.0\webapps\ROOT
10-03-2005 16:27:20 org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path /tomcat-docs from URL file:E:\Tomcat 5.0\webapps\tomcat-docs
10-03-2005 16:27:20 org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path /jsp-examples from URL file:E:\Tomcat 5.0\webapps\jsp-examples
10-03-2005 16:27:20 org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path /servlets-examples from URL file:E:\Tomcat 5.0\webapps\servlets-examples
10-03-2005 16:27:21 org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path /webdav from URL file:E:\Tomcat 5.0\webapps\webdav
10-03-2005 16:27:21 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-80
10-03-2005 16:27:22 org.apache.jk.common.ChannelSocket init
INFO: JK2: ajp13 listening on /0.0.0.0:8009
10-03-2005 16:27:22 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=20/190  config=E:\Tomcat 5.0\conf\jk2.properties
10-03-2005 16:27:22 org.apache.catalina.startup.Catalina start
INFO: Server startup in 17525 ms
Done.
10-03-2005 16:27:45 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-80


jakarta_service_20050310.txt:
[2005-03-10 15:56:02] [info] Starting service...
[2005-03-10 15:56:04] [info] Service started.
[2005-03-10 16:03:36] [info] Running Service...
[2005-03-10 16:03:36] [info] Starting service...
[2005-03-10 16:03:37] [info] Service started.
[2005-03-10 16:05:22] [info] Service STOP signaled
[2005-03-10 16:05:22] [info] Stopoping service...
[2005-03-10 16:05:23] [info] Service stopped.
[2005-03-10 16:05:23] [info] Run service finished.
[2005-03-10 16:05:23] [info] Procrun finished.
[2005-03-10 16:07:05] [info] Running Service...
[2005-03-10 16:07:05] [info] Starting service...
[2005-03-10 16:07:06] [info] Service started.
[2005-03-10 16:16:41] [info] Running Service...
[2005-03-10 16:16:41] [info] Starting service...
[2005-03-10 16:16:43] [info] Service started.
[2005-03-10 16:22:51] [info] Running Service...
[2005-03-10 16:22:51] [info] Starting service...
[2005-03-10 16:22:53] [info] Service started.
[2005-03-10 16:25:08] [info] Running Service...
[2005-03-10 16:25:08] [info] Starting service...
[2005-03-10 16:25:10] [info] Service started.
[2005-03-10 16:26:39] [info] Service STOP signaled
[2005-03-10 16:26:39] [info] Stopoping service...
[2005-03-10 16:26:40] [info] Service stopped.
[2005-03-10 16:26:41] [info] Run service finished.
[2005-03-10 16:26:41] [info] Procrun finished.
[2005-03-10 16:26:56] [info] Running Service...
[2005-03-10 16:26:56] [info] Starting service...
[2005-03-10 16:26:58] [info] Service started.

localhost_log.2005-03-10.txt:
2005-03-10 16:20:10 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@be76c7')
2005-03-10 16:20:10 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@682406')
2005-03-10 16:20:10 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@115126e')
2005-03-10 16:20:10 StandardContext[/servlets-examples]SessionListener: contextDestroyed()
2005-03-10 16:20:10 StandardContext[/servlets-examples]ContextListener: contextDestroyed()
2005-03-10 16:20:10 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@c9630a')
2005-03-10 16:20:10 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@185572a')
2005-03-10 16:20:10 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@11daa0e')
2005-03-10 16:20:10 StandardContext[/jsp-examples]SessionListener: contextDestroyed()
2005-03-10 16:20:10 StandardContext[/jsp-examples]ContextListener: contextDestroyed()
2005-03-10 16:23:06 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2005-03-10 16:23:22 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2005-03-10 16:23:22 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2005-03-10 16:23:23 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2005-03-10 16:23:23 StandardContext[/servlets-examples]SessionListener: contextInitialized()
2005-03-10 16:24:02 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@19a8416')
2005-03-10 16:24:02 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@155d3a3')
2005-03-10 16:24:02 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1b994de')
2005-03-10 16:24:02 StandardContext[/servlets-examples]SessionListener: contextDestroyed()
2005-03-10 16:24:02 StandardContext[/servlets-examples]ContextListener: contextDestroyed()
2005-03-10 16:24:02 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1f1bd98')
2005-03-10 16:24:02 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1d686c1')
2005-03-10 16:24:02 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@128edf2')
2005-03-10 16:24:02 StandardContext[/jsp-examples]SessionListener: contextDestroyed()
2005-03-10 16:24:02 StandardContext[/jsp-examples]ContextListener: contextDestroyed()
2005-03-10 16:25:23 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2005-03-10 16:25:38 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2005-03-10 16:25:38 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2005-03-10 16:25:38 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2005-03-10 16:25:38 StandardContext[/servlets-examples]SessionListener: contextInitialized()
2005-03-10 16:27:10 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2005-03-10 16:27:20 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2005-03-10 16:27:20 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2005-03-10 16:27:21 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2005-03-10 16:27:21 StandardContext[/servlets-examples]SessionListener: contextInitialized()
2005-03-10 16:27:46 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@19a8416')
2005-03-10 16:27:46 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@155d3a3')
2005-03-10 16:27:46 StandardContext[/servlets-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1b994de')
2005-03-10 16:27:46 StandardContext[/servlets-examples]SessionListener: contextDestroyed()
2005-03-10 16:27:46 StandardContext[/servlets-examples]ContextListener: contextDestroyed()
2005-03-10 16:27:47 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1f1bd98')
2005-03-10 16:27:47 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@1d686c1')
2005-03-10 16:27:47 StandardContext[/jsp-examples]ContextListener: attributeReplaced('org.apache.catalina.WELCOME_FILES', '[Ljava.lang.String;@128edf2')
2005-03-10 16:27:47 StandardContext[/jsp-examples]SessionListener: contextDestroyed()
2005-03-10 16:27:47 StandardContext[/jsp-examples]ContextListener: contextDestroyed()
Avatar billede trp79 Nybegynder
10. marts 2005 - 18:00 #5
Det er altså underligt... hvis jeg sender null med som 2. parameter til thumbnail.makeThumbnail(sti,thsti,"160","120","70"); istedet for thsti, så vises siden, hvor den spytter en nullpointer exception ud. Der må være et eller andet i thumbnail metoden som kvæler tomcat.... men lyder det ikke lidt underligt, hvis det er sådan det hænger sammen?
Avatar billede trp79 Nybegynder
10. marts 2005 - 18:20 #6
Jeg har lagt WAR filen her. Har ændret lidt i den siden jeg oprettede spørgsmålet... fjernet parametre som ikke blev brugt osv... source koden er også der: http://home20.inet.tele.dk/kortaften/TP-Upload.war
Avatar billede arne_v Ekspert
10. marts 2005 - 23:09 #7
jeg har ikke tid til at kigge på den før imorgen aften
Avatar billede trp79 Nybegynder
11. marts 2005 - 08:56 #8
Det er fjong - har skam ikke så travlt :)
Super, at du gider tage et kig på det.
Avatar billede arne_v Ekspert
11. marts 2005 - 23:01 #9
Thumbnail klassen bruger java.awt - jeg har før set problemer med de klasser
i en skærm løs kontekst (som f.eks. en servlet).

Dog kun på Linux ikke på Windows.

Virker klassen og metoden hvis du kalder den på præcis samme måde fra
et lille standalone program ?
Avatar billede arne_v Ekspert
11. marts 2005 - 23:05 #10
Der findes et lille trick:

If you are using Tomcat, the simplest way to accomplish this is to add the following like to your <tomcat>/bin/setenv.sh file:
Code:

CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"
Avatar billede arne_v Ekspert
11. marts 2005 - 23:06 #11
og i setenv.bat må det hedde:

set CATALINA_OPTS = %CATALINA_OPTS% -Djava.awt.headless=true"
Avatar billede trp79 Nybegynder
12. marts 2005 - 11:07 #12
Hej igen Arne.
Jeg har lige oprettet en bat fil - setenv.bat med ovenstående linie (har prøvet både med og uden dobbel quatas efter lighedstegnet), men det virker desværre ikke.
Jeg kører iøvrigt windows...

Ja thumbnail klassen virker fint når man benytter den i et standalone program, så det er lidt surt. Syntes eller lige det var så smart at bruge en java klasse fremfor at benytte et eksternt windows program eller lign.
Avatar billede arne_v Ekspert
12. marts 2005 - 16:31 #13
Du kan teste om du har fået sat det rigtigt ind med en lille JSP side:

<%=System.getProperty("java.awt.headless")%>

hvis den ikke siger true så er det ikke rigtigt sat op.
Avatar billede trp79 Nybegynder
12. marts 2005 - 17:31 #14
Super Arne! Nu virker det - Dit trick gjorde det lidt nemmere at teste :)
Til andres oplysning, så hvis man som mig har installeret windows version, som også installerer et lille "monitor tomcat" program, så skal der under "java" -> "java options" indsættes dette: -Djava.awt.headless=true

Tak for hjælpen Arne
Avatar billede arne_v Ekspert
12. marts 2005 - 17:35 #15
så vil jeg ligge et svar
Avatar billede trp79 Nybegynder
12. marts 2005 - 17:35 #16
Jeg var vist lidt for hurtig :( Den kaster den exception nu, og der genereres ikke nogen thumbnail:
Der skete en fejl thumbnailklassen.
java.awt.HeadlessException
Avatar billede arne_v Ekspert
12. marts 2005 - 17:44 #17
Suk.

Nogle AWT metoder kan ikke lide headless.

Så må du gribe til de grove midler.

http://products.davisor.com/chart/doc/headless.html

og gå ned til afsnittet "Pure Java AWT"

og prøv den procedure
Avatar billede trp79 Nybegynder
13. marts 2005 - 20:26 #18
Jeg har nu smidt pja.jar i "E:\Tomcat 5.0\common\lib" og tilføjet:
-Dawt.toolkit=com.eteks.awt.PJAToolkit
-Djava.awt.graphicsenv=com.eteks.java2d.PJAGraphicsEnvironment
-Djava.awt.fonts=JDK/jre/lib/fonts mainclassname args

til "java options"(se kommentar 12/03-2005 17:31:15), men jeg får desværre denne fejl nu:
java.awt.AWTError: Toolkit not found: com.eteks.awt.PJAToolkit
    java.awt.Toolkit$2.run(Toolkit.java:755)
    java.security.AccessController.doPrivileged(Native Method)
    java.awt.Toolkit.getDefaultToolkit(Toolkit.java:739)
    TPUpload.Util.Thumbnail.makeThumbnail(Thumbnail.java:21)
    TPUpload.Uploadservlet.doPost(Uploadservlet.java:85)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Burde det ikke være fint nok blot at smide pja.jar der hvor jeg har gjort?
Og bør jeg stadig beholde -Djava.awt.headless=true ?
Avatar billede arne_v Ekspert
13. marts 2005 - 20:49 #19
Som jeg læser det så skal den jar fil angives  med -Xbootclasspath

(og java.awt.headless=true skal ikke bruges ved denne her løsning)
Avatar billede trp79 Nybegynder
15. marts 2005 - 08:25 #20
Jeg har kigget lidt rundt på nettet (og i tomcats bin katalog) efter hvordan jeg skal starte tomcat, men kan ikke rigtig finde det.
Oprindelig var min plan egentlig, at jeg ville lave det så jeg senere kunne deploye applikationen på et webhotel, men det bliver jo nok ikke så nemt når der kræves de indstillinger. Måske man istedet skulle se om man kun lave en thumbnail generator ud fra de klasser, der ligger i pja.
Avatar billede trp79 Nybegynder
15. marts 2005 - 08:26 #21
altså starte tomcat med xbootclasspath :)
Avatar billede arne_v Ekspert
15. marts 2005 - 08:44 #22
kig i startup.bat / catalina.bat
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester