2014-04-27 107 views
0

這是我在這個論壇上的第一個問題,所以我希望你能理解我的問題!配置glassfish部署.war並使用jdbc

在Glassfish中部署應用程序時出現問題。

我一直在開發一個web應用程序,我必須訪問兩個不同的數據庫,一個derby數據庫和一個mysql數據庫。 從NetBeans IDE 7.4開發時,沒有任何問題,我使用SessionBean來訪問這兩個數據庫,並且配置連接太容易了。 我寫在構造函數

Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
    connectionSoria=DriverManager.getConnection("jdbc:derby://localhost:1527/WEBAPP-Soria","App","App"); 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    connectionTeruel=DriverManager.getConnection("jdbc:mysql://localhost:3306/webapp_teruel","root","root"); 

和一切工作。

問題出在我建立的時候。戰爭,我試圖在沒有NetBeans的情況下將其部署到另一臺計算機上。 我成功部署它,但是當我訪問應用程序時,它向我詢問用戶名和密碼,我將它們都寫入,按登錄,似乎沒有連接任何數據庫。 我搜索了一下,結果我不得不改變連接數據庫的方式,因爲我正在從Glassfish的bin目錄中的asadmin部署應用程序。

我在bean的構造函數連接到數據庫已經寫是這樣的:

ctx1 = new InitialContext(); 
      ds1 = (DataSource)ctx1.lookup("jdbc/WEBAPP-Soria"); 
      ds2 = (DataSource)ctx1.lookup("jdbc/WEBAPP_Teruel"); 

      connectionSoria=ds1.getConnection(); 
      connectionTeruel=ds2.getConnection(); 

,我添加了兩個資源,glasssfish與

C:\glassfishv3\asadmin 
asadmin> start-domain 
asadmin> deploy E:\AppV2.war 
asadmin> add-resources E:\resources.xml 
asadmin> restart-domain 

的內容resources.xml是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd"> 
<resources> 
<jdbc-resource enabled="true" jndi-name="jdbc/WEBAPP-Soria" object-type="user" pool-name="WEBAPP-Soria"> 
<description/> 
</jdbc-resource> 
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.apache.derby.jdbc.ClientDriver" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="WEBAPP-Soria" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false"> 
<property name="port" value="1527"/> 
<property name="databaseName" value="WEBAPP-Soria"/> 
<property name="serverName" value="localhost"/> 
<property name="url" value="jdbc:derby://localhost:1527/WEBAPP-Soria"/> 
<property name="user" value="App"/> 
<property name="password" value="App"/> 
</jdbc-connection-pool> 
<jdbc-resource enabled="true" jndi-name="jdbc/WEBAPP_Teruel" object-type="user" pool-name="WEBAPP_Teruel"> 
<description/> 
</jdbc-resource> 
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.Driver" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="WEBAPP_Teruel" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false"> 
<property name="port" value="3306"/> 
<property name="databaseName" value="WEBAPP_Teruel"/> 
<property name="serverName" value="localhost"/> 
<property name="url" value="jdbc:mysql://localhost:3306/WEBAPP_Teruel"/> 
<property name="user" value="root"/> 
<property name="password" value="root"/> 
</jdbc-connection-pool> 
</resources> 

反正它不工作,我想我應該加這個水庫目錄WEB-INF中的ources.xml作爲glassfish-resources.xml,但我不知道這是否也可以。

你們建議我應該怎麼做? 非常感謝!

回答

0

由於您的應用程序指定

jdbc:derby://localhost:1527/WEBAPP-Soria 

爲JDBC連接URL,它是希望連接到Derby Network Server的實例在同一臺機器上(「localhost」的)爲您的應用程序。

因此,當您部署應用程序時,您還需要部署Derby網絡服務器。或者,如果您的目的是在多臺計算機上部署應用程序,然後讓它們全部連接到Derby Network Server的同一實例,則需要指定該單一共享實例的主機名或IP地址放置「本地主機」(並確保您的網絡允許建立這些連接)。