[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Null Pointer exceptions in servlets since latest Apache/Jserv update



On Tue, 21 Mar 2000 16:24:29 +0100  Stefan Gybas <stefan@gybas.com>
in debian-devel:
(I post this now here because Stefan pointed me to this list ...
 My former E-Mails to debian-devel are appended as attachment)

> > java.lang.NullPointerException:
> > where line 70 is something like
> > 
> >       rs = stmt.executeQuery("SELECT * FROM Table");
> 
> This simply means that stmt is NULL at this point, i.e. the previous call
> to Connection.createStatement() failed. We can't help you unless you post
> the whole source file.
I attach the servlet source to this mail als Hallo.java
It's simply the FreeTDS Initialisation as described in the FreeTDS-JDBC
README (as I used successfully formerly).

> > I have included the line
> > 
> >    repositories=/usr/share/java/servlets,/usr/share/java/freetds_jdbc.jar
> > 
> > in /etc/jserv/zones/root.properties.
> 
> You should not do this as the classes in the propsitory are loaded using a
> special classloader which detects changes files. You should rather put
> freetds_jdbc.jar into wrapper.classpath in /etc/jserv/jserv.properties and
> make sure that the system classes (classes.zip for JDK 1.1) are also included
> in this classpath.
Hmm, could you be so kind to post an example?
Im quite unsure because  /etc/jserv/jserv.properties says:

# Apache JServ entry point class (should not be changed)
                                  ^^^^^^^^^^^^^^^^^^^^^
# Syntax: wrapper.class=[classname] (String)
# Default: "org.apache.jserv.JServ"

So what Do I have to write exactly and where can I set the global
classpath (for Apache?) correctly?
 
> BTW: This is the wrong mailinglist for this question, please use debian-user
> next time (it's also off topic on debian-java).
Thanks for the hint.  Hopefully I have done it right now.

Kind regards

         Andreas.
import java.io.*;
import java.sql.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class Hallo extends HttpServlet
{ 

Connection          con;
ResultSet           rs;
Statement           stmt; 
ServletOutputStream out;


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

    try {
      Class.forName("com.internetcds.jdbc.tds.Driver");
      //      Class.forName("com.internetcds.jdbc.tds.SybaseDriver");
    } catch (ClassNotFoundException e) { 
      System.err.println("CNF: " + e.getMessage());
      return;
    }

    String url      = "jdbc:freetds:sqlserver://sql03/Test";
    String user     = "TestUser" ;
    String password = "test";

    try {
      con   = DriverManager.getConnection(url, user, password);
    } catch (SQLException se) {
      System.err.println("SQL: " + se.getMessage());
      return;
    } 

  }

  public void service (HttpServletRequest request,
                       HttpServletResponse res) 
    throws ServletException, IOException
  {
    String title = "Example Apache JServ Servlet", query;

    res.setContentType("text/html");

    out  = res.getOutputStream();
            
    out.println("<HTML><HEAD><TITLE>");
    out.println(title);
    out.println("</TITLE></HEAD><BODY bgcolor=\"#FFFFFF\">");
    out.println("<H1>" + title + "</H1>");

    try {
      out.println("1<br>");
      rs    = stmt.executeQuery("SELECT * FROM Test");
      out.println("2<br>");
      if ( !rs.next() ) {
      out.println("3<br>");
        System.err.println("Fehler 4");
        return ;
      }
      out.println("4<br>");
      query = rs.getString("Column");
      out.println("5<br>");
      out.println(query);
      out.println("6<br>");
    } catch (SQLException se) {
      out.println("SQL: " + se.getMessage());
      return;
    } 
    out.println("<H2>Gratulation<br>");
    out.println("</BODY></HTML>");
    out.close();
  }
}
 
On Thu, 16 Mar 2000, Stefan Gybas wrote:

> /jserv is an Apache handler, i.e. a "virtual" URL (from
> /etc/jserv/jserv.conf which is part of the Apache configuration):
> 
> # Enable the Apache JServ status handler with the URL of 
> # "http://servername/jserv/"; (note the trailing slash!)
> # Change the "deny" directive to restrict access to this status page.
> <Location /jserv/>
>   SetHandler jserv-status
>   
>   order deny,allow
>   deny from all
>   allow from localhost
> </Location>
Thanks and sorry for bothering you with the bug report.
Anyway it's not clear for me what to do that the image of the
IsItWOrking-page is displayed right.  It is not displayed even
if I access it from localhost.

Could you insert in the configuration file
a) an example hoe to enable access from localhost/certain host/any host
   or
b) include a hint to such information.

I'm fighting since two weeks to get working what was working before
the latest Jserv/Apache packages and I try to investigate in the problems
that my Database accessing servlets refuse to work.  I'm really unsure
if the new Jserv is the reason but I just follow any hint ...

Kind regards and thanks for maintaining this package

     Andreas.
On Tue, 21 Mar 2000, Andreas Tille wrote:

> Hello,
> 
> I've run into big trouble since I updatet do the latest Apache and
> Jserv packages:
>  ...
> For JDBC access to an MS SQL 7.0 server I use freetds-jdbc.  This
> works well in standalone Java applications but fails in servlets:
Furthermore I've found in the logs the following information:

[Tue Mar 21 11:25:22 2000] [error] JServ: ajp12: Servlet Error:
java.lang.NoSuchMethodError: com.internetcds.jdbc.tds.Statement: method
<init>(Ljava/sql/Connection;Lcom/internetcds/jdbc/tds/Tds;)V not found:
com.internetcds.jdbc.tds.Statement: method
<init>(Ljava/sql/Connection;Lcom/internetcds/jdbc/tds/Tds;)V not found
[Tue Mar 21 11:25:22 2000] [error] JServ: an error returned handling request
via protocol "ajpv12"


I'm really in trouble and have no idea why the communication between
Jserv and FreeTDS-JDBC did not work as before :-(((.

Any help is really appreciated!

Kind regards
 
        Andreas.

Reply to: