我有一个基于EJB的应用程序,它连接到MySQL数据库并提供用于更新操作的Web UI . 部署到本地WAS Liberty时,它可以正常工作 .
这是数据源的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的库,该驱动程序jar使用path to file指定 . 显然,如果我尝试将EAR部署到Bluemix Liberty,这将无效 . 这就是我部署整个服务器目录以进行最少数量更改的原因 . 即使在这种情况下,我也不知道如何为数据源正确配置JDBC驱动程序库,以便服务器选择它 . 请帮忙 .
1 回答
如果要连接到mysql数据库并希望 manually 在server.xml中提供凭据,则可以执行以下操作:
server.xml中:
在这个例子中,我将mysql jar文件放在服务器配置目录
wlp/usr/servers/defaultServer/mysql-connector-java-5.1.34-bin.jar
您现在可以直接从defaultServer目录
cf push
但是,自由buildpack可以 automatically 为从Bluemix目录绑定的数据库生成server.xml数据源配置 . 例如,如果我创建SQLDB或ClearDB服务并将其绑定到Liberty应用程序并将其命名为"TradeDataSource",则buildpack将生成配置并自动将正确的驱动程序jar添加到类路径中 .
cf files yourappname app / wlp / usr / servers / defaultServer / server.xml
我现在可以使用其jndi名称查找数据源:
jdbc/TradeDataSource