关于在eclipse建立tomcat工程后,配置数据源问题

shizan 2005-03-20 12:21:16
eclipse建立tomcat工程后,在tomcat管理界面建立数据源
NDI Name: jdbc/northwind //-->连接池名字
Data Source URL: jdbc:microsoft:sqlserver://192.168.1.38:1433;databasename=Northwind
//意思是连接到 sqlserver2000 的 northwind 数据库 databasename不分大小写,
//注意符号1433端口好后面是分号。
JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver//驱动需下载。
User Name: //数据库用户名 。
Password: //数据库密码 。
Max. Active Connections: //最大活动连结数 ,0为不限 。
Max. Idle Connections: //最大等待连结数 ,0为不限 。
Max. Wait for Connection: //建立连接超时时间ms,-1为无限 。

commit changes。
连接方法:
javax.naming.Context ctx=new javax.naming.InitialContext();
javax.sql.DataSource ds= (javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/northwind"); //红色字为连接池名,其他固定。
java.sql.Connection con=ds.getConnection();

运行后,提示javax.servlet.ServletException: Name jdbc is not bound in this Context

怀疑是web.xml 没配置。
用eclipse建立的tomcat工程中,没有生成对应的web.xml

如果自己建立的web应用程序,这个web.xml应该都包含那些内容?怎么配置。
...全文
381 点赞 收藏 11
写回复
11 条回复
internetibm 2005年03月21日
用apache.org上的这个包:commons-dbcp-1.2.1.jar
同时配置struts-config.xml
<data-sources>
<data-source key="A" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="password" value="123456" />
<set-property property="username" value="platform" />
<set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<set-property property="url" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=strutsbase" />

</data-source>


我也配了好久哟,最后还是自己搞定的.dbcp中的属性和eclipse中生成的属性不一致
user 应该改写username
driverclass --driverclassname....
回复 点赞
mfkplus 2005年03月21日
你所建的数据源是由Tomcat容器管理的,要想web应用能够使用,必须在该应用的web.xml文件里添加<resource-ref>元素来申明对这个JNDI资源的引用。
如果不修改web.xml,你也可以在Tomcat管理工具里单独为这个web应用添加数据源,就是展开Service下Host那个节点,可以看到Tomcat里所有应用的Context,在你需要使用数据源的Context的Resource里添加数据源就可以了
回复 点赞
owenchwz 2005年03月21日
这里用了jotm,也可以用其它的包。
回复 点赞
owenchwz 2005年03月21日
在java代码中可以调用:

try {
InitialContext initCtx = new InitialContext();
DataSource o =
(DataSource) initCtx.lookup("java:comp/env/jdbc/myDB");
log.debug("dataSource: " + o);
} catch (Exception e) {
System.out.println("dataSource error=" + e.getMessage());
}
回复 点赞
owenchwz 2005年03月21日
先在server.xml配置数据源,然后在web.xml配置资源,例程如下:
server.xml:
<Context path="/deoa" docBase="F:/oaplatform/jsp" debug="0"
reloadable="false" crossContext="true">
<!-- <Resource name="jdbc/myDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myDB">
<parameter>
<name>factory</name>
<value>org.objectweb.jndi.DataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/deoa?user=root&password=root_pwd&useUnicode=true&characterEncoding=gb2312</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>root_pwd</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams> -->
<Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"/>
<ResourceParams name="UserTransaction">
<parameter>
<name>factory</name>
<value>org.objectweb.jotm.UserTransactionFactory</value>
</parameter>
<parameter>
<name>jotm.timeout</name>
<value>60</value>
</parameter>
</ResourceParams>
</Context>

web.xml:

<resource-ref>
<description>Datasource Connecton</description>
<res-ref-name>jdbc/myDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
回复 点赞
shizan 2005年03月21日
顶!!!!
回复 点赞
shizan 2005年03月21日
谁能说详细点?请帮忙。
本人是java的初学者,请关照!谢谢
回复 点赞
shizan 2005年03月21日
javax.servlet.ServletException: Exception retrieving attribute 'driverClassName'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
admin.resources.listDataSources_jsp._jspService(listDataSources_jsp.java:429)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


root cause

javax.servlet.jsp.JspException: Exception retrieving attribute 'driverClassName'
org.apache.webapp.admin.AttributeTag.doEndTag(AttributeTag.java:215)
admin.resources.listDataSources_jsp._jspx_meth_controls_attribute_1(listDataSources_jsp.java:741)
admin.resources.listDataSources_jsp._jspService(listDataSources_jsp.java:389)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
按照楼上的方式,出现这些错误信息,什么原因
回复 点赞
shizan 2005年03月21日
javax.servlet.ServletException: Cannot create PoolableConnectionFactory, cause: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
org.apache.jsp.test_jsp._jspService(test_jsp.java:56)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
为什么会这样!
回复 点赞
shan1119 2005年03月21日
学习
回复 点赞
xiangqianchong 2005年03月20日
学习
回复 点赞
发动态
发帖子
Eclipse
创建于2007-09-28

3.1w+

社区成员

4.9w+

社区内容

Java Eclipse
社区公告
暂无公告