HOMERSSサイトマッププロフィールお問い合せ

「J2EEサーバー」 カテゴリー

1つ前のカテゴリーは、データベース です。 次のカテゴリーは、バックアップ です。

2009年5月19日

JDBCコネクターのおかげで深い溝にハマった

クライアントのサーバー立ち上げに際して、テスト環境を単純に横もちしたのだがDBへのインサート時にエラーが発生。
なんとも訳の分からん事態に右往左往する羽目になった。

    ・いかにもサーバーが怒っているようなエラー
    Caused by: java.sql.SQLException: !Statement.GeneratedKeysNotRequested!

この内容にたどり着きグぐってここの記事を探し出すまでに数時間、いつものように冷や汗をかかされた。

結局のところJDBCコネクターを古いものに入れ替えて一件落着。ヨカッタベ~

投稿者: 管理者 日時: 2009年5月19日 18:43 | | コメント (0) | トラックバック (0)

2009年4月25日

JBoss4.2から5.0に向けて

クライアントの新システム作成にあたって使い慣れたJBoss4からJBoss5の利用を検討した。

こんな難しいサーバーの中身はさっぱり分からなので、とにもかくにもサーバーサイドが吐き出すERRORが怖い。十分に確認を、、、ということで雨の一日テストに明け暮れた。

その経過を・・・

1) 先ず、jboss-5.0.1.GA-jdk6.zipを落としてきてWindowsで動作確認。単に起動しただけなのに無茶苦茶にエラーが。

2) マシンのjdkが1.5だった。jdk1.6 をセットして走るとエラーなし。

3) こりゃ楽チンと、DefaultDSをMySQL5.0に変更して走るとバオーっとエラーが。

4) まだ、jdk1.6ではいろいろあるのかな?とjdk1.5でも走るjboss-5.0.1.GAで試したが同じ。

5) JBoss5.0ではサーバー種類にstandardとwebが増えていた。j2EE対応がstandardなのかも知れないとこちらを試したが・・・同じ。

6) ビルドし直したらええのかな?と思ってJBossのソースからLinuxでビルド。走ってみるとまたもや同じ。

7) そこそろ降参かなと思いながらググッてみると横文字文化の住人がなにやらサーバーをallでいくとええ様なことを言っていた。・・・そう読んだ。

8) まさか・・・と思いながらも最後の挑戦。・・・いったいった!

9) 詳しくは分からないが・・・とにかくいった。すべてのモジュールが立ち上がっているallサーバーだったのでカバーできたのかも知れない。defaultサーバーでは手を加えないとアカンというのは困ったものだが、、、そのうちに直るかと納得。

(最小セットアップ)

1. conf/login-config.xml conf/standardjbosscmp-jdbc.xml を以前の記事のようにMySQLにむけて変更。

2. deploy/mysql-ds.xml を同じくセットの上、deploy/hsqldb-ds.xmlを削除。

3. docs/examples/jms/mysql-persistence-service.xmlをdeploy/messaging/にコピーし、そこにあるhsqldb-persistence-service.xmlを削除。

・・・でOK。

投稿者: 管理者 日時: 2009年4月25日 21:48 | | コメント (0) | トラックバック (0)

2007年12月 1日

JBoss4.2x上でのJSPコンパイルエラーへの対応

JDK1.5でJBoss4.2xを稼動させていたが、JSPにGenericsを使用したときコンパイルできないというエラーが出た。

エラー内容: Syntax error, parameterized types are only available if source level is 5.0

調べたところデフォルトではJDK1.4の使用を想定しているようで、JBossにJSPのコンパイルはJDK1.5を使うように設定する必要があるらしい。

設定ファイル: ${jboss.home}/server/default/deploy/jboss-web.deployer/conf/web.xml

に以下を追加。(250行目あたりの servletタグの中)

<init-param>
<param-name>compilerSourceVM</param-name>
<param-value>1.5</param-value>
</init-param>

こんなことで3時間ほどネットを探索させられた・・・くぅ~

投稿者: 管理者 日時: 2007年12月 1日 17:09 | | コメント (0) | トラックバック (0)

2006年12月29日

( Vine Linux 4.0 ) に向けて・・・JBoss の移行メモ

現時点での JBoss のバージョンは 4.0.5.GA になっている。

4.0.4.GA と同様にインストールしてみたが、起動スクリプトが少し変わっていたので変更箇所をメモっておく。

1). /usr/local/bin/jboss/bin/run.sh

    前と同じように先頭に記載
    JAVA_HOME=${JAVA_HOME:-"/usr/java/jdk1.5.0_10"}
    それぞれの環境に合わせること

2). /usr/local/bin/jboss/jboss_init_redhat.sh

    JBOSS_HOME=${JBOSS_HOME:-"/usr/local/bin/jboss"}
    JAVAPTH=${JAVAPTH:-"/usr/java/jdk1.5.0_10/bin"}

    JBOSS_CONF=${JBOSS_CONF:-"all"}

    JBOSS_HOST=${JBOSS_HOST:-"127.0.0.1"}

    JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"$JAVAPTH/java -classpath $JBOSSCP org.jboss.Shutdown --shutdown"}

    restart)
    $0 stop
    sleep 5 ← これを追加
    $0 start

    それぞれの環境に合わせること

3). JDBC コネクタが mysql-connector-java-3.1.13-bin.jar から mysql-connector-java-5.0.4-bin.jar にバージョンアップしていたが問題なし


(注)
起動スクリプトの JBOSS_HOME/bin/jboss_init_redhat.sh に自動起動設定を追加

    # chkconfig: 3 80 20
    # description: JBoss EJB Container
    前は書いてあったと思ったが・・・


・・・以上で OK!

投稿者: 管理者 日時: 2006年12月29日 15:32 | | コメント (0) | トラックバック (0)

2006年9月 7日

(復興作業)アプリケーション・サーバー ( JBoss ) のインストール

サーバーの崩壊から約2週間たって、やっと JBoss のインストールのところまできた。このあたりは試行錯誤の末、やっとこさ立ち上げたので記憶も定かでなく、記録もない状態の中でどうなることやら・・・

J2EEサーバーとして Apache Geronimo が立ち上がり始めているので、この際に切り替えようかとも考えたが、、、とりあえず、JBoss で急ぐことにした。

1). JBoss のダウンロード

    ここから JBoss の最新版をダウンロードする。もっとも最新版でいいかどうかは状況にもよるだろうが・・・
2). ダウンロードしたファイル(今回は jboss-4.0.4.GA.zip)を /usr/local/bin/ に展開して、同じ場所に jboss でリンクを作る。
    # cd /usr/local/bin/
    # unzip jboss-4.0.4.GA.zip
    # ln -s jboss-4.0.4.GA jboss
3). JBoss を起動
    a) JBoss ユーザーの作成

      JBoss 起動スクリプト(ここでは jboss_init_redhat.sh を使用)は jbossユーザーで起動するようになっているので、面倒だからユーザー jboss とグループ jboss を作る。

      # groupadd jboss
      # useradd jboss -d /usr/local/bin/jboss -g jboss
      # chown -R jboss.jboss /usr/loval/bin/jboss-4.0.4.GA


    b) 起動用スクリプトの修正

      1) jboss_init_redhat.sh は内部で起動用スクリプト run.sh を使用するのでこれを修正

        JAVA_HOME=${JAVA_HOME:-"/usr/java/j2sdk1.4.2_12"}

        ・・・と、環境変数 JAVA_HOME をセットする行を先頭あたりに挿入する。念の為に run.sh でJBoss が起動するか確認しておく。


      2) 次に jboss_init_redhat.sh を修正

        java のパスにかかわる2箇所と、restart の stop と start の間に 'sleep 5' を挿入する。

        JAVAPTH=${JAVAPTH:-"/usr/java/j2sdk1.4.2_12"}
        CMD_STOP="$JAVAPTH/java ・・・と $JAVAPTH を追加
        sleep 5 ・・・を $0 stop と $0 start の間に挿入

        ・・・これも jboss_init_redhat.sh start と stop を実行して確認(/usr/local/bin/jboss/server/all/log/)しておく。

4). 自動起動用スクリプトの登録
    # cp /usr/local/bin/jboss/bin/jboss_init_redhat.sh /etc/init.d/jboss
    # chkconfig --add jboss

    ・・・と、登録し、# chkconfig --list jboss で確認しておく


5). MySQL に接続
    a) 先ず、MySQL-JDBCドライバーをダウンロードする。

      インストール作業を急ぐために、真新しいバージョンではなく実績のあった 3.1 系のものを使う。今の最新バージョンは 3.1.13 で、ここからダウンロードした。当初、tar.gz ファイルをダウンロードしたのだが展開できなかったので zip ファイルを再ダウンロードした。よくあることなので気にはなる・・・

    b) ダウンロードした zip ファイルを展開して出てきた mysql-connector-java-3.1.13-bin.jar を /usr/local/bin/jboss/server/all/lib/ にセットする。所有者の変更を忘れないように・・・

    c) JBoss 各種の設定ファイルを MySQL 用に修正する( /usr/local/bin/jboss/server/all/ 配下)。

      1) conf/standardjaws.xml の defaultDS を MySQLに変更
      2) conf/standardjbosscmp-jdbc.xml の defaultDS を MySQLに変更
      3) conf/login-config.xml に このサイト認証用 login-module を追加
      4) データソース(JDBCConnectionPool)を作成
        docs/examples/jca/mysql-ds.xml を deploy/ にコピーして修正
      5) deploy/hsdldb-ds.xml を削除
      6) deploy/jms/hajndi-jms-ds.xml を削除
      7) deploy-hasingleton/jms/hsqldb-jdbc2-service.xml を削除
      8) deploy-hasingleton/jms/hsqldb-jdbc-state-service.xml をmysql-jdbc-state-service.xml に名前変更
        以前は削除していたのだがエラーが出るためにこのようにすると直った・・・理由はまったく不明のまま・・・
      9) docs/examples/jms/mysql-jdbc2-service.xml を deploy-hasingleton/jms/ にコ ピー
        mysql-jdbc2-service.xmlがデフォルトのデータソース名(DefaultDS)を参照するように変更する.
        <depends optional-attribute-name="ConnectionManager">
        jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
6). テスト用のデータベースを MySQL に作成
    a) テーブルの作成

      MySQL の初期設定では test というデータベースが作成されているので、ここにテスト用テーブルを作成する。

      $ mysql -u root -pxxxxxxxx
      mysql > use test

      CREATE TABLE HELLO_WORLD_TABLE (
      NO INTEGER NOT NULL,
      LANGUAGE VARCHAR(50),
      MESSAGE VARCHAR(100),
      PRIMARY KEY(NO)
      );

    b) テーブルにデータを追加

      INSERT INTO HELLO_WORLD_TABLE
      VALUES ( 1 , '日本語' , 'こんにちわ 世界');

      INSERT INTO HELLO_WORLD_TABLE
      VALUES ( 2 , '英語' , 'Hello World');

    c) 正常に追加されているか確認

      SELECT * FROM HELLO_WORLD_TABLE;

7). Webアプリケーションを JBoss にデプロイ
    ここから neverbird.zip をダウンロードして、展開して出てくる neverbird.war を deploy にコピー
8). ブラウザーでデプロイしたアプリケーションにアクセスして MySQL との接続を確認
    http://www.bit-consul.net:8080/neverbird/

    ・・・で、確認できるハズなのだが、我が家のルーターは 8080番ポートが塞がっており、外部からは確認できないので急遽 Apache との連携をセットアップすることにした。

9). コンソールの使用権限を設定 (jmx-console.war)
    JBoss の管理コンソールは初期設定では無防備になっているので、これにアクセス認証をセットする。

    a) deploy/jmx-console.war/WEB-INF/jboss-web.xml

      <security-domain>java:/jaas/xxxxxxxx</security-domain>
      (xxxxxxxx はconf/login-config.xml にセットした login-module名)

    b) deploy/jmx-console.war/WEB-INF/web.xml

      <security-constraint> 部のコメントを外し、<role-name> を変更
      <login-config> 部の <realm-name> を変更
      <security-role> 部の <role-name> を変更
10) 大量のログが出ないように conf/log4j.xml を修正
    <appender name="FILE" 要素に <param name="Threshold" value="INFO"/> を追加
    <appender name="console" 要素を <param name="Threshold" value="ERROR"/> に修正


以上で、JBoss の復旧が完了したと思われる。
が、、、かってのサーバーのかすかな記録には、バグ対応の為に deploy/iiop-service.xml を修正するような記述があるので、その箇所を残しておく。

    <mbean code="org.jboss.iiop.CorbaORBService" ・・・部に
    <attribute name="SunJDK14IsLocalBugFix">false</attribute> 追加とある

ログを調べてもエラーは出ていなかったので、上記はとりあえず反映させていない。・・・・

投稿者: 管理者 日時: 2006年9月 7日 20:25 | | コメント (0) | トラックバック (0)