mysql - 在 Openshift 上设置 GlassFish-Mysql 连接池

标签 mysql jdbc openshift connection-pooling

我刚刚使用 DIY 卡带创建了一个新应用程序,并向其中添加了 MySQL 卡带。我还能够在线部署该应用程序。 我无法将 GlassFish 管理控制台与 OpenShift 一起使用,但我需要设置 JDBC 资源、连接池。我正在尝试使用本地 glassfish 服务器的domains.xml 来编辑远程 glassfish 服务器的domains.xml。我仍然无法连接到数据库。这是我到目前为止所做的:

<jdbc-connection-pool is-isolation-level-guaranteed="false" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="SamplePool" res-type="javax.sql.DataSource">
      <property name="User" value="adminvcsHiYw"></property>
      <property name="DatabaseName" value="timetable"></property>
      <property name="serverName" value="127.8.28.2"></property>
      <property name="PortNumber" value="3306"></property>
      <property name="URL" value="jdbc:mysql://127.8.28.2:3306/timetable"></property>
      <property name="Password" value="_R-LrpYIcdUf"></property>
    </jdbc-connection-pool>

这是rhc tail -a appname的输出

 ==> app-root/logs/mysql.log <==
150621  7:55:43 InnoDB: highest supported file format is Barracuda.
150621  7:55:43  InnoDB: Waiting for the background threads to start
150621  7:55:44 InnoDB: 5.5.41 started; log sequence number 1686690
150621  7:55:44 [Note] Server hostname (bind-address): '127.8.28.2'; port: 3306
150621  7:55:44 [Note]   - '127.8.28.2' resolves to '127.8.28.2';
150621  7:55:44 [Note] Server socket created on IP: '127.8.28.2'.
150621  7:55:44 [Warning] 'proxies_priv' entry '@ root@ex-std-node534.prod.rhcloud.com' ignored in --skip-name-resolve mode.
150621  7:55:44 [Note] Event Scheduler: Loaded 0 events
150621  7:55:44 [Note] /opt/rh/mysql55/root/usr/libexec/mysqld: ready for connections.
Version: '5.5.41'  socket: '/var/lib/openshift/5585ff875004465b5500013a/mysql//socket/mysql.sock'  port: 3306  MySQL Community Server (GPL)
`

我做错了什么?有人可以帮忙吗?

最佳答案

因此,要使用 Openshift 托管在 glassfish 服务器上运行的 Java 应用程序,您必须:

  • 从 github 克隆 glassfish DIY你将会使用。 domain.xml 配置文件已修改为在 OpenShift 上运行。 它已经在domain1/lib 中包含了MySQL 驱动程序。该存档还包含我们需要的启动和停止钩子(Hook)。

  • 在应用程序页面中选择“DIY”墨盒 enter image description here

  • 如下图所示填写。尽管如此,您还是应该选择您的应用名称和域。

    enter image description here

  • 您将需要 OpenShift Client Tools

<小时/>

配置

  • 创建应用程序后,将其克隆到本地计算机上 rhc git-clone diyapp并将 glassfish4 目录(整个目录,而不仅仅是其内容)移至 diyapp/DIY。 将开始和停止 Hook 移至 yourapp/.openshift/action_hooks 并检查以确保它们可执行。 chmod +x start stop

. ├── glassfish4 │   ├── bin │   ├── glassfish │   ├── javadb │   ├── mq │   └── pkg ├── README.md ├── start └── stop

  • 现在,添加、提交所做的更改并将其推送回 OpenShift:

    cd diyapp git add . git status git commit -m "Added GlassFish" git push 推送将导致您的应用程序重新启动并执行新的启动 Hook 。

<小时/>

部署应用

  • 要部署应用程序,只需将其 war 复制到 domain1/autodeploy 中,然后再次运行前面的命令来添加、提交和推送更改。 GlassFish 将在启动后自动部署您的应用程序。如果您认为出现问题,请使用 ssh 登录您的应用程序并在 autodeploy 目录中查找 your.war_deployed 文件:

    rhc app ssh diyapp cd $OPENSHIFT_REPO_DIR/ cd diy/glassfish4/glassfish/domains/domain1/autodeploy/ ls

如果没有这样的文件,请查看服务器日志以找出问题所在:

cd ../logs/ cat server.log | tail -n100

<小时/>

设置 JDBC 资源、连接池

  • 将 MySQL 盒添加到您的应用中。

  • 您无法将 GlassFish 管理控制台与 OpenShift 结合使用。 glassfish-resources.xml 似乎也不受支持。

在本地 GlassFish 服务器上设置所需的资源。 查看该服务器的domain.xml 以了解进行了哪些更改。 对应用程序中的domain1/config/domain.xml 进行相同的更改。

这是我添加的

 `<jdbc-connection-pool is-isolation-level-guaranteed="false" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="SamplePool" res-type="javax.sql.DataSource">
  <property name="User" value="adminvcsHiYw"></property>
  <property name="DatabaseName" value="timetable"></property>
  <property name="serverName" value="127.8.28.2"></property>
  <property name="PortNumber" value="3306"></property>
  <property name="URL" value="jdbc:mysql://127.8.28.2:3306/timetable"></property>
  <property name="Password" value="_R-LrpYIcdUf"></property>
</jdbc-connection-pool>

` 因此数据库名称就是您要添加的 MySQL 盒的名称。端口名称为MYSQL的端口名称,用户名和密码在创建MYSQL卡时提供。

  • 现在在您的应用程序中,您放置 localhost 的任何位置都将其替换为
    的值 OPENSHIFT_MYSQL_DB_HOST=127.9.226.130

要找出该值,请通过 ssh 进入您的应用程序并编写命令:

 `env | grep MYSQL`

像往常一样:添加、提交并推送更改。

  • 就这样,你就完成了。

References

关于mysql - 在 Openshift 上设置 GlassFish-Mysql 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30964205/

相关文章:

mysql - Maria DB 查询以选择,然后更新表以删除不需要的 HTML 和脚本标签

mysql - 在 AWS MySQL 中存储 Emoji 字符

java - Maven ojdbc jar依赖报错: package oracle. jdbc不存在

java - 数据库插入

mysql - 跨数据库中的表替换列值

java - 如何修复 JDBC 中的 SQLNonTransientConnectionException

linux - openshift 超出磁盘配额

node.js - openshift 上的 NodeJS 应用程序被空请求淹没

cron - 在 Openshift 上的应用程序中运行 cron 作业的最佳实践?

php - mysql php评论系统: new database or looping through ids?