gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:19:49 25 4
gpt4 key购买 nike

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

在 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 目录中添加这个 resources.xml 作为 glassfish-resources.xml 但我不知道这是否有效。

你们建议我该怎么做?预先非常感谢!

最佳答案

由于您的应用程序指定

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

作为它的 JDBC 连接 URL,它期望连接到与您的应用程序位于同一台计算机(“localhost”)上的 Derby Network Server 实例。

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

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

关于mysql - 配置 glassfish 以部署 .war 并使用 jdbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com