在 Openshift 上设置 GlassFish-Mysql 连接池
Setting GlassFish-Mysql Connection Pool on Openshift
我刚刚使用 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)
`
我做错了什么?有人可以帮忙吗?
因此,要使用 Openshift 在 glassfish 服务器上托管 java 应用 运行ning,您必须:
从 github 克隆您将要使用的 glassfish DIY。
domain.xml 配置文件已在 OpenShift 上修改为 运行。
它已经在 domain1/lib 中包含 MySQL 驱动程序。存档还包含我们需要的启动和停止挂钩。
申请页面select自己动手DIY墨盒
如下图填写。尽管如此,您还是应该选择您的应用名称和域。
配置
- 创建应用程序后,将其克隆到您的本地机器上说
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 登录到您的应用程序并在自动部署目录中查找 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`
像往常一样:添加、提交并推送更改。
- 大功告成。
我刚刚使用 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)
`
我做错了什么?有人可以帮忙吗?
因此,要使用 Openshift 在 glassfish 服务器上托管 java 应用 运行ning,您必须:
从 github 克隆您将要使用的 glassfish DIY。 domain.xml 配置文件已在 OpenShift 上修改为 运行。 它已经在 domain1/lib 中包含 MySQL 驱动程序。存档还包含我们需要的启动和停止挂钩。
申请页面select自己动手DIY墨盒
如下图填写。尽管如此,您还是应该选择您的应用名称和域。
配置
- 创建应用程序后,将其克隆到您的本地机器上说
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 登录到您的应用程序并在自动部署目录中查找 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`
像往常一样:添加、提交并推送更改。
- 大功告成。