我有一个基于EJB的应用程序,它连接到MySQL数据库,并为更新操作提供web。它可以很好的部署到当地是自由。
下面是数据源的server.xml配置。
<library id="MySQLDriverLib">
<file name="${User-defined_JDBC_DRIVER_PATH}/mysql-connector-java-5.1.38-bin.jar"/>
</library>
<dataSource id="DefaultDataSource" type="javax.sql.ConnectionPoolDataSource" transactional="true">
<jdbcDriver libraryRef="MySQLDriverLib"/>
<properties URL="jdbc:mysql://localhost:3306/ic16_lab2434" connectionUrl="jdbc:mysql://localhost:3306/ic16_lab2434" driver="com.mysql.jdbc.Driver" driverClass="com.mysql.jdbc.Driver" metadata="mySQL" password="object00" user="root" userName="root" />
</dataSource>
<variable name="User-defined_JDBC_DRIVER_PATH" value="C:\Software\mysql-connector-java-5.1.38"/>如您所见,它使用JDBC驱动程序jar的库,它是用文件路径指定的。显然,如果我试着把耳朵部署到布卢米克斯·自由,这是行不通的。这就是为什么我要部署整个服务器目录来进行最少数量的更改。然而,即使在这种情况下,我也不知道如何为数据源正确配置JDBC驱动程序库,因此服务器也会选择它。请帮帮忙。
发布于 2016-02-08 21:49:49
如果您想连接到mysql数据库,并希望手动在server.xml中提供凭据,可以执行以下操作:
server.xml:
<dataSource jndiName="jdbc/TradeDataSource">
<jdbcDriver id="mysqlDriver" libraryRef="mysql-connector" />
<properties
URL="jdbc:mysql://1.2.3.4:3306/db"
password="mypassword" user="admin" />
</dataSource>
<library description="MySQL JDBC Driver" id="mysql-connector"
name="MySQL Connector">
<fileset dir="${server.config.dir}" id="mysql-connector-jar"
includes="mysql-connector-java-*.jar" />
</library>在本例中,我会将mysql jar文件放在服务器配置目录wlp/usr/servers/defaultServer/mysql-connector-java-5.1.34-bin.jar中。
现在可以直接从cf push dir中提取defaultServer。
但是,自由构建包可以自动为从server.xml目录绑定的数据库生成server.xml数据源配置。例如,如果我创建一个SQLDB或ClearDB服务并将其绑定到自由应用程序,并将其命名为"TradeDataSource",构建包将生成配置,并自动将正确的驱动程序jar添加到类路径。
cf文件yourappname app/wlp/usr/server/defaultServer/server.xml
<dataSource id='mysql-TradeDataSource' jdbcDriverRef='mysql-driver' jndiName='jdbc/TradeDataSource' transactional='true' type='javax.sql.ConnectionPoolDataSource'>
<properties id='mysql-TradeDataSource-props' databaseName='${cloud.services.TradeDataSource.connection.name}' user='${cloud.services.TradeDataSource.connection.user}' password='${cloud.services.TradeDataSource.connection.password}' portNumber='${cloud.services.TradeDataSource.connection.port}' serverName='${cloud.services.TradeDataSource.connection.host}'/>
<connectionManager id='mysql-TradeDataSource-conMgr' maxPoolSize='10'/>
</dataSource>
<jdbcDriver id='mysql-driver' javax.sql.XADataSource='org.mariadb.jdbc.MySQLDataSource' javax.sql.ConnectionPoolDataSource='org.mariadb.jdbc.MySQLDataSource' libraryRef='mysql-library'/>现在我可以使用它的jndi名称查找数据源:jdbc/TradeDataSource
https://stackoverflow.com/questions/35279752
复制相似问题