请教Tomcat数据源问题! To: singlebigstone(一道烟)兄我的数据源都没问题!按理说即使数据源是空的getConnection()这个函数也应该存在呀!怎么这里显示这个函数是未知的!还请各位再帮帮忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要不你把那个Exception粘出来。 它现在没有报Exception,只是在我输入的时候ds.后面出现的提示框里面没有getConnection()这个方法!并且如果我输入getConnection()的时候,在代码编辑框中给出提示说cannot verify the simple"getConnection()"!如果我自己编译执行的话,在浏览器中没显示!一片空白! To:joyaga(joyaga) 兄 我现在不用编译器,就是直接编译然后执行,结果浏览器中没有一点显示。我即使加入一些输出,结果浏览器中还是没有输出!哎!真是郁闷! DataSource中有getConnection()这个方法的,有可能是你在输入的时候系统不认识那种输入法,结果输入的字符串系统不能识别,所以就会说有错误的。 Context initCtx=new InitialContext();if(initCtx!=null){ Context ctx = (Context)initCtx.lookup("java:comp/env");}else{System.out.println("initCtx is null!");}if(ctx!=null){ ds=(DataSource)ctx.lookup("jdbc/mssql");}else{System.out.println("ctx is null!");}if(ds!=null){ Connection conn = ds.getConnection();");}else{System.out.println("ds is null!");}把你的代码用上面的代替一下,看看哪个是空的,再对症下药吧。 而且你看一下,你连着用了两个Context,尝试把两个context合并到一个中试试。如下写法: try { Context ctx = new InitialContext(); if (ctx == null) throw new Exception("Boom - No Context"); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mssql"); if (ds != null) { conn = ds.getConnection(); } } catch (Exception e) { e.printStackTrace(); } 问题基本上是找到了,我在ds=(DataSource)ctx.lookup("jdbc/mssql");前面加一条语句就能够输出结果,但是我在这一句的后面加一条语句就得不到结果!是不是找不到jdbc/mssql呢?我在Tomcat控制台里面建立的数据源难道还需要在什么地方设置不成吗?请各位指点一下!小弟先谢过了! 问题基本上是找到了,我在ds=(DataSource)ctx.lookup("jdbc/mssql");前面加一条语句就能够输出结果,但是我在这一句的后面加一条语句就得不到结果!是不是找不到jdbc/mssql呢?我在Tomcat控制台里面建立的数据源难道还需要在什么地方设置不成吗?请各位指点一下!小弟先谢过了! 这是Server.xml里面自己建立的代码:<?xml version='1.0' encoding='utf-8'?><Server> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <GlobalNamingResources> <Environment value="30" type="java.lang.Integer" name="simpleValue"/> <Resource type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" auth="Container" name="UserDatabase"/> <Resource type="javax.sql.DataSource" name="jdbc/mssql"/> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> <ResourceParams name="jdbc/mssql"> <parameter> <name>validationQuery</name> <value>this datasource is a connection to Microsoft Sql Server 2000</value> </parameter> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://192.168.130.66:1433;DatabaseName=test</value> </parameter> <parameter> <name>password</name> <value>admin_2004</value> </parameter> <parameter> <name>maxActive</name> <value>4</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>username</name> <value>sa</value> </parameter> <parameter> <name>maxIdle</name> <value>2</value> </parameter> </ResourceParams> </GlobalNamingResources> <Service name="Catalina"> <Connector acceptCount="100" connectionTimeout="20000" port="8080" redirectPort="8443" disableUploadTimeout="true"> </Connector> <Connector protocol="AJP/1.3" port="8009" redirectPort="8443" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"> </Connector> <Engine defaultHost="localhost" name="Catalina"> <Host appBase="webapps" name="localhost"> <Logger className="org.apache.catalina.logger.FileLogger" suffix=".txt" prefix="localhost_log." timestamp="true"/> </Host> <Logger className="org.apache.catalina.logger.FileLogger" suffix=".txt" prefix="catalina_log." timestamp="true"/> <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/> </Engine> </Service></Server> 在web.xml里面也要做相应的配置,在<web-app>与</web-app>间加类似这样的代码:<resource-ref> <description>Connection</description> <res-ref-name>jdbc/mssql</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 你的<res-ref-name>就是jdbc/mssql另外,最好将lookup的参数写成这样:lookup("java:comp/env/jdbc/mssql");还有,你的驱动没有问题吧? http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-resources-howto.html看看这个文档吧,可能对你有帮助的。 另<Service name="Catalina"> <Connector acceptCount="100" connectionTimeout="20000" port="8080" redirectPort="8443" disableUploadTimeout="true"> </Connector> <Connector protocol="AJP/1.3" port="8009" redirectPort="8443" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"> </Connector> <Engine defaultHost="localhost" name="Catalina">这几句可能应该写到<GlobalNamingResources>的前面 To singlebigstone(一道烟) 兄谢谢你的帮忙不过我照你的方法做了,这一次浏览器一直在连接,出不来结果!好像是连不上!现在真的搞不懂了!郁闷! 再看看tomcat的日志吧,看看是什么问题。 求解这个Caused By Java有了接口,为什么还需要抽象类 Java联网问题 IT风云人物--唐骏学历造假是不是真的 ? 关于ANT现在使用的广泛性问题? struts 标签中 JSP变量的问题 做毕设急问:一定要用Session Bean调用Entity Bean吗,这样做有什么好处? tiles框架调试问题 基于XML用户界面动态生成框架 springMVC+spring,mvc扫描的controller无法使用spring扫描的service实现类 socket 客户端每调用一次都会自动关闭,能不能循环监听? EJB 3.0 开发环境的搭建
"getConnection()"!如果我自己编译执行的话,在浏览器中没显示!一片空白!
我现在不用编译器,就是直接编译然后执行,结果浏览器中没有一点显示。我即使加入一些输出,结果浏览器中还是没有输出!
哎!真是郁闷!
if(initCtx!=null){
Context ctx = (Context)initCtx.lookup("java:comp/env");}
else{System.out.println("initCtx is null!");}
if(ctx!=null){
ds=(DataSource)ctx.lookup("jdbc/mssql");}
else{System.out.println("ctx is null!");}
if(ds!=null){
Connection conn = ds.getConnection();");}
else{System.out.println("ds is null!");}把你的代码用上面的代替一下,看看哪个是空的,再对症下药吧。
try {
Context ctx = new InitialContext();
if (ctx == null)
throw new Exception("Boom - No Context");
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mssql");
if (ds != null) {
conn = ds.getConnection();
}
}
catch (Exception e) {
e.printStackTrace(); }
请各位指点一下!小弟先谢过了!
请各位指点一下!小弟先谢过了!
<?xml version='1.0' encoding='utf-8'?>
<Server>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<GlobalNamingResources>
<Environment value="30" type="java.lang.Integer" name="simpleValue"/>
<Resource type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" auth="Container" name="UserDatabase"/>
<Resource type="javax.sql.DataSource" name="jdbc/mssql"/>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
<ResourceParams name="jdbc/mssql">
<parameter>
<name>validationQuery</name>
<value>this datasource is a connection to Microsoft Sql Server 2000</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://192.168.130.66:1433;DatabaseName=test</value>
</parameter>
<parameter>
<name>password</name>
<value>admin_2004</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000" port="8080" redirectPort="8443" disableUploadTimeout="true">
</Connector>
<Connector protocol="AJP/1.3" port="8009" redirectPort="8443" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler">
</Connector>
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" name="localhost">
<Logger className="org.apache.catalina.logger.FileLogger" suffix=".txt" prefix="localhost_log." timestamp="true"/>
</Host>
<Logger className="org.apache.catalina.logger.FileLogger" suffix=".txt" prefix="catalina_log." timestamp="true"/>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
</Service>
</Server>
<resource-ref>
<description>Connection</description>
<res-ref-name>jdbc/mssql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> 你的<res-ref-name>就是jdbc/mssql
另外,最好将lookup的参数写成这样:
lookup("java:comp/env/jdbc/mssql");还有,你的驱动没有问题吧?
看看这个文档吧,可能对你有帮助的。
<Connector acceptCount="100" connectionTimeout="20000" port="8080" redirectPort="8443" disableUploadTimeout="true">
</Connector>
<Connector protocol="AJP/1.3" port="8009" redirectPort="8443" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler">
</Connector>
<Engine defaultHost="localhost" name="Catalina">
这几句可能应该写到<GlobalNamingResources>的前面
谢谢你的帮忙
不过我照你的方法做了,这一次浏览器一直在连接,出不来结果!好像是连不上!现在真的搞不懂了!
郁闷!