| « | January 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| 公告 |
好好学习 天天向上 |
| Blog信息 |
|
blog名称:小鱼的空间 日志总数:18 评论数量:20 留言数量:0 访问次数:85015 建立时间:2006年7月6日 |

| |
|
jndi中的奇怪问题 软件技术
taotao6086 发表于 2007/10/25 11:01:13 |
| 最近几天一直在弄jndi.但是发现一个奇怪的问题.就是在配置完jndi数据源后.在用lookup查找的时候经常出现下面的错误:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source) at javax.naming.InitialContext.lookup(Unknown Source)
错误指向的行就是在用lookup查找数据源的时候.
但是在jsp页面中调用就没有这样的问题.在java类中些就发生问题.很是奇怪...
我用的环境是 eclipse3.1+jkd1.4+jboss4.0.4
数据源代码如下(jboss_home\erver\all\deploy\mysql-ds.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mysql-ds.xml,v 1.3.2.3 2006/02/07 14:23:00 acoliver Exp $ --><!-- Datasource config for MySQL using 3.0.9 available from:http://www.mysql.com/downloads/api-jdbc-stable.html-->
<datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://127.0.0.1:3306/test</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>1234</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <!-- should only be used on drivers after 3.22.1 with "ping" support <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name> --> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> -->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource></datasources>
调用的代码如下:
DataSource ds = null; try{ InitialContext ctx = new InitialContext(); ds = (DataSource)ctx.lookup("java:/MySqlDS"); Connection conn = ds.getConnection(); String sql = "select * from courses"; Statement ps = conn.createStatement(); ResultSet rs = ps.executeQuery(sql); while(rs.next()){ System. out.println(rs.getString("name")); } rs.close(); ps.close(); conn.close(); }catch(Exception e){ System.out.println("This is Error for DataSource"); e.printStackTrace(); } |
|
|