首页 文章

在Openshift上设置GlassFish-Mysql连接池

提问于
浏览
0

我刚刚用DIY墨盒创建了一个新的应用程序,并添加了一个MySQL墨盒 . 我也能够在线部署应用程序 . 我不能将GlassFish管理控制台与OpenShift一起使用,但我需要设置JDBC资源和连接池 . 我正在尝试使用我的本地glassfish服务器编辑远程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)
`

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

1 回答

  • 1

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

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

    • 在应用程序页面中选择自己动手,DIY,墨盒
      enter image description here

    • 如下图所示填充 . 您应该选择您的应用名称和域名 .

    enter image description here


    组态

    • 创建应用程序后,在本地计算机上将其克隆为 rhc git-clone diyapp 并将glassfish4目录(整个目录,而不仅仅是其内容)移动到 diyapp / diy中 . 将启动和停止挂钩移动到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 推送将导致应用程序重新启动并执行新的启动挂钩 .


    部署应用

    • 要部署应用程序,只需将其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以查看所做的更改 . 对yourapp中的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 cartidge后会提供用户名和密码 .

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

    要找出该值,请将ssh导入应用程序并编写命令:

    `env | grep MYSQL`
    

    像往常一样:添加,提交和推送更改 .

    • 就是你完成了 .

    References

相关问题