メインコンテンツに移動

ユーザーアカウントメニュー

  • ログイン
ホーム
くさのまの部屋

メインナビゲーション

  • ホーム

パンくず

  1. ホーム

resinインストールからMYSQLアクセスまで

By 匿名 (未認証ユーザー) on 2025/03/10(月) - 21:05

JAVA初心者による記録です。
幾度かresinを利用したMYSQLにアクセスるjavaプログラムを作成したが、パソコンの内臓ディスク障害により情報が紛失した。
思い出しながら、resinインストールから動作確認、JDBC設定、MYSQLへのアクセスまでの一連の作業を記載する。

resinをインストールする

ソースファイルをダウンロードする

以下のURLからresin-4.0.67バージョンを取得する。
Caucho Resin Download

 

アーカイブを展開する

# tar xvfz resin-4.0.67.tar.gz resin-4.0.67/automake/ resin-4.0.67/compat/ resin-4.0.67/conf/ resin-4.0.67/conf/sample/ resin-4.0.67/contrib/ : resin-4.0.67/win32/resinssl.dll resin-4.0.67/win64/isapi_srun.dll resin-4.0.67/win64/resin_os.dll resin-4.0.67/win64/resinssl.dll

 

configureを実行する

以下のエラーになったらjavaの開発パッケージ(devel)がインストールされていないのでインストールしてください。

# cd resin-4.0.67 # ./configure --prefix=/usr/local/resin --enable-64bit --enable-ssl checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu : checking if /usr/bin/cp accepts -u... yes configure: error: *** Can't find JNI directory in JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/bin *** JNI is expected in /usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/bin/include/linux #

 

インストールされているjavaパッケージを確認する

やはりjava-17-openjdk-develがインストールされていない。

# rpm -aq | grep ^java javapackages-filesystem-6.0.0-7.el9_5.noarch javapackages-tools-6.0.0-7.el9_5.noarch java-17-openjdk-headless-17.0.14.0.7-2.el9.x86_64 java-17-openjdk-17.0.14.0.7-2.el9.x86_64 java-kolabformat-1.2.0-12.el9.x86_64 #

 

java-17-openjdk-develをインストールする

resinのコンパイルにjavaのincludeファイルの情報などが必要なためか開発パッケージ(devel)をインストールする。

# yum -y install java-17-openjdk-devel メタデータの期限切れの最終確認: 2:45:43 前の 2025年03月08日 06時45分18秒 に実施しました。 依存関係が解決しました。 ====================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ====================================================================================================== インストール: java-17-openjdk-devel x86_64 1:17.0.14.0.7-2.el9 devel 4.7 M トランザクションの概要 ====================================================================================================== インストール 1 パッケージ ダウンロードサイズの合計: 4.7 M インストール後のサイズ: 8.9 M パッケージのダウンロード: java-17-openjdk-devel-17.0.14.0.7-2.el9.x86_64.rpm 6.2 MB/s | 4.7 MB 00:00 ------------------------------------------------------------------------------------------------------ 合計 3.3 MB/s | 4.7 MB 00:01 トランザクションを確認しています トランザクションの確認に成功しました。 トランザクションをテストしています トランザクションのテストに成功しました。 トランザクションを実行しています 準備中 : 1/1 インストール中 : java-17-openjdk-devel-1:17.0.14.0.7-2.el9.x86_64 1/1 scriptletの実行中: java-17-openjdk-devel-1:17.0.14.0.7-2.el9.x86_64 1/1 検証中 : java-17-openjdk-devel-1:17.0.14.0.7-2.el9.x86_64 1/1 インストール済み: java-17-openjdk-devel-1:17.0.14.0.7-2.el9.x86_64 完了しました! #

 

configureを実行する

今回nginxのバックエンドでresinが動作するため(nginxからは平文でresinと送受信する)、sslを有効化は不要であるが定義してみる。

# ./configure --prefix=/usr/local/resin --enable-64bit --enable-ssl checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking target system type... x86_64-pc-linux-gnu : config.status: creating bin/resinctl config.status: executing depfiles commands config.status: executing libtool commands Resin Configuration Summary: RESIN : 4.0.67 home : /usr/local/resin root : /usr/local/resin conf : /usr/local/resin/conf log : /usr/local/resin/log plugins : common resin_os init : /etc/rc.d JAVA_HOME : /usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64 JNI : 64-bit include : -I/usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/include -I/usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/include/linux CFLAGS : cflags_shlib : -fpic ld_shlib : gcc ldflags_shlib : -shared -fPIC -m64 libs_shlib : epoll() for keepalives #

 

makeする

# make make[1]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src' に入ります for dir in common resin_os ; do (cd $dir; make); done make[2]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src/common' に入ります gcc -c -I/usr/include -g -O2 -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DB64 -pthread -fPIC -fno-omit-frame-pointer -O2 -DHAS_SOCK_TIMEOUT -DHAS_SENDFILE -DHAS_SPLICE -DPOLL -DHAS_JVMTI -fpic stream.c : gcc -shared -fPIC -m64 -o libresin_os.so boot.o java.o jni_os.o jni_jvmti.o jni_socket.o memory.o std.o -lpthread -lrt -lc make[2]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src/resin_os' から出ます make[1]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src' から出ます #

 

インストールする

# make install make[1]: ディレクトリ '/usr/local/src/resin/resin-4.0.67' に入ります make[1]: 'install-exec-am' に対して行うべき事はありません. make[1]: 'install-data-am' に対して行うべき事はありません. make[1]: ディレクトリ '/usr/local/src/resin/resin-4.0.67' から出ます Installing Resin root /usr/local/resin. Installing Resin root subdir /usr/local/resin/project-jars. updated /usr/local/resin/project-jars Installing Resin root subdir /usr/local/resin/webapps.      : Installing Resin conf file /usr/local/resin/conf/health.xml. Installing Resin init.d script /etc/rc.d. make[1]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src' に入ります Installing configured Resin plugins common resin_os make[2]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src/common' に入ります Installing plugin common make[2]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src/common' から出ます make[2]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src/resin_os' に入ります Installing plugin resin_os cp libresin_os.so /usr/local/resin/libexec64 make[2]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src/resin_os' から出ます make[1]: ディレクトリ '/usr/local/src/resin/resin-4.0.67/modules/c/src' から出ます #

 

javaの環境変数を設定する

JAVA_HOME変数やRESIN_HOME変数を設定する。

# vi /etc/profile /etc/profile_org # # vi /etc/profile # # diff /etc/profile_org /etc/profile 8a79,83 > > export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64 > export PATH=$PATH:$JAVA_HOME/bin > export CLASSPATH=.:$JAVA_HOME/lib > export RESIN_HOME=/usr/local/resin # # source /etc/profile #

 

resinを起動する

rootユーザでインストールすると、resinの起動と停止を行うシェルが以下にインストールされる。
  /etc/rc.d/resin
resinを起動する。

# chmod 755 /etc/rc.d/resin # # /etc/rc.d/resin start Starting resin: . # # ps -fea | grep java root 237142 1 25 21:33 pts/0 00:00:02 /usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/bin/java -Dresin.watchdog=app-0 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl -Djava.awt.headless=true -Djava.awt.headlesslib=true -Dresin.home=/usr/local/resin/ -Dresin.root=/usr/local/resin -Xrs -server com.caucho.boot.WatchdogManager -root-directory /usr/local/resin -conf /usr/local/resin/conf/resin.xml -log-directory /usr/local/resin/log start-all --log-directory /usr/local/resin/log root 237208 237142 69 21:33 pts/0 00:00:06 /usr/lib/jvm/java-17-openjdk-17.0.14.0.7-2.el9.x86_64/bin/java -Dresin.server=app-0 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djava.system.class.loader=com.caucho.loader.SystemClassLoader -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl -Djava.awt.headless=true -Djava.awt.headlesslib=true -Dresin.home=/usr/local/resin/ -server com.caucho.server.resin.Resin --root-directory /usr/local/resin -conf /usr/local/resin/conf/resin.xml -server app-0 -socketwait 33483 -root-directory /usr/local/resin -log-directory /usr/local/resin/log start-all --log-directory /usr/local/resin/log root 237302 222069 0 21:34 pts/0 00:00:00 grep --color=auto java #

javaプロセスが起動されている。

resinの動作を確認する

ポート番号8080にアクセスして、resinのデフォルト・ホーム・ページが表示される事を確認する。
     http://<IPアドレス>:8080/
※ポート番号を変更する場合は、conf/resin.propertiesファイルのポート番号を変更する必要がある。

画像を削除しました。

nginx経由でresinにアクセス

javaプログラムをnginx経由でresinにアクセスして実行させる。

nginxにproxyを設定する。

location ~ ^/api/.*$
  ・/api/にアクセスされたら、/api/を削除してresinに転送して処理させる。
location /resin-admin/
  ・resin summary(resin管理画面)を表示させるため、resinに転送して処理させる。
  ・インターネットからアクセスできるため、認証処理を定義する。
       ※インターネットからアクセスすると他の画面に遷移できない。proxyの設定が間違っていると思うが、インターネットからアクセスすることは無いと思われるためそのままとする。
location /resin-doc/
  ・resinのドキュメントを表示するため、resinに転送して処理させる。

# cd /etc/nginx/default.d/ # # vi resin_proxy.conf # # cat resin_proxy.conf location ~ ^/api/.*$ { # JAVAアプリ領域 rewrite /api/(.*)$ /$1 break; proxy_pass    http://127.0.0.1:8080; } location /resin-admin/ { # resin-admin proxy_pass http://127.0.0.1:8080$uri; include /etc/nginx/resin_proxy_param.conf; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } location /resin-doc/ { # resin-doc proxy_pass http://127.0.0.1:8080$uri; include /etc/nginx/resin_proxy_param.conf; } # # nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # # systemctl restart nginx #

 

proxyの動作を確認する

nginxのproxy設定によりresinにアクセスしてresin-docを表示する。
  http://<nginxアクセスのIPアドレス>/resin-doc/

画像を削除しました。

 

javaプログラムでhello world表示

javaソースファイルを記述して、「hello world!」をブラウザに表示させる。

javaプログラムを実行環境のweb.xmlファイルを作成する。

web.xmlファイルを作成する。
/helloにアクセスされたら、/test/HelloServletクラスを実行する定義を記述する。
・<servlet-class>に実行するJAVAのクラスファイルの「test.HelloServlet」を記述する。
・<url-pattern>にJAVAクラスファイルを実行するアクセス先のURLを記述する。

# cd /usr/local/resin/webapps/ROOT/WEB-INF # # vi web.xml # # cat web.xml <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd"> <servlet> <servlet-name>hello</servlet-name> <servlet-class>test.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> #

 

javaソースを作成する

resinのドキュメントのソースファイルを記載する。
「Hello, world!」を表示するjavaプログラムソースを作成する。
package名test内にHelloServletクラスが有る記述のため以下のパスにソースファイルを作成する。
/usr/local/resin/webapps/ROOT/class/test/HelloServlet.java

# cd /usr/local/resin/webapps/ROOT/class # # mkdir test # # cd test # # vi HelloServlet.java # # cat HelloServlet.java package test; import java.io.*; import javax.servlet.http.*; import javax.servlet.*; public class HelloServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.println("Hello, world!"); out.close(); } } #

 

resinを再起動する

ビルドされた実行ファイルを実行可能な環境に配置し、実行できるようにする(デプロイ)ためresinを再起動する。
※約2分待てば、自動的にデプロイが実行されるが、すぐに確認したいためresinを再起動してデプロイを実行させる。

# /etc/rc.d/resin stop Stopping resin: . # # /etc/rc.d/resin start Starting resin: . #

 

javaアプリにアクセスる

nginx経由でresinのjavaアプリにアクセスする。
   http://<nginxアクセスのIPアドレス>/api/hello

画像を削除しました。

MYSQLにJAVAからアクセス

javaプログラムでMYSQLデータベースにアクセスしてテーブルの内容を表示する。

データベースのデータを確認する

# mysql -u test000 -p -h localhost test Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1996 Server version: 10.5.27-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [test]> MariaDB [test]> MariaDB [test]> select * from usertable; +--------+--------+--------+---------------+---------------+-------------+-------+-------+-------+ | number | sei | mei | phone | mailaddress | password | yobi1 | yobi2 | yobi3 | +--------+--------+--------+---------------+---------------+-------------+-------+-------+-------+ | 1 | せい | 太郎 | phone | mail1@address | mypassword | | | | +--------+--------+--------+---------------+---------------+-------------+-------+-------+-------+ | 2 | せい | 次郎 | 090-9999-9999 | mail2@address | mypassword2 | | | | +--------+--------+--------+---------------+---------------+-------------+-------+-------+-------+ 2 rows in set (0.000 sec) MariaDB [test]> exit Bye #

 

MYSQLドライバを入手する

以下のurlからMYSQLのドライバ(mysql-connector-j-9.2.0-1.el9.noarch.rpm)を入手する。
  https://dev.mysql.com/downloads/connector/j/

MYSQLドライバをインストールする

アプリケーションからデータベースをアクセスための、ミドルウェアをインストールする。

# rpm -ivh ./mysql-connector-j-9.2.0-1.el9.noarch.rpm # # rpm -ql mysql-connector-j-9.2.0-1.el9.noarch /usr/share/doc/mysql-connector-j /usr/share/doc/mysql-connector-j/CHANGES /usr/share/doc/mysql-connector-j/INFO_BIN /usr/share/doc/mysql-connector-j/INFO_SRC /usr/share/doc/mysql-connector-j/LICENSE /usr/share/doc/mysql-connector-j/README /usr/share/java/mysql-connector-j.jar /usr/share/java/mysql-connector-java.jar #

 

MYSQLドライバをresinが利用できる様に設定する

mysqlドライバがresinのlibディレクトリに無いため、認識できる様にリンクを設定する。

# cd /usr/local/resin/webapps/ROOT/WEB-INF # # mkdir lib # # cd lib # # ln -s /usr/share/java/mysql-connector-j.jar mysql-connector-j.jar # ls -l 合計 0 lrwxrwxrwx 1 root root 37 3月 9 18:57 mysql-connector-j.jar -> /usr/share/java/mysql-connector-j.jar #

 

resin-web.xmlについて

javaソースにデータベース情報を記載するためresin-xmlファイルは作成しない。

 

javaプログラムを実行環境のweb.xmlファイルを作成する

/databaseselectにアクセスされたら、/DatabaseSelectクラスを実行する定義を記述する。

# cp web.xml web.xml_org # # vi web.xml # # diff -c web.xml_org web.xml *** web.xml_org 2025-03-11 19:57:54.430389269 +0900 --- web.xml 2025-03-09 18:49:22.915337431 +0900 *************** *** 5,13 **** --- 5,21 ---- <servlet-name>hello</servlet-name> <servlet-class>test.HelloServlet</servlet-class> </servlet> + <servlet> + <servlet-name>databaseselect</servlet-name> + <servlet-class>DatabaseSelect</servlet-class> + </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>databaseselect</servlet-name> + <url-pattern>/databaseselect</url-pattern> + </servlet-mapping> </web-app> #

 

MYSQLにアクセスするソースを作成する

MYSQLデータベースにアクセスするjavaプログラムソースを作成する。
package化していないため、以下のパスにソースファイルを作成する。
/usr/local/resin/webapps/ROOT/class/DatabaseSelect.java

# cd /usr/local/resin/webapps/ROOT/WEB-INF/classes # # vi DatabaseSelect.java # # cat DatabaseSelect.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class DatabaseSelect extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>データベーステスト</title>"); out.println("</head>"); out.println("<body>"); Connection conn = null; String url = "jdbc:mysql://localhost:3306/test"; String user = "test000"; String password = "mypassword"; try { Class.forName("com.mysql.cj.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); String sql = "select * from usertable"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int number = rs.getInt("number"); String sei = rs.getString("sei"); String mei = rs.getString("mei"); String mailaddress = rs.getString("mailaddress"); out.println("<p>"); out.println("番号:" + number + ", 姓:" + sei + ", 名:" + mei + ", メールアドレス:" + mailaddress); out.println("</p>"); } rs.close(); stmt.close(); }catch (ClassNotFoundException e){ out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try{ if (conn != null){ conn.close(); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println("</body>"); out.println("</html>"); } } #

 

resinを再起動する

ビルドされた実行ファイルを実行可能な環境に配置し、実行できるようにする(デプロイ)ためresinを再起動する。

# /etc/rc.d/resin stop Stopping resin: . # # /etc/rc.d/resin start Starting resin: . #

 

javaアプリにアクセスる

nginx経由でresinのjavaアプリにアクセスする。
   http://<nginxアクセスのIPアドレス>/api/databaseselect

画像を削除しました。

xmlファイルを利用してMYSQLにアクセスする

resin-web.xmlファイルにデータベース情報を記述して、アクセスする。

resin-web.xmlを作成する。

resin-web.xmlに、<database>や<driver>などを定義する。

# cd /usr/local/resin/webapps/ROOT/WEB-INF # # vi resin-web.xml # cat resin-web.xml <web-app xmlns="http://caucho.com/ns/resin"> <database> <jndi-name>jdbc/mysql</jndi-name>] <driver> <type>com.mysql.cj.jdbc.Driver</type> <url>jdbc:mysql://localhost:3306/test</url> <user>test000</user> <password>mypassword</password> <init-param useUnicode="true"/> </driver> </database> </web-app> #

 

MYSQLにアクセスするソースを作成する

InitialContextを使用して、jdbc/mysqlというJNDI名でデータソースを取得します。

# cd /usr/local/resin/webapps/ROOT/WEB-INF/classes # # vi DatabaseSelect2.java # # cat DatabaseSelect2.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource; import javax.naming.Context; import javax.naming.InitialContext; public class DatabaseSelect2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>データベーステスト</title>"); out.println("</head>"); out.println("<body>"); Connection conn = null; PreparedStatement statement = null; try { // JNDIを使用してデータソースを取得 Context initContext = new InitialContext(); DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/mysql"); conn = ds.getConnection(); Statement stmt = conn.createStatement(); String sql = "select * from usertable"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int number = rs.getInt("number"); String sei = rs.getString("sei"); String mei = rs.getString("mei"); String mailaddress = rs.getString("mailaddress"); out.println("<p>"); out.println("番号:" + number + ", 姓:" + sei + ", 名:" + mei + ", メールアドレス:" + mailaddress); out.println("</p>"); } rs.close(); stmt.close(); // }catch (ClassNotFoundException e){ // out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try{ if (conn != null){ conn.close(); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println("</body>"); out.println("</html>"); } } #

 

差分を比較する

 

# diff -c DatabaseSelect.java DatabaseSelect2.java *** DatabaseSelect.java 2025-03-31 19:49:27.262361522 +0900 --- DatabaseSelect2.java 2025-04-01 20:20:02.624951684 +0900 *************** *** 2,9 **** import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; - public class DatabaseSelect extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ --- 2,18 ---- import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; + import java.sql.Connection; + import java.sql.DriverManager; + import java.sql.PreparedStatement; + import java.sql.ResultSet; + import java.sql.SQLException; + import javax.sql.DataSource; + import javax.naming.Context; + import javax.naming.InitialContext; + + public class DatabaseSelect2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ *************** *** 16,29 **** out.println("</head>"); out.println("<body>"); ! Connection conn = null; ! String url = "jdbc:mysql://localhost:3306/test"; ! String user = "test"; ! String password = "ESZesz7()0"; try { ! Class.forName("com.mysql.cj.jdbc.Driver").newInstance(); ! conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); --- 25,39 ---- out.println("</head>"); out.println("<body>"); ! Connection conn = null; ! PreparedStatement statement = null; try { ! // JNDIを使用してデータソースを取得 ! Context initContext = new InitialContext(); ! DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/mysql"); ! ! conn = ds.getConnection(); Statement stmt = conn.createStatement(); *************** *** 42,49 **** rs.close(); stmt.close(); ! }catch (ClassNotFoundException e){ ! out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ --- 52,59 ---- rs.close(); stmt.close(); ! // }catch (ClassNotFoundException e){ ! // out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ #

 

 

web.xmlファイルを修正する

web.xmlファイルを修正して、URLとclassファイルを関連付けます。

# cd /usr/local/resin/webapps/ROOT/WEB-INF # # cp web.xml web.xml_org # # vi web.xml # # diff -c web.xml_org web.xml *** web.xml_org 2025-03-31 19:35:05.370930642 +0900 --- web.xml 2025-03-25 22:13:35.450540155 +0900 *************** *** 9,14 **** --- 9,18 ---- <servlet-name>databaseselect</servlet-name> <servlet-class>DatabaseSelect</servlet-class> </servlet> + <servlet> + <servlet-name>databaseselect2</servlet-name> + <servlet-class>DatabaseSelect2</servlet-class> + </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> *************** *** 18,21 **** --- 22,29 ---- <servlet-name>databaseselect</servlet-name> <url-pattern>/databaseselect</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>databaseselect2</servlet-name> + <url-pattern>/databaseselect2</url-pattern> + </servlet-mapping> </web-app> #

 

javaアプリにアクセスる

nginx経由でresinのjavaアプリにアクセスする。
   http://<nginxアクセスのIPアドレス>/api/databaseselect2

結果は、javaソースにデータベースの情報を記述した時と同様です。

 

データベースにアクセスするパスワードの暗号化

安全のためにパスワードを暗号化しようと思ったが、暗号化はResin Proでないとダメ見たいです。

# /usr/local/resin/bin/resinctl password-encrypt "mypassword" password-encrypt requires Resin Pro java.lang.ClassNotFoundException: com.caucho.admin.PasswordImpl #

 

まとめ

意外と簡単にMYSQLデータベースにアクセスするjavaプログラムが作成できた。インターネットのおかげである。
再度、パソコンの内臓ディスクが壊れた場合を考えての記録ですが、皆さんの参考になれば幸いです。

タグ
database
hello world
java
JAVA_HOME
java-17-openjdk
MYSQL
mysql-connector-j.jar
proxy_pass
resin
RESIN_HOME
resin-web.xml
  • コメントを投稿するにはログインまたは登録をしてください

Legal

  • コンタクト
Clear keys input element