最近再看《Tomcat WEb开发与整合应用一书》,在第19章jndi技术的时候遇到了问题。我按照书中的例子做的:JavaBean的源文件:UserInfo.javapackage cn.ac.ict;public class UserInfo{
private String username = "guest";
private String password = "anonymous";         public UserInfo(){} public void setUsername(String username){
this.username = username;
}
public void setPassword(String password){
this.password = password;
} public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
}
Tomcat环境配置文件:JNDI.xml<?xml version="1.0" encoding="UTF-8"?>
<Context crossContext="true"
         docBase="E:/PublishBook/JNDI"
     path="/JNDI"
     debug="0"
         reloadable="true"
         swallowOutput="true"
     workDir="work\Catalina\localhost\TomcatConfig">

<Resource name="bean/userinfo" 
          auth="Container"
              type="cn.ac.ict.UserInfo"/>
    <ResourceParams name="bean/userinfo">
    <parameter>
      <name>factory</name>
      <value>org.apache.naming.factory.BeanFactory</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>maximum</value>
    </parameter>
    </ResourceParams>
</Context>
我的应用程序目录的web.xml文件<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee           http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">  <resource-env-ref>
    <description>Object factory for UserInfo instances.</description>
    <resource-env-ref-name>bean/userinfo</resource-env-ref-name>
    <resource-env-ref-type>cn.ac.ict.UserInfo</resource-env-ref-type>
  </resource-env-ref>
</web-app>
这个是应用JNDI服务的jsp文件:<%@ page import="javax.naming.*,cn.ac.ict.*"%>
<html>
<head>
  <title>Generic JavaBean Resources Test</title>
</head><body>
<h2>Generic JavaBean Resources</h2>
<%
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
UserInfo bean = (UserInfo)envCtx.lookup("bean/userinfo");
out.println("Username:" + bean.getUsername() + ",Password:" + bean.getPassword());
%>
</body>
</html>
但是在运行的时候就是不行,异常提示为:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Exception in JSP: /javabeansource.jsp:1310: <%
11: Context initCtx = new InitialContext();
12: Context envCtx = (Context) initCtx.lookup("java:comp/env");
13: UserInfo bean = (UserInfo) envCtx.lookup("bean/userinfo");
14: out.println("Username = " + bean.getUsername() + ", password = " + bean.getPassword());
15: %>
16: </body> 
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause javax.servlet.ServletException: Cannot create resource instance
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.javabeansource_jsp._jspService(javabeansource_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause javax.naming.NamingException: Cannot create resource instance
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:142)
javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
org.apache.naming.NamingContext.lookup(NamingContext.java:792)
org.apache.naming.NamingContext.lookup(NamingContext.java:139)
org.apache.naming.NamingContext.lookup(NamingContext.java:780)
org.apache.naming.NamingContext.lookup(NamingContext.java:152)
org.apache.jsp.javabeansource_jsp._jspService(javabeansource_jsp.java:56)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
弄了老半天还是不行,实在愁死我了,大侠帮帮忙吧。我用的jsp环境是jdk1.5 + tomcat 5.5.17 + apache 2.0.55