Newsgroup: it.comp.java
Titolo: TOMCAT JDBCrealm

Ho da poco installato tomcat e sto cercando di capire come funziona. Ho
provato ad attivare la connessione al database JDBCRealm e quindi abilitare
la connessione al server come utente. Premetto che per motivi di tempo
invece di installare MySQL ho utilizzato ACCESS, creando la connessione al
Database attraverso l'ODBC e modificando il file server.xml (cioč togliendo
la parte commentata ). in questo modo:
<RequestInterceptor
            className="org.apache.tomcat.request.JDBCRealm"
            debug="99"
     driverName="sun.jdbc.odbc.JdbcOdbcDriver"
     connectionURL="jdbc:odbc:TOMCAT" />
            userTable="users"
            userNameCol="user_name"
            userCredCol="user_pass"
     userRoleTable="user_roles"
            roleNameCol="role_name" />
Purtruppo se mi collego a: localhost\admin
e cerco di andare nel context mi genera una pagina di errori, di cui non
capisco un'acca e che aggiungo qui.
Error: 500
Location: /examples/jsp/snp/snoop.jsp
Internal Servlet Error:
javax.servlet.ServletException:
 at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:459)
 at
jsp.snp._0002fjsp_0002fsnp_0002fsnoop_0002ejspsnoop_jsp_0._jspService(_0002f
jsp_0002fsnp_0002fsnoop_0002ejspsnoop_jsp_0.java:166)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.ja
va:177)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java, Compiled
Code)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
 at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
 at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java,
Compiled Code)
 at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java,
Compiled Code)
 at java.lang.Thread.run(Thread.java, Compiled Code)
Root cause:
java.lang.NullPointerException:
 at
sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.ja
va:1194)
 at
sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.
java:575)
 at org.apache.tomcat.request.JDBCRealm.authenticate(JDBCRealm.java:306)
 at org.apache.tomcat.request.JDBCRealm.authenticate(JDBCRealm.java:482)
 at
org.apache.tomcat.core.ContextManager.doAuthenticate(ContextManager.java,
Compiled Code)
 at org.apache.tomcat.core.RequestImpl.getRemoteUser(RequestImpl.java:341)
 at
org.apache.tomcat.facade.HttpServletRequestFacade.getRemoteUser(HttpServletR
equestFacade.java:250)
 at
jsp.snp._0002fjsp_0002fsnp_0002fsnoop_0002ejspsnoop_jsp_0._jspService(_0002f
jsp_0002fsnp_0002fsnoop_0002ejspsnoop_jsp_0.java:127)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.ja
va:177)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java, Compiled
Code)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
 at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
 at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java,
Compiled Code)
 at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java,
Compiled Code)
 at java.lang.Thread.run(Thread.java, Compiled Code)
C'č qualcuno che puň darmi una dritta su dove intervenire? Grazie a tutti
Paolo

 la parte commentata ). in questo modo:
L'ho fatto anch'io e tutta mi funziona regolarmente, ovviamente devi 
avere un DSN TOMCAT che punta ad un db che contiene le tabelle users e 
user_roles con le colonne fatte come definito nel tag requestInterceptor
poi ti devi fare una applicazione dove nel file web.xml definisci che č 
protetta da un certo realm, nel capitolo dell' application descriptor 
della specifiche delle servlet trovi un esempio abbastanza dettagliato 
che ho usato anch'io per le mie prove.
ciao
Marco