skillup

技術ブログ

Java

CentOS上にglassfish構築+arquillianテスト

投稿日:

JavaEEの開発でアプリケーションサーバーとしてglassfishを使っています。

今回、CentOS(ver6.6)に立てる機会があったので、そのネタを共有したいと思います。

経緯

基本、いつもはローカルで開発して、Gitで共有リポジトリにプッシュしています。

共有リポジトリはCentOSですが、コミットと同時にJenkinsでビルドし、テストまで行っています。

しかし、DBのテストの場合、当然DBが見えないとテストが行えません。

glassfish上でJavaのプログラムを動かす場合、DBの情報もglassfishに格納されているのでglassfishを立てないとDBのテストができません。

そこで、CentOS上にglassfishを立てる必要性がでてきました。

DBのテストに関してはarquillianを使っているので同時にarquillianの設定もする必要があります。

※下記一部を除きすべてroot権限で行います。なお現状のversionは4.1です。

CetnOSをglassfish上にインストール

wget http://download.java.net/glassfish/4.1/release/glassfish-4.1.zip

解凍→移動
unzip glassfish-4.1.zip
mv glassfish4 /usr/local/

ポートなどはディフォルトで
8080 HTTP
8181 HTTPS
4848 Administration
です。

変更したい場合は下記ファイルの
vim /usr/local/glassfish4/glassfish/domains/domain1/config/domain.xml

<network-listener port=”8080″ protocol=”http-listener-1″ transport=”tcp” name=”http-listener-1″ thread-pool=”http-thread-pool”></network-listener>

この部分を修正するようにしましょう。

起動
/usr/local/glassfish4/glassfish/bin/asadmin start-domain

再起動
/usr/local/glassfish4/glassfish/bin/asadmin restart-domain

停止
/usr/local/glassfish4/glassfish/bin/asadmin stop-domain

が正常に行われていればひとまずOKです。

glassfishユーザー設定

glassfishユーザーを作成し、権限を変えます。

chown -R glassfish:glassfish ./glassfish4/
su – glassfish
/usr/local/glassfish4/glassfish/bin/asadmin start-domain
で無事に起動することを確認

serviceコマンドでの実行(centOS7以降はいらないかも)

起動コマンドをいちいち見に行くのが大変なのでserviceコマンドから実行できるようにします。

cd /etc/init.d/

vim glassfish

保存後、実行権限を付与
chmod +x glassfish

service glassfish (start|restart|stop)で起動すればOkです。

※下記エラーが表示される場合

glassfish を起動中: /usr/local/glassfish4/bin/asadmin: line 52: exec: java: not found

Javaが見えていないらしいのでjavaの実行パスを直で記述
which java
/usr/local/src/jdk1.8.0_25/bin/java
なので
vim /usr/local/glassfish4/bin/asadmin
JAVAの部分を2か所コメントアウトしパスを修正

#JAVA=java
JAVA=”/usr/local/src/jdk1.8.0_25/bin/java”

#JAVA=${AS_JAVA}/bin/java
JAVA=”/usr/local/src/jdk1.8.0_25/bin/java”

管理画面からログイン

この状態だとまだ管理画面からログインできるようにはなっていません。

管理画面からユーザー:パスワードを入力してログインするには下記の設定が必要です。

パスワード設定
/usr/local/glassfish4/glassfish/bin/asadmin change-admin-password
下記画面がでてきます。
Enter admin user name [default: admin]> ←空で入力(なぜかユーザーを入れると入らない。)
Enter the admin password> ←defaultのパスワードを入力最初は空なので何もせずに入力
Enter the new admin password>  ←新パスワードを入力
Enter the new admin password again>  ←新パスワードを入力

一度再起動(ストップ後→再スタート)
service  glassfish restart

下記は管理画面に入るための設定

/usr/local/glassfish4/glassfish/bin/asadmin login
Enter admin user name [Enter to accept default]> admin
Enter admin password> ←パスワードを入力

メッセージ
Login information relevant to admin user name [admin] for host [localhost] and admin port [4848] stored at [/root/.gfclient/pass] successfully.
Make sure that this file remains protected. Information stored in this file will be used by administration commands to manage associated domain.
Command login executed successfully.

/usr/local/glassfish4/glassfish/bin/asadmin enable-secure-admin

service  glassfish restart

この状態でhttp://ドメイン:4848/にアクセスすると管理画面が開く。(信頼されない証明書うんぬんがでるが無視してアクセス)

ユーザー:パスワードを入力すればOK

glassfishからDBへの接続

基本的に、glassfishでDB接続(以前書いたエントリー)

のままでOK。

注意点としてはMySQLのドライバーが必要

ここよりmysql-connector-java-5.1.23.jarをダウンロード
http://dev.mysql.com/downloads/connector/j/

/usr/local/glassfish4/glassfish/lib/mysql-connector-java-5.1.23.jarに配置し、

管理画面からconfiguration→defaultconfig→JVMsetting→PathSettingの
NativeLibraryPathSuffixにmysqlのフルパスを入力(キャプチャ画像参考)

SnapCrab_JVM Path Settings - Google Chrome_2015-6-11_16-36-24_No-00

Jenkinsからの起動確認

sercure-admin状態のままだと、

com.sun.jersey.api.container.ContainerException:  [status: REDIRECTION reason: Found]

というエラーがでてしまい、テストが通らない。そこで下記のように設定

/usr/local/glassfish4/glassfish/bin/asadmin disable-secure-admin

service glassfish restart

(※ただし、こうすると管理画面からアクセスできなくなるので注意。)

arqullianの設定ファイルを下記のように設定(パスは/src/test/resources/arquillian.xml)

jenkinsからビルドするか、pom.xmlのあるディレクトリでmvn testで無事実行されればOK。

http://typea.info/blg/glob/2014/03/java-ee-7-centos-glassfish.html
http://treewoods.net/kugelblitz/?p=330
http://upstart.jp/blog/?p=309
https://developer.jboss.org/thread/234069

-Java
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Map,KeySetでのSteam

日常で一番よく使うMapループ系処理について Map KeySetのStreamでの書き方 Map<String,String>でEntrySetではなく、KeySetで展開したいときなど …

no image

入出力操作

Javaの出力処理について書きます。 下記リンクが非常に詳しかったので、これをもとにまとめてみたんですが、咀嚼できてないっぽい・・・・ もう1~2度修正がひつようかも。 http://www.arti …

no image

JSFのプルダウンに関して(イベントをトリガーにする&非ajax)

いろいろと社内アプリを作っていたせいでかなりプルダウンは慣れたとおもったのですが、未知の部分がさらにあったのでまとめます。 Contents1 初期値に値がないとき2 プルダウン変更時に遷移 初期値に …

no image

Javaでのメール送信プログラム

Javaでメール送信のプログラムがあったんで、メモ。 SMTPの認証とかはせず一番簡単なパターンです。 ケースでいうとサーバーA、サーバーBがあり下記のようなケースです。 A メールサーバー(smtp …

no image

動的な置換

前回、置換に関する記事をまとめましたが動的な置換について勉強する機会があったのでまとめておきます。一般に置換表現というのはほとんどが静的なものかと思います。 例えば <intpu type=&# …