Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup(dsName);是系统通过JNDI查找EJB接口的语句,这是EJB的问题,你问问题问错地方了,我帮你转过去
ds = (DataSource)ctx.lookup(dsName);是系统通过JNDI查找EJB接口的语句,这是EJB的问题,你问问题问错地方了,我帮你转过去
解决方案 »
- 如何实现网站图片自动变换和点击更换的效果??十分着急~~~
- struts 1.3自定义标签制作交流共享
- rs.getString("time");只能用一次为什么?
- 请求大虾们,WEB项目中如何结束对数据库上的操作?
- jbpm页面抛错el相关java.lang.ClassCastException: de.odysseus.el.ExpressionFactoryImpl c
- 怎么做出这个效果来?
- IText 的表格问题
- 请问怎样从服务器上下在一个excel文件,并打开,求类似的代码!或者帮助
- 如何建立jsp的运行环境?
- 两个问题,帮忙,并借此机会感谢长期以来帮助我的师兄弟,师姐妹
- 如何打印出jsp中request里设置的有哪些参数
- 让html的对象不显示成对象,而是以字符显示出来,恐怕是说得不明白,高手进来看看!!!!
ds = (DataSource)ctx.lookup(dsName);
dsName即该JNDI的名字,需要在配置文件里将数据库连接写明。
当找到该名字时,数据库连接才能得到。
{
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup(dsName);
}
catch(Exception e)
{
throw new Exception(" ds== null can't get db connection , result : ".concat(String.valueOf(String.valueOf(e.getMessage()))));
}这一行出现问题ds = (DataSource)ctx.lookup(dsName);
数据库连接持没有配置好
我用的是oracle 9而且在c:/boot.properties中文件中写入了:
system.datasource.name = system
system.database.username = system
system.database.password = 123456还需要怎么样配置呢?请高手们指点!
假如你的应用程序放在webapps目录下,名叫myapp,连接的数据库名叫mydb:
<Context path="/myapp" docBase="..\webapps\myapp"
debug="0" privileged="true" reloadable="true">
<Resource name="MyResource"
auth="Container"
type="javax.sql.DataSource"/> <ResourceParams name="MyResource"> <parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter> <parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter> <parameter>
<name>removeAbandonedTimeout</name>
<value>600</value>
</parameter> <parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>8</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>1000</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter> <parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/mydb?autoReconnect=true&useUnicode=true&characterEncoding=iso-8859-1</value>
</parameter>
</ResourceParams>
</Context>
配置好上述文件以后,你可以这样调用:
//...
DbConnect dbcon = DbConnect.getInstance();
Connection con = dbcon.getConnection("java:comp/env/MyResource");
//....你上面的例子使用了单例模式,不过很遗憾,写法不妥当。单例模式的宗旨是在同一个JVM中只创建一个instance,但是你的例子可以创建多个,没有考虑到多用户并发请求的问题。
你可以简单的把public static DbConnect getInstance()改成public synchronized static DbConnect getInstance()
<Server>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
<Resource name="jdbc/oracle" type="javax.sql.DataSource"/>
<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/oracle">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>elangjlz</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.0.2:1521:orcl</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>system</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8081" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
</Connector>
<Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
</Connector>
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" name="localhost">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
</Host>
<Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
</Service>
</Server>