Antw: Re: [opencms-dev] Addressing external database from JSP

Björn Schlueter bschlueter at lenord.de
Mon May 3 11:58:02 CEST 2004


Hi,

thanks a lot for that help.
Unfortunately I am still stuck with another error now. Using the code below causes:

javax.servlet.ServletException: Resource loader error in file '/testdb.jsp'

Root cause:
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: -1 in the jsp file: null

Generated servlet error:
    [javac] Since fork is true, ignoring compiler setting.
    [javac] Compiling 1 source file
    [javac] Since fork is true, ignoring compiler setting.
    [javac] /var/jakarta-tomcat-4.1.24/work/Standalone/localhost/intra/WEB-INF/jsp/offline/testdb_jsp_jsp.java:19: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
    [javac]        Class.forName(sDbDrv);
    [javac]             ^
    [javac] 1 error

I think it has something to do with the installed driver. But I cannot figure out what. The Driver is installed like this:

intra:/var/jakarta-tomcat-4.1.24/webapps/intra/WEB-INF/lib# jar -tvf msbase.jar
31575 Tue Oct 07 16:05:54 CEST 2003 META-INF/MANIFEST.MF
31683 Tue Oct 07 16:05:56 CEST 2003 META-INF/zigbert.sf
2527 Tue Oct 07 16:05:56 CEST 2003 META-INF/zigbert.rsa
1316 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseBatchUpdateException.class
5526 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseBlob.class
1524 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseBlobInputStream.class
1631 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseBlobOutputStream.class
327 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseBuildId.class
7362 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseCallableStatement.class
587 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseCallEscape.class
2709 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseCharacterStreamWrapper.class
1615 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseClassUtility.class
7594 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseClob.class
2012 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseClobInputStream.class
2224 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseClobOutputStream.class
2445 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseColumn.class
2135 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseColumns.class
10771 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseConnection.class
1601 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseConnectionPool.class
1489 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseConnectionProperties.class
1412 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseConnectionStartup.class
19534 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseData.class
37811 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseDatabaseMetaData.class
3268 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseDriver.class
1518 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseDriverPropertyInfos.class
959 Fri Aug 08 17:23:56 CEST 2003 com/microsoft/jdbc/base/BaseEscape.class

Am I on the right track? Can someone help?
Any help is appreciated!

Thanks
Björn

>>> beffe at beffe.de 30.04.2004 22:04:58 >>>
It should look like this:
<html>
<body>
<%@ page
import = "java.io.*"
import = "java.lang.*"
import = "java.sql.*"
%>

<%!
   static String sDbDrv = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
   static String sDbUrl = "jdbc:microsoft:sqlserver://server/bla";
   String sSql = "SELECT * from Example";

   static {
       Class.forName(sDbDrv);
       }
%>

<%
   Connection cn = DriverManager.getConnection(sDbUrl, "bla", "bla");
   Statement st = cn.createStatement();
   ResultSet rs = st.executeQuery(sSql);

   ResultSetMetaData meta = rs.getMetaData();
   out.println("Got results:");

            while
              (rs.next() == true)
              {
                // Which Column?
                out.println("Working Title: ");
                String a = rs.getString("P_TITEL");
                out.print(a);

                 //Which Column?
                out.print("Projektziel: ");
                String b = rs.getString("P_ZIEL");
                out.print(b);
}
try {
 if (rs!=null) rs.close();
 if (st!=null) st.close();
 if (cn!=null) cn.close();
}
catch (Exception ignore) {}

%>
</body>
</html>

----- Original Message -----
From: "Stephan Hartmann" <beffe at beffe.de>
To: <opencms-dev at opencms.org>
Sent: Friday, April 30, 2004 8:55 PM
Subject: Re: [opencms-dev] Addressing external database from JSP


> Hi Björn,
>
> inside of a definition block (starting with "<%!" ) you can only place
> member variable an method definitions, but not normal code. You have to
> close this block with a "%>" after the method jspInit's closing bracket
and
> open a code block for the rest with "<%".
> After the closing bracket of the while loop you should also place some
clean
> up:
> try {
>  if (rs!=null) rs.close();
>  if (st!=null) st.close();
>  if (cn!=null) cn.close();
> }
> catch (Exception ignore) {}
>
> Bye,
> Stephan
>
> ----- Original Message -----
> From: "Björn Schlueter" <bschlueter at lenord.de>
> To: <opencms-dev at opencms.org>
> Sent: Friday, April 30, 2004 10:40 AM
> Subject: [opencms-dev] Addressing external database from JSP
>
>
> Hello there,
>
> as a newbie I am stuck with this little problem.
> I am trying to access from opencms an external datebase (namely a ms sql
> 2000 server).
> I know I should use a servlet to access that db, but right know i want to
> use a jsp as a shortcut.
>
> This ist what my code looks like:
>
> <html>
> <body>
> <%@ page
> import = "java.io.*"
> import = "java.lang.*"
> import = "java.sql.*"
> %>
>
> <%!
>    String sDbDrv = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
>    String sDbUrl = "jdbc:microsoft:sqlserver://server/bla";
>    String sSql = "SELECT * from Example";
>
>    public void jspInit()
>        {
>        Class.forName(sDbDrv);
>        Connection cn = DriverManager.getConnection(sDbUrl, "bla", "bla");
>        }
>
>    Statement st = cn.createStatement();
>    ResultSet rs = st.executeQuery(sSql);
>
>    ResultSetMetaData meta = rs.getMetaData();
>    out.println("Got results:");
>
>             while
>               (rs.next() == true)
>               {
>                 // Which Column?
>                 out.println("Working Title: ");
>                 String a = rs.getString("P_TITEL");
>                 out.print(a);
>
>                  //Which Column?
>                 out.print("Projektziel: ");
>                 String b = rs.getString("P_ZIEL");
>                 out.print(b);
> }
> %>
> </body>
> </html>
>
>
> I really don't know, why OpenCMS does not want to compile that jsp.
>
> I get the following  messages:
>a from Example";

   sta
> javax.servlet.ServletException: Resource loader error in file
'/testdb.jsp'
>
> Root cause:
> org.apache.jasper.JasperException: Unable to compile class for JSP
>
> An error occurred at line: -1 in the jsp file: null
>
> I am pretty much helpless right know. I couldn't find help at google or
> relevant java forums!
>
> Can somone of you give me a hint?
>
> Thanks
>
> Björn
>
>
> _______________________________________________
> This mail is send to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://mail.opencms.org/mailman/listinfo/opencms-dev 
>
>
> _______________________________________________
> This mail is send to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://mail.opencms.org/mailman/listinfo/opencms-dev 
>

_______________________________________________
This mail is send to you from the opencms-dev mailing list
To change your list options, or to unsubscribe from the list, please visit
http://mail.opencms.org/mailman/listinfo/opencms-dev



More information about the opencms-dev mailing list