Topic: tomcat5配置jndi的问题 (jdbc:comp is not bound in this Context) |
Print this page |
1.tomcat5配置jndi的问题 (jdbc:comp is not bound in this Context) | Copy to clipboard |
Posted by: returner Posted on: 2004-11-09 22:42 tomcat5配置jndi的问题;斑竹高手们来看看啊,情况紧急!!!!!!!!10万分感谢 这个问题我是搜索出来的,我也遇到了同样的问题,希望高手给于关注: http://www.cjsdn.net/post/view?bid=7&id=95089&tpg=1&ppg=1&sty=1&age=0#95089 本人的环境是Eclipse2.1.2+tomcat5.0+lomboz+mysql $tomcat_home$/comm/lib下加入jndi.jar,mysql+jdbc驱动。 在tomcat的Sever.xml中的〈/Engine>前加入以下内容: <Context path="/testhibernate" docbase="testhibernate" debug="5" reload="true" crossContext="true"> <Resource name="jdbc/hibernate" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/hibernate"> <parameter> <name>factory</name> <values>org.apache.commons.dbcp.BasicDataSourceFactory</values> </parameter> <parameter> <name>url</name> <values>jdbc:mysql://localhost:3306/shop</values> </parameter> <parameter> <name>driverclassname</name> <values>com.mysql.jdbc.Driver</values> </parameter> <parameter> <name>username</name> <values>root</values> </parameter> <parameter> <name>password</name> <values>root</values> </parameter> <parameter> <name>maxWait</name> <values>3000</values> </parameter> <parameter> <name>maxIdle</name> <values>10</values> </parameter> <parameter> <name>maxActive</name> <values>100</values> </parameter> </ResourceParams> </Context> 在Webapps的Web.xml中加入以下内容: <resource-ref> <description>connectDB test</description> <res-ref-name>jdbc/hibernate</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 测试代码如下: package com.yzs.test.hibernate; import java.io.IOException; import java.io.PrintWriter; import javax.naming.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.*; import java.sql.*; /** * @author yzs * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class testservlet extends HttpServlet { protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //TODO Method stub generated by Lomboz Context initctx=null; Context ctx=null; DataSource ds=null; Connection conn=null; Statement stmt=null; ResultSet rs=null; response.setContentType("text/html"); PrintWriter out=response.getWriter(); try { initctx=new InitialContext(); ctx= (Context) initctx.lookup("jdbc:comp/env"); ds=(DataSource)ctx.lookup("jdbc/hibernate"); if(ds==null) throw new NamingException("no database"); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { conn=ds.getConnection(); stmt=conn.createStatement(); rs=stmt.executeQuery("select * from brand"); rs.next(); out.println("<html>"); out.println("<head"); out.println("<title>test jndi</title>"); out.println("</head>"); out.println("<body>"); out.println(rs.getString("name")); } catch (SQLException e4) { // TODO Auto-generated catch block e4.printStackTrace(); } } } 出现了Name jdbc:comp is not bound in this Context的问题,请各位大侠 帮忙看一下问题出在哪里。 |
2.Re:tomcat5配置jndi的问题 [Re: returner] | Copy to clipboard |
Posted by: returner Posted on: 2004-11-09 22:45 另外,tomcat5中的<context>是个单独的xml文件 那么还需要把它的内容拷贝到server.xml文件中么 急需答案。 建议斑竹,给参与的人加分!!!!!!!!! |
3.Re:tomcat5配置jndi的问题 [Re: returner] | Copy to clipboard |
Posted by: 牛老板 Posted on: 2004-11-10 08:53 我"觉得"是不用copy到server.xml中的. 可以再看看tomcat的How_to . |
4.Re:tomcat5配置jndi的问题;斑竹高手们来看看啊,情况紧急!!!!!!!!10万分感谢 [Re: returner] | Copy to clipboard |
Posted by: lot1 Posted on: 2004-11-10 18:05 the hint is very clear, this line is wrong: ctx= (Context) initctx.lookup("jdbc:comp/env"); should be: ctx= (Context) initctx.lookup("java:comp/env"); customer jndi names are mounted to java:comp/env, this is a standard. |
5.Re:tomcat5配置jndi的问题;斑竹高手们来看看啊,情况紧急!!!!!!!!10万分感谢 [Re: returner] | Copy to clipboard |
Posted by: returner Posted on: 2004-11-10 22:30 谢谢楼上。 但是我自己的程序: environment = new Properties( ); environment.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.naming.java.javaURLContextFactory"); environment.put(Context.PROVIDER_URL,"localhost:8080"); initCtx = new InitialContext( environment ); ctx = (Context) initCtx.lookup("java:comp/env"); sessionFactory= (SessionFactory) initCtx.lookup("jdbc/mycat"); 确实出现这个问题的: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context |
6.Re:tomcat5配置jndi的问题 [Re: returner] | Copy to clipboard |
Posted by: lot1 Posted on: 2004-11-10 23:52 Why you lookup SessionFactory, instead of datasource? try this: initctx=new InitialContext(); ctx= (Context) initctx.lookup("java:comp/env"); ds=(DataSource)ctx.lookup("jdbc/hibernate"); And move your resource defintion outside of your Context - move it to default Context and try. or post your server.xml here. If still cannot work, reverse to the original and make changes step by step. tomcat jndi is just a gift, dont take it so serious like commercial product. { Please consider using the Editing function rather than posting multiple replies in a short period of time. } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |