刚下了最新的jboss-4.0.2 和 mysql-4.1 配置访问数据库不成功,高手快来看看

realdreamer 2005-09-03 08:08:38
======================================================================================
我在 JBOSS_HOME/server/default 下创建一个mysql数据源配置文件 mysql-ds.xml ,内容如下:
======================================================================================

<datasources>
<local-tx-datasource>
<jndi-name>mysqldb</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/jbosstest</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>5</idle-timeout-minutes>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>
======================================================================
default 下创建了 test.war 文件夹,文件夹下创建一个jsp文件,内容如下:
======================================================================

<%@page language="java" %>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*" %>

<%

Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mysqlds");
Connection con = ds.getConnection();
con.close();
%>

==================================================
在IE里打开网页执行时,总是报错,错误信息如下:
==================================================

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: jdbc not bound
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:117)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)


root cause

javax.naming.NameNotFoundException: jdbc not bound
org.jnp.server.NamingServer.getBinding(NamingServer.java:491)
org.jnp.server.NamingServer.getBinding(NamingServer.java:499)
org.jnp.server.NamingServer.getObject(NamingServer.java:505)
org.jnp.server.NamingServer.lookup(NamingServer.java:249)
org.jnp.server.NamingServer.lookup(NamingServer.java:252)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:701)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
javax.naming.InitialContext.lookup(InitialContext.java:351)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:103)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.9



现在可以确认的是, mysql-ds.xml 已被JBOSS正确识别,因为我动态的删除,加载这个文件,JBOSS在CONSOLE都有信息提示,加载这个文件时,JBOSS提示如下信息:

20:07:08,019 INFO [WrapperDataSourceService] Bound connection factory for resou
rce adapter for ConnectionManager 'jboss.jca:service=DataSourceBinding,name=mysq
ldb to JNDI name 'java:mysqldb'

但为什么JSP文件里的代码会错呢? 提示找不到 jdbc??
难道还有其他需要配置的吗?大家都来说说~~~~~
...全文
322 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
realdreamer 2005-09-04
  • 打赏
  • 举报
回复
后记:
java:comp/env/jdbc/mysqlds 这样的写法是JBOSS resource environment reference 的配置.在WEB-INF下的web.xml, jboss-web.xml 里配置相应的 resource-ref 就能通过那样的方式访问数据源.

最终配置如下:

<!-- web.xml -->
<web-app>
<resource-ref>
<res-ref-name>jdbc/mysqlds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/mysqlds</jndi-name>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>



<!-- jboss-web.xml -->
<jboss-web>
<resource-ref>
<description>mySql datasource</description>
<res-ref-name>jdbc/mysqlds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/mysqlds</jndi-name>
<res-auth>Container</res-auth>
</resource-ref>
</jboss-web>


<!-- mysql-ds.xml -->

<datasources>
<local-tx-datasource>
<jndi-name>mysqlds</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/jbosstest</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>5</idle-timeout-minutes>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
realdreamer 2005-09-03
  • 打赏
  • 举报
回复
结贴了,问题解决. 在代码里引用JNDI的名字写错了. java:comp/env/jdbc/mysqlds 这么写应该是正确的,但在我的JBOSS配置里应该这么写; java:/mysqlds

另外 mysqlds 也写错了 ^_^ 应该是 mysqldb
\
结贴!!
realdreamer 2005-09-03
  • 打赏
  • 举报
回复
回 sunyanbing(流星) :
不好意思,我没说清楚,mysql 的 jdbc驱动程序也已经放到 default/lib 目录下了. 如果没有jdbc驱动程序,jboss 分析 mysql-ds.xml 是会报未找到 com.mysql.jdbc.Driver 类的错误.
sunyanbing 2005-09-03
  • 打赏
  • 举报
回复
还得要将mysql 的jdbc驱动放进去

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧