Avatar billede Slettet bruger
02. december 2003 - 10:27 Der er 8 kommentarer og
1 løsning

NullPointerException på første side der loades

Baggrund:
Jeg har et website kørende på Tomcat 4.1.29, hvor siderne altid indgår i en sammenhæng - dvs. jeg har et overordnet site (bygget af tabeller) hvori de resterende sider vises når de loades. For at brugeren ikke for en side ud af sammenhæng, har jeg en stump kode der chekker om siden er loadet via tabel-opbygningen; det gør jeg ved at chekke på filnavnet.
For at sikre at parametre bliver overført hvis siden ikke loades i tabellen, sender jeg dem alle videre til tabel-sitet.

Problem:
Den allerførste side der loades på mit website giver en NullPointerException (altså den første side med følgende kode). Jeg har lokaliseret problem til behandling af request-strengen:

String request = request.getQueryString();
request="&"+request;

Det "sjove" er, at hvis ikke jeg manipulerer tekststrengen, virker det. Uanset hvordan jeg vender og drejer koden kan jeg ikke tilføje noget som helst tekst til strengen, uden at der kastes en NullPointerException når siden loades som den første.

Jeg skal iøvrigt redigere jsp filen for at tvinge Tomcat til at compile så siden virker - det virker ikke blot med "?pre_compile" ...

Jeg har siden lavet koden om til at anvende
String param = request.getParameterNames()
og
request.getParameter(parm)

- problemet er det samme. Så snart jeg prøver at behandle det data (som IKKE ER NULL), får jeg en NullPointerException ..

Nogle bud på årsagen, bud på løsninger eller hvordan jeg kan gøre det anderledes? jeg skal bare af med det problem ....
Avatar billede Slettet bruger
02. december 2003 - 10:31 #1
- og request.getParameter(parm) var en tastefejl:
request.getParameter(param)

Det er IKKE problemet
Avatar billede Slettet bruger
02. december 2003 - 11:21 #2
Jeg har nu kogt min kode ned til følgende:

<%
    String email = request.getParameter("email");
   
    Customer customer=null;
    if(email!=null && !email.equals("")){
        customer=Server.getCustomer(email);
    }
   
    String query = request.getQueryString();
    String og = "&";
    out.print(og);
    out.print(query);
    out.print(og+query);
%>

hvis jeg fjerner:
1) out.print(og+query);
  -  ELLER  -
2) customer=Server.getCustomer(email);

så virker det.... hvorfor kan de to stykker kode ikke sammen??
Avatar billede Slettet bruger
02. december 2003 - 11:30 #3
- Og det virker også hvis jeg sætter koden omvendt:

<%
   
    String query = request.getQueryString();
    String og = "&";
    out.print(og);
    out.print(query);
    out.print(og+query);

  String email = request.getParameter("email");
   
    Customer customer=null;
    if(email!=null && !email.equals("")){
        customer=Server.getCustomer(email);
    }

%>
Avatar billede Slettet bruger
02. december 2003 - 12:14 #4
.. men igen ikke hvis jeg så sætter en response.sendRedirect til sidst - kun hvis den ikke har noget med de andre Strings at gøre...

HJÆLP!
Avatar billede Slettet bruger
02. december 2003 - 12:41 #5
Måske er dette relateret til mit problem. det fremkommer på konsollen når jeg efterfølgende henter de sider hvor problemet eksisterer:

02-12-2003 12:38:00 org.apache.commons.modeler.Registry registerComponent
SEVERE: Error registering Catalina:type=RequestProcessor,worker=http8080,name=Ht
tpRequest2
java.security.AccessControlException: Access denied (mx4j.server.MBeanTrustPermi
ssion register): MBean class org.apache.commons.modeler.BaseModelMBean is not trusted for registration at mx4j.server.interceptor.SecurityMBeanServerInterceptor.checkTrustRegi
stration(SecurityMBeanServerInterceptor.java:156)
        at mx4j.server.interceptor.SecurityMBeanServerInterceptor.registration(SecurityMBeanServerInterceptor.java:116)
        at mx4j.server.interceptor.DefaultMBeanServerInterceptor.registration(DefaultMBeanServerInterceptor.java:113)
        at mx4j.server.interceptor.DefaultMBeanServerInterceptor.registration(DefaultMBeanServerInterceptor.java:113)
        at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.registration(ContextClassLoaderMBeanServerInterceptor.java:108)
        at mx4j.server.MBeanServerImpl.registerImpl(MBeanServerImpl.java:1051)
        at mx4j.server.MBeanServerImpl.registerMBeanImpl(MBeanServerImpl.java:1002)
        at mx4j.server.MBeanServerImpl.registerMBean(MBeanServerImpl.java:978)
        at org.apache.commons.modeler.Registry.registerComponent(Registry.java:871)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.init(Http11Protocol.java:514)
        at org.apache.tomcat.util.net.TcpWorkerThread.getInitData(PoolTcpEndpoint.java:541)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:656)
        at java.lang.Thread.run(Thread.java:534)
02-12-2003 12:38:00 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler init
WARNING: Error registering request
Avatar billede Slettet bruger
02. december 2003 - 13:04 #6
Tjah - og problemet er ikke kun for Tomcat 4.1.27 - jeg har prøvet 4.1.18 også - men den eneste Tomcat der "æder" problemet er 5'eren, som er i Beta...
Avatar billede Slettet bruger
02. december 2003 - 14:21 #7
Kommentaren fra 02/12-2003 12:41:50
-----------------------------------
Denne exception har (heldigivis?) ikke noget med sagen at gøre, men er sandsynligvis fordi jeg udvikler på serveren mens den kører...

Er der slet ingen der har nogle kommentarer ???
Avatar billede Slettet bruger
02. december 2003 - 14:46 #8
Hrmf... det er ikke meget respons der er her ;'(

Iøvrigt kan jeg nævne at fejlen først optræder EFTER siden redirectes....
Avatar billede Slettet bruger
03. december 2003 - 10:38 #9
Lukker
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