posts - 189,comments - 115,trackbacks - 0
          jboss數據源配置問題

          在使用JBOSS數據源的時候出現,版本為jboss-4.0.4RC1,使用default配置,添加一個mysql的數據源

          1.將mysql包mysql-connector-java-5.0.0-beta-bin.jar拷到.\default\lib下

          2.環境變量設置了JAVA_HOME和JBOSS_HOME

          3.修改mysql-ds.xml到deploy目錄,內容為:

          <?xml version="1.0" encoding="UTF-8"?>
          <datasources>
          ? <local-tx-datasource>
          ??? <jndi-name>MySqlDS</jndi-name>
          ??? <connection-url>jdbc:mysql://127.0.0.1:3306/testdb</connection-url>
          ??? <driver-class>com.mysql.jdbc.Driver</driver-class>
          ??? <user-name>root</user-name>
          ??? <password>root</password>
          ??? <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>

          4.在JSP中進行測試:

          <%@ page contentType="text/html; charset=GBK" %>
          <%@ page import="javax.sql.DataSource" %>
          <%@ page import="javax.naming.*" %>
          <html>
          <head>
          <title>
          index
          </title>
          </head>
          <body bgcolor="#ffffff">
          <%
          ?? DataSource datasource = null;
          try
          ?? {
          ???? InitialContext initialContext = new InitialContext();
          ???? datasource = (DataSource) initialContext.lookup("java:/MySqlDS");
          ???? if (datasource == null) {
          ?????? out.print("null");
          ???? }else {
          ?????? java.sql.Connection con = datasource.getConnection();
          ?????? java.sql.ResultSet rs = con.createStatement().executeQuery("select * from MYTABLE");
          ?????? while (rs.next()) {
          ???????? out.print("<BR>---------");
          ?????? }
          ???? }
          }catch (Exception e) {
          ? out.print("" + e);
          ? e.printStackTrace();
          }
          %>

          5.訪問該JSP的時候總是出現:

          javax.naming.NameNotFoundException: MySqlDS not bound

          JNDI名換成了java:comp/env/jdbc/MySqlDS,java:comp/env/MySqlDS, jdbc/MySqlDS, MySqlDS 這些都不行,都是出現沒有綁定的錯誤.

          這個問題困擾了我兩天,到處搜索相關JBOSS下的數據源配置,找出一大把,結果一看全都是一樣的文章,只是在不同的網站出現而已,我不得不感慨:天下文章一大抄!! 還到各大論壇發貼子, 未果, 都不知道那些人到底有沒有真正的配置過這些東西, 不過在網上折騰了兩天還是找到一點點線索, 通過反復的窮舉試的測試, 終于解決了問題.(本來寫這個貼子是為了貼出來問大家的,不過在寫的過程中解決了問題,所以就一并寫下來, 以讓后來者不必寫這些彎路)

          在網上的貼子都是說配置*-ds.xml文件時, JBOSS使用的是本地JNDI, 也就是說在JBOSS容器里才能看到和使用這個JNDI, 按這種說法, 我在JSP里查找那個數據庫就沒有問題呀, 不明白!

          即然JBOSS提供了本地的JNDI, 那也可以設成和Weblogic一樣的那種JNDI, 不讓JBOSS加上那些莫名其妙的前綴了, 因此在mysql-ds.xml的加入<use-java-context>false</use-java-context><jndi-name>MySqlDS</jndi-name>下面, 這樣就可以直接通過MySqlDS做為JNDI名來查尋這個數據源了,JSP代碼就改為initialContext.lookup("MySqlDS");

          mysql-ds.xml文件既為:

          <?xml version="1.0" encoding="UTF-8"?>
          <datasources>
          ? <local-tx-datasource>
          ??? <jndi-name>MySqlDS</jndi-name>
          ??? <use-java-context>false</use-java-context>
          ??? <connection-url>jdbc:mysql://127.0.0.1:3306/testdb</connection-url>
          ??? <driver-class>com.mysql.jdbc.Driver</driver-class>
          ??? <user-name>root</user-name>
          ??? <password>root</password>
          ??? <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>

          還有就是通過現在的方式是可以查尋了, 不過我還不知道使用java:/前綴來查尋數據源的方式到底是什么原因導致錯誤........

          ...以上方式是配置Global JNDI, 最后我才發現自已犯了一個白癡錯誤: 我把..\default\lib下的jboss-*.jar文件拷貝到了我的WAR包的WEB-INF\lib中去了. 在運行過程中用的就是這個lib中的jar包了, 把這些包去掉去加上java:/前綴就可以正常查找本地JNDI了. 使用自已WAR包中的jboss-*.jar包可能會導致ClassLoader的變化, 不能找到相應的容器中的JNDI配置吧.糾纏我幾三天的麻煩擺平了,我心釋然~~~


          posted on 2006-04-14 10:03 MEYE 閱讀(975) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 垦利县| 佛坪县| 桐梓县| 平原县| 青神县| 湖州市| 城市| 武定县| 吴桥县| 宿松县| 兴义市| 湄潭县| 井研县| 青川县| 株洲县| 溆浦县| 荥经县| 曲麻莱县| 平阴县| 南雄市| 濮阳县| 垫江县| 修武县| 邯郸市| 苗栗市| 绿春县| 邳州市| 乐东| 珠海市| 宁武县| 林周县| 昌乐县| 墨江| 靖宇县| 云霄县| 天等县| 古浪县| 深泽县| 平果县| 武山县| 栾城县|