Avatar billede it-dyret Nybegynder
17. september 2002 - 11:26 Der er 15 kommentarer og
1 løsning

Servlet fejl??

Hej!

Vi er nogle stykker, som har udviklet en dynamisk hjemmeside i JSP med bl.a. servlets, hvor man skal logge ind for at tilgå siden... I vores lokale udviklingsmiljø passerede den alle tests, men når vi uploader applikationen til webhotellet, får vi følgende fejl, når vi forsøger at logge ind:

Error: 500
Location: /servlet/Login
Internal Servlet Error:

java.security.AccessControlException: access denied (java.io.FilePermission /home/.sites/95/site335/web/WEB-INF/classes/Brandtex/Menu.class read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)

Er det noget, som nogen ved hvad er?? Udbyderen ligner et spørgsmålstegn, og vi sidder tilbage med spørgsmålet, om det er udbyderen, som mangler at sætte nogle rettigheder op på sitet, eller om det er os, som har lavet en kodefejl eller fejl i web.xml... Udførlig hjælp foretrækkes, men alt kan bruges!!
Avatar billede it-dyret Nybegynder
17. september 2002 - 11:30 #1
Vores Login.jsp indeholder en action, som kalder servlet/Login, hvis vi ændrer denne til den direkte sti, får vi en anden fejl, som omhandler en evt. manglende CGI opsætning...
Avatar billede jangravgaard Nybegynder
17. september 2002 - 16:52 #2
Mon ikke det er fordi du ikke har rettigheder til at skrive til disken hos din udbyder ? Du får jo en io.FilePermission access denied
Avatar billede soelvpil Nybegynder
17. september 2002 - 23:25 #3
Hmmm, det lyder mystisk.

Den første tanke er, at jeres kode ikke har tilladelse til at læse i filsystemet. Det lyder dog meget mystisk, med mindre i er udbyderens allerførste kunde, burde den slags være på plads.

Så der må ligge et eller andet mysterie bag. Hvordan er jeres login lavet, er det noget med manuel check op mod en databse, eller er det noget med nogle roller der er defineret i web.xml?

Post evt hele stacktracen fra din exception (og ikke kun starten af den), samt evt også din servlet-kode. I hvert fald vil det være rrt at se den del af din kode, der optræder først i beskrivelsen af din excreption.
Avatar billede it-dyret Nybegynder
20. september 2002 - 15:01 #4
Det er en form fra en .jsp, som poster en servlet (Login.class). Denne servlet kontrollerer brugernummer samt password op mod databasen, som kaldes fra en dbHandler.class - denne optræder dog ikke i stacktracen og samme fejl kommer lige meget, om man logger ind med det korrekte brugernummer og password eller ej...

Ved alle .jsp filer, som bruger en bean forekommer samme fejl - bortset fra at det er en anden bean/servlet.

Hele stacktracen:

Error: 500
Location: /servlet/Login
Internal Servlet Error:

java.security.AccessControlException: access denied (java.io.FilePermission /home/.sites/95/site335/web/WEB-INF/classes/Login.class read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)
    at java.security.AccessController.checkPermission(AccessController.java:399)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:890)
    at java.io.File.lastModified(File.java:636)
    at org.apache.tomcat.loader.AdaptiveClassLoader.shouldReload(AdaptiveClassLoader.java:358)
    at org.apache.tomcat.loader.AdaptiveServletLoader.shouldReload(AdaptiveServletLoader.java:124)
    at org.apache.tomcat.core.ServletWrapper.handleReload(ServletWrapper.java:431)
    at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:348)
    at org.apache.tomcat.core.ContextManager.handleStatus(ContextManager.java:1081)
    at org.apache.tomcat.facade.HttpServletResponseFacade.sendError(HttpServletResponseFacade.java:214)
    at org.apache.tomcat.facade.HttpServletResponseFacade.sendRedirect(HttpServletResponseFacade.java:228)
    at Login.doPost(Login.java:63) //Vores servlet
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:402)
    at org.apache.tomcat.core.Handler.service(Handler.java:287)
    at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
    at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:812)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java:758)
    at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)
    at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
    at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
    at java.lang.Thread.run(Thread.java:484)

Koden til Login følger...
Avatar billede soelvpil Nybegynder
20. september 2002 - 16:58 #5
Har i et sted i koden en

response.sendRedirect("/WEB-INF/classes/Login.class");

eller noget i den stil?? For så burde det virke, hvis i skifter det ud med servlettens url.

Hvad hedder den url i poster til fra jsp-siden?
Avatar billede it-dyret Nybegynder
21. september 2002 - 17:24 #6
Koden til login:

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import Brandtex.dbHandler;
import java.sql.*;

public class Login extends HttpServlet  implements SingleThreadModel{
   
        public void init (ServletConfig config)
    {
    try
    {
        super.init(config);
    } catch (Exception e){}
    }
   

    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
       
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        HttpSession session = req.getSession();
        dbHandler db;
        ResultSet resSet=null;
       
        String username = (req.getParameter("username"));
        String password = (req.getParameter("password"));
       
        if (username.compareTo("") ==0 || password.compareTo("") ==0)
        {
            res.sendRedirect("../index.jsp?error");
        }
        int last=0;
        try
        {
            Integer.parseInt(username);
            db= new dbHandler();
            db.connectToDB();
            resSet = db.getResultSet("select * from User where UserNumber="+username+" and Password='"+password+"' and Active='Active';");
            db.closeDB();
            resSet.last();
            last = resSet.getRow();
            if (last>0){
                session.putValue("username",resSet.getObject("UserNumber"));
                session.putValue("securityLevel",resSet.getObject("SecurityLevel"));
                res.sendRedirect("../loggedOn.htm");
            }
            else
            {
                res.sendRedirect("../index.jsp?error");
            }   
           
        } catch (Exception e)
        {
            System.out.println(e);
            res.sendRedirect("../index.jsp?error");           
        }           
    }   
   
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        doPost(req,res);
    }           
}

vi poster til servlet/Login
Avatar billede soelvpil Nybegynder
21. september 2002 - 19:11 #7
Jeg er stadig mystificeret. Prøv at erstatte response.sendRedirect()
med

request.getRequestDispatcher("index.jsp?error").forward(req,res);

og se om det hjælper
Avatar billede it-dyret Nybegynder
23. september 2002 - 14:18 #8
getRequestDispatcher, hvilken version af jsdk ligger den i?? Den er ikke i 2.1, som vi arbejder med...
Avatar billede it-dyret Nybegynder
23. september 2002 - 14:51 #9
Når jeg skriver "version af jsdk", så mener jeg, hvilken version af servlet-api'et ligger den i? Vi har arbejdet med version 2.1, men her findes den ikke i... hvor langt skal man op i versionerne for at getRequestDispatcher er med??

En ny tanke: kan det tænkes, at alle vores problemer bunder i, at vores udbyder slet ikke understøtter en nyere version af servlet-api'et??
Avatar billede soelvpil Nybegynder
23. september 2002 - 17:14 #10
prøv med
this.getServletConfig().getServletContext().getRequestDispatcher("minUrlHer").forward(req,res);
Avatar billede soelvpil Nybegynder
23. september 2002 - 17:15 #11
Jeg troede egentlig at selv de ældste versioner af Tomcat understøttede Servlet2.2.

Hvem er jeres udbyder?
Har i mulghed for at få at vide, hvilken Tomcat-version de bruger?
Avatar billede it-dyret Nybegynder
23. september 2002 - 18:24 #12
Vores udbyder er webbee.dk... Har du kendskab til en anden udbyder (du kan anbefale) for vores tålmodighed med deres meget mangelfulde support er meget snart ved at slippe op!

Vi prøver lige dit trick - og ellers har vi en aftale med webbee om enestående support i morgen... hvis det ikke gør tricket skal vi nok til at se os omkring efter en anden udbyder...
Avatar billede soelvpil Nybegynder
23. september 2002 - 22:06 #13
Jeg kender desværre ikke noget til webhoteller. Mener dog at set et spørgsmål eller to omkring det tidligere på eksterten.

Men jeg må nok indrømme at jeg er lidt blank. Da jeg så spørgsmålet først, hahvde jeg mistanke om, at den anonyme webbruger ikke havde læs-adgang til klassefilerne (dvs at Everyone har læs-rettigheder til filerne). I kan evt spørge dem i morgen, om det er tilfældet, for det er absolut nødvendigt. Men umiddelbart lyder den detaljerede fejlbesked, som om det faktisk er tilfældet, og så må jeg nok give op.
(det ville nok hjælpe lidt, hvis man kunne se serverens opsætning).

Men som sagt tror jeg mest på at det er et problem hos jeres udbyder, og ikke jeres fejl.
Avatar billede it-dyret Nybegynder
29. september 2002 - 22:43 #14
Hej soelvpil!

Vi har fundet en anden udbyder og efter ganske lidt arbejde, ser det ud til at det hele fungerer optimalt!

Jeg kan kun give vores nye udbyder, pil.dk, de varmeste anbefalinger - og råde andre til at holde sig langt væk fra vores tidligere udbyder, webbee.dk!
Avatar billede it-dyret Nybegynder
29. september 2002 - 22:44 #15
Jeg takker og kvitterer for din hjælp, soelvpil!
Avatar billede soelvpil Nybegynder
30. september 2002 - 18:16 #16
Det var så lidt.

Det må da også være rart at vide, at det ikke var jeres skyld!
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