配置glassfish以部署.war并使用jdbc

时间:2014-04-27 15:08:46

标签: mysql jdbc glassfish derby war

这是我在这个论坛上的第一个问题,所以我希望你理解我的问题!

在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的另一台计算机上部署它。 我成功部署了它,但当我访问应用程序时,它会询问我的用户名和密码,我写了两个,按登录,它似乎没有连接任何数据库。 我搜索了一下,然后我不得不改变我连接到数据库的方式,因为我正在从Glassad的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>

无论如何它还没有用,我想我应该将这个resources.xml添加到WEB-INF目录中作为glassfish-resources.xml,但我不知道这是否也可以。

你们有什么建议我应该做什么? 非常感谢提前!

1 个答案:

答案 0 :(得分:0)

由于您的应用程序指定了

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

作为其JDBC连接URL,它希望连接到同一台机器上的Derby Network Server实例(&#34; localhost&#34;)作为您的应用程序。

因此,在部署应用程序时,您还需要部署Derby Network Server。

或者,如果您的目的是在多台计算机上部署应用程序,然后让它们全部连接到Derby Network Server的同一实例,那么您需要指定该单个共享实例的主机名或IP地址代替&#34; localhost&#34; (并确保您的网络允许进行这些连接。)