为什么用JNDI创建数据源总是失败?急!!
我用开发环境是
TOMCAT 4.0
SQL Server 2000
JBuilder 9
SERVER.XML 中的配置内容如下:
<!-- Tomcat CBNC_CALLCENTER Context -->
<Context docBase="D:\CBNC_CALLCENTER\DATAOS"
path="/CBNC" debug="0" privileged="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_cbnc_log." suffix=".txt" timestamp="true" />
<Resource name="jdbc/CBNC_CALLCENTER_DB" auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/CBNC_CALLCENTER_DB" >
<parameter>
<name>user</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>NIMS</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>driverName</name>
<value>jdbc:microsoft:sqlserver://panx:1433;DatabaseName=AGCallCenter</value>
</parameter>
</ResourceParams>
</Context>
WEB.XML内容如下:
<resource-ref>
<res-ref-name>jdbc/CBNC_CALLCENTER_DB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
主程序是在WEB应用程序上加了一个应用程序启动监听器,在这个侦听器里主要做的工作就是通过JNDI查找到数据库连接资源并转换为DATASOURCE,然后将其存储入ServletContext(Application)中。
程序如下:
package com.outservice;
import javax.servlet.*;
import javax.naming.*;
import java.sql.*;
import javax.sql.*;
import com.microsoft.jdbcx.sqlserver.SQLServerDataSource;
public class InitListener implements ServletContextListener
{
public void contextInitialized(ServletContextEvent en)
{
ServletContext sctx = en.getServletContext();
try
{
InitialContext ic = new InitialContext();
Context ctx = (Context) ic.lookup("java:/comp/env");
*************************************
DataSource ds = (DataSource) ctx.lookup("jdbc/CBNC_CALLCENTER_DB");
******程序运行完上一句就会报错********
sctx.setAttribute("conn",(Connection)ds.getConnection());
}
catch(Throwable ex)
{
sctx.log("创建数据库连接时发生错误:" + ex.getMessage());
ex.printStackTrace();
}
}
public void contextDestroyed(ServletContextEvent en)
{
}
}
错误为:
TyrexDataSourceFactory: Cannot create DataSource, Exception
java.lang.NoClassDefFoundError: tyrex/jdbc/xa/EnabledDataSource
请问这是为什么?