你把java:MSSQLDS改成java:comp/env/jdbc/+数据源   看看

解决方案 »

  1.   

    谢谢楼上的,不过还是不行.是不是没有人用jboss啊????
      

  2.   

    可能你没有正确配置mssql-ds.xml
      

  3.   


    <datasources>
      <local-tx-datasource>
        <jndi-name>MSSQLDS</jndi-name>
        <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_eti</connection-url>
        <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
        <user-name>ETIsa</user-name>
        <password>9</password>
            <!-- sql to call when connection is created
            <new-connection-sql>some arbitrary sql</new-connection-sql>
            -->        <!-- sql to call on an existing pooled connection when it is obtained from pool 
            <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
            -->      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
          <metadata>
             <type-mapping>MS SQLSERVER2000</type-mapping>
          </metadata>
      </local-tx-datasource></datasources>我照着它的DEMO弄的。
      

  4.   

    有没有高人实现过jboss下面的hibernate中的jndi连接啊????
      

  5.   

    你可以写个测试的jsp页面看看你所配置的datasource是否正确。把如下代码存为一个jsp,并运行它看看。(相关名称应该改为你自己的实际配置)
    <!-- -------------------------------------- -->
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="javax.sql.*"%>
    try{
    InitialContext ctx=new InitialContext();
    DataSource ds=(DataSource)ctx.lookup("java:/MSSQLDS");
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    String strSql = " select * from YourTable";
    ResultSet rs = stmt.executeQuery(strSql);
    } catch (Exception e) {
      e.printStackTrace();
    }
    <!-- -------------------------------------- -->另外在hibernate.cfg.xml里
    把<session-factory>改为<session-factory name="随便加个名称">试试