簡體   English   中英

使用Java / Hibernate的MS SQL Server數據庫連接

[英]MS SQL Server Database Connection with Java/Hibernate

如前所述這里 ,我繼承工作一個不完整的web應用程序沒有任何的源代碼。 我目前在理解xml配置文件以及它們如何將我的項目與數據庫連接時遇到問題。

這是我的hibernate.cfg.xml文件:

<session-factory>
            <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>

    <!-- run JUnit from local database (...then comment out hibernate.connection.datasource...) -->
    <!--<property name="hibernate.connection.url">jdbc:sqlserver://sqlserver:1433;databaseName=plant_management;</property> 
    <!--<property name="hibernate.connection.password">****</property> 
    <!--<property name="hibernate.connection.username">sa</property> -->

    <!-- comment out to run JUnit tests [DRB] --> <!-- activate on commit [DRB] -->
    <property name="hibernate.connection.datasource">java:comp/env/jdbc/iphex</property>

    <property name="hibernate.default_schema">IPHEX</property>

    <!-- CORE TABLES -->        
    <mapping resource="com/core/model/data/mappings/Person.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/Application.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/RoleLkup.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/PreferenceLkup.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/OrganizationLkup.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/GroupTypeLkup.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/CommunicationLkup.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/GroupLkup.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppUser.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppGroupAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppPreferenceAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppRoleAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppUserGroupAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppUserPreferAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/AppUserRoleAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/PersonOrgAssn.hbm.xml"/>
    <mapping resource="com/core/model/data/mappings/PersonCommunAssn.hbm.xml"/>

    <!-- IPHEX TABLES -->       
    <mapping resource="com/urenco/iphex/model/data/mappings/Building.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/OnlineMassSpectrometer.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/ScheduleEvent.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/Line.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/Station.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/StationStatusLkup.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/StationLkup.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/Assay.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/AssayStatus.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/AssayAssn.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/Calculation.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/Reason.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/Cylinder.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/StationCylinderStatus.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/SystemParameter.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/SystemEvent.hbm.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/SystemEventTypeLkup.hbm.xml"/>

    <!-- NAMED QUERIES -->
    <mapping resource="com/urenco/iphex/model/data/mappings/custom/IphexNamedQueries.xml"/>
    <mapping resource="com/urenco/iphex/model/data/mappings/custom/IphexAbstractNamedQueries.xml"/>

</session-factory>

我不熟悉Hibernate,但是我正在學習。 我在這里不明白的是為什么數據庫連接信息被注釋掉了。 我可以使用該文件中的信息通過Netbeans IDE連接到數據庫服務器。

按原樣運行應用程序時,出現NameNotFoundException。 當我在刪除連接注釋的情況下運行應用程序時,出現JDBCConnectionException。

此外, context.xml文件包含信息,但都已注釋掉。 我不明白

有人可以解釋如何建立連接,以便我解決問題嗎? 我已經搜索了幾個小時,但是在解決此問題時遇到了問題。 先謝謝您的幫助。

編輯10/25/14 1406 MST這是我的堆棧跟蹤:

`

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host sqlserver, port 1433 has failed. Error: "connect timed out. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
    at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
    at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:114)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
    at com.core.service.HibernateService$HibernateInstanceData.getSessionFactory(HibernateService.java:342)
    at com.core.service.HibernateService$HibernateInstanceData.getSession(HibernateService.java:365)
    at com.core.service.HibernateService.getSession(HibernateService.java:399)
    at com.core.service.HibernateService$AbstractQuery.getSession(HibernateService.java:92)
    at com.core.service.HibernateService$AbstractHQLQuery.getQuery(HibernateService.java:108)
    at com.core.service.HibernateService$AbstractHQLQuery.getList(HibernateService.java:123)
    at com.urenco.iphex.service.IphexAbstractService.getLineCache(IphexAbstractService.java:152)
    at com.urenco.iphex.view.controllers.LineNavigationController.getLineHelpers(LineNavigationController.java:37)
    at com.urenco.iphex.view.controllers.LineNavigationController.getLineHelpersList(LineNavigationController.java:44)

還有幾行,但我認為這是我們需要的。 順便使用Apache Tomcat。

如前所述,我能夠從Netbeans IDE連接到數據庫,因此我知道就SQL Server而言沒有任何問題。

我尚不完全了解您的應用程序的環境,因此我將盡力回答。

在配置文件中,您有兩個選擇:1)使用JDBC(已注釋掉的第一組參數,似乎應該用於單元測試)直接連接到某些數據庫。 在這種情況下,您的應用程序將使用您在config中提供的JDBC URL,驅動程序和憑據來獲得與數據庫的連接。

2)使用一些可通過JNDI獲得的數據源資源連接數據庫(似乎是通常的運行時)。 通常,這意味着您在某個應用程序服務器(Glassfish,JBoss AS或類似的服務器)中運行應用程序,並且該應用程序服務器通過JNDI提供數據源。 這意味着您不用在休眠的connfig中編寫JDBC參數,而是使用一些JNDI名稱(java:comp / env / jdbc / iphex)配置應用程序服務器數據源資源,然后在hibernate config中指定唯一的名稱。

按原樣運行應用程序時,出現NameNotFoundException。 當我在刪除連接注釋的情況下運行應用程序時,出現JDBCConnectionException。

NameNotFoundException表示您沒有這樣的資源-java:comp / env / jdbc / iphex。 您的應用程序是否應該在應用程序服務器下啟動? 如果是-哪個?

請查看這些異常堆棧跟蹤也很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM