<< 2008/09/25 | Home | 2008/09/27 >>

JBoss EAP 4.3 のデフォルトデータソースを Oracle に切り替える

JBoss EAP はデフォルトで内蔵の HSQLDB を使います。
これを Oracle に切り替えました。
またまた備忘録を残しておきます。

1. hsqldb 用の設定ファイルを削除
$CONFIG/deploy/hsqldb-ds.xml
$CONFIG/deploy/jboss-messaging/hsqldb-persistence-service.xml

2. Oracle 用の設定ファイルをコピー
cp $JBOSS_HOME/docs/examples/jca/oracle-ds.xml $CONFIG/deploy/
cp $JBOSS_HOME/docs/examples/jms/oracle-persistence-service.xml $CONFIG/deploy/jboss-messaging/

3. データソースの接続設定
$CONFIG/deploy/oracle-ds.xml の JDBCURL やユーザID、パスワード等を設定。

4. クラスタリングの設定を無効に(default 設定がベースの場合)
$CONFIG/deploy/jboss-messaging/oracle-persistence-service.xml の 132 行目を修正。

- <attribute name="Clustered">true</attribute>
+ <attribute name="Clustered">false</attribute>


5. ドライバをコピー
$CONFIG/deploy/lib 以下に ojdbc5.jar をコピー

6. JBoss を起動

以上。

トラブルシューティング:
- ClassNotFoundException
お馴染みの例外。
原因: JDBCドライバが見つからない
対策: JDBCドライバを $CONFIG/lib ディレクトリに配置
Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: oracle.jdbc.driver.OracleDriver
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:514)
at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:408)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getDriver(LocalManagedConnectionFactory.java:272)
... 127 more



- NoClassDefFoundError: org/jgroups/Channel
原因: クラスタ化していないコンフィグレーションで JBoss Messaging のクラスタ化が有効になっている。
default コンフィグレーションをベースにしてぼんやりしていると発生する。
対策: oracle-persistence-service.xml の 132 行目を修正してクラスタ化を無効に設定する。
/docs/examples/jms/oracle-persistence-service.xml はデフォルトで有効になっていました。
19:44:32,143 ERROR [ExceptionUtil] org.jboss.messaging.core.jmx.MessagingPostOfficeService@bef3ab startService
java.lang.NoClassDefFoundError: org/jgroups/Channel
at org.jboss.messaging.core.jmx.MessagingPostOfficeService.startService(MessagingPostOfficeService.java:425)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:196)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


タグ :

tns listener が起動しない

久しぶりに触ると細かいところでちょこちょこ迷います。
Parallels Desktop を再起動したところ、1521 番でリスンしてくれていませんでした。
サービスコントロールパネルで tns listener を見ると起動していません。
手動で起動させても失敗・・・。

チェックした場所:
イベントログ - 何もなし
ORA_HOME/db_1/NETWORK/log/listener.log - バインドできない旨のエラー発見

pid=3644で起動しました
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
リスニング・エラーです: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*.*.*.*)(PORT=1521)))
TNS-12545: 接続に失敗しました。ターゲット・ホストまたはオブジェクトが存在しません。
TNS-12560: TNS: プロトコル・アダプタ・エラー
TNS-00515: 接続に失敗しました。ターゲット・ホストまたはオブジェクトが存在しません。
32-bit Windows Error: 49: Unknown error
リスニングしていません: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))


原因:
ホストのIPアドレスが変わっており、バインドできなかった。

対策:
ORA_HOME/db_1/NETWORK/ADMIN/listener.ora の IP アドレスを書き換える。
HOST=0.0.0.0 とすれば全ての NIC にバインドしてくれるので IP アドレスが変更になっても正常に起動できる。


タグ :

scott さんはデフォルトでロックされてる

久しぶりに Oracle を触ってみました。バージョンは10gです。
デフォルトで change_on_install 固定はマズイだろうと思っていましたが、最近はテスト用のアカウントまできっちりしているんですね。
デフォルトで設定されている ID/パスワード が問題になったのか、scott さんはロックされていました。
しかもパスワードが最初から期限切れになっているというおまけ付き。

アカウントをアンロック、scott/tiger でログイン、パスワードを変更するまでの様子をメモしておきます。

SQL> conn scott/tiger
ERROR:
ORA-28000: the account is locked
警告: Oracleにはもう接続されていません。

SQL> conn system / *******
接続されました。
SQL> alter user scott account unlock ;

ユーザーが変更されました。

SQL> conn scott/tiger;
ERROR:
ORA-28001: the password has expired


scottに対するパスワードを変更しています。
新規パスワード: *****
新規パスワードを再入力してください: *****
パスワードが変更されました。
接続されました。
SQL> select * from emp;


タグ :

WebLogic Type 4 Driver for Oracle が非推奨に

WebLogic Server 10gR3 より Type 4 driver for Oracle が非推奨になったようです。"非推奨" とは、Oracle|BEA は今後新機能の追加などを行わないことを意味します。セキュリティ脆弱性などが見つかった場合は修正されますが、利用者は Oracle Thin Driver など他の JDBC へ移行することが推奨されます。
The Oracle Driver (Deprecated)
Using WebLogic Type 4 JDBC Drivers

WebLogic Type 4 driver は"もう一つの" JDBC ドライバで、WLS8.1 の時から提供されてきました。中身はデータディレクト社の OEM 製品です。
このドライバはパフォーマンスに重点が置いてあり、多くの場合 Oracle の純正 Thin Driver よりも良いパフォーマンスを発揮します。しかし、残念なことに長い間この製品は不安定さを抱えてきました。個人的にもより実績のある Thin Driver への移行を強くお勧めします。
Type 4 ドライバのリタイア後にもなんらかの理由で Type4 ドライバを継続して利用したい場合は、データディレクト社から別途お購入することも一応可能です。

タグ :