- PR -

Weblogic+Oracle10G データソースに接続時にエラーが出てしまいます。

1
投稿者投稿内容
bk
会議室デビュー日: 2005/11/18
投稿数: 11
投稿日時: 2005-11-29 11:35
お世話になります。
現在、Weblogicサーバに置いてあるWebアプリケーションから
データソースにてOracleサーバーに接続しようと試みているのですが、
接続プールのエラーが出ており困っています。


実行環境
OS:WhiteBoxLinux
DBサーバ:Oracle10G
アプリケーションサーバ:BEA WebLogic Server 8.1 
(BEA WebLogic Server 8.1は管理サーバ(172.16.2.43:7001)と
管理対象サーバ(172.16.2.43:7070)が1つずつあり、
管理対象サーバにWebアプリケーションをデプロイしています)

WindowsXP+Tomcat5.0.28+Oracle10Gで動作確認したものを
上記の環境に載せ変えたところ、下記に記す現象が起こってしまいます。


過去に同じエラーが出た方がいらっしゃったので、以下のURLを参考に次のように
設定しました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15149&forum=12&start=0


config.xml
--------------------------------------------------------------------------------
<JDBCConnectionPool DriverName="oracle.jdbc.OracleDriver"
Name="ncsecsite Connection Pool"
PasswordEncrypted="{3DES}iNP31UauTNc="
Properties="user=ncs;server=172.16.2.45" Targets="ncscluster"
TestTableName="SQL SELECT 1 FROM DUAL" URL="jdbc:oracle:thin:@172.16.2.45:1521:ecbook"/>
<JDBCTxDataSource JNDIName="OracleSource"
Name="ncsecsite Data Source"
PoolName="ncsecsite Connection Pool" Targets="ncscluster"/>
<Application Name="ncsecsite" Path="/var/opt/bea/project/ncs"
StagedTargets="ncsserver_1" StagingMode="stage" TwoPhase="true">
<WebAppComponent Name="ncsecsite" Targets="ncscluster" URI="ncsecsite.war"/>
</Application>
--------------------------------------------------------------------------------

web.xml
--------------------------------------------------------------------------------
<resource-ref>
<res-ref-name>jdbc/bbshop</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
--------------------------------------------------------------------------------

weblogic.xml
--------------------------------------------------------------------------------
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/bbshop</res-ref-name>
<jndi-name>OracleSource</jndi-name>
</resource-description>
</reference-descriptor>
--------------------------------------------------------------------------------

Javaプログラムから内部参照呼出し。
簡単なサンプルで試しています。
dataSource.jsp
--------------------------------------------------------------------------------
<%@ page contentType="text/html; charset=EUC-JP" pageEncoding="EUC-JP" %>
<%@ page import="java.sql.*,javax.naming.InitialContext,javax.sql.DataSource" %>
<%
Connection con = null;
try {
// 初期コンテキストを取得
InitialContext ic = new InitialContext();
// ルックアップしてデータソースを取得
DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/bbshop");
con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from book");
while(rs.next()){
String name = rs.getString("nam");
%>
<%=name %><br/>
<%
}
} catch (Exception e) {
e.printStackTrace();
%>
<%= e %>
<%
}
%>
--------------------------------------------------------------------------------


■上記の設定後、管理対象サーバを起動すると次のメッセージが出ます。

***************************************************
* To start WebLogic Server, use a username and *
* password assigned to an admin-level user. For *
* server administration, use the WebLogic Server *
* console at http://<hostname>:<port>/console *
***************************************************
<2005/11/29 10時25分56秒 JST> <Info> <WebLogicServer> <BEA-000377> <WebLogic Server を BEA Systems, Inc. から BEA WebLogic JR
ockit(TM) 1.4.2_05 JVM R24.4.0-1 バージョン ari-38120-20041118-1131-linux-ia32 で起動しています。>
<2005/11/29 10時25分57秒 JST> <Info> <Management> <BEA-141140> <管理対象サーバは、この URL に実行中の管理サーバがあるかどうか
をチェックするために http://172.16.2.43:7001 の管理サーバと交信しようとしています。>
<2005/11/29 10時25分57秒 JST> <Info> <Configuration Management> <BEA-150017> <このサーバは従属的な管理対象サーバとして起動さ
れています。>
<2005/11/29 10時25分57秒 JST> <Info> <Management> <BEA-141107> <バージョン: WebLogic Server 8.1 SP4 Mon Nov 29 17:35:43 PST
2004 471647
WebLogic XMLX Module 8.1 SP4 Mon Nov 29 17:35:43 PST 2004 471647 >
<2005/11/29 10時25分58秒 JST> <Info> <Configuration Management> <BEA-150015> <初期コンフィグレーションを取得するために管理サ
ーバ http://172.16.2.43:7001 に接続しています。>
<2005/11/29 10時26分00秒 JST> <Notice> <Log Management> <BEA-170019> <サーバ ログ ファイル /var/opt/bea/project/ncs/ncsserver
_1/ncsserver_1.log を開きました。すべてのサーバサイド ログ イベントはこのファイルに書き込まれます。>
<2005/11/29 10時26分06秒 JST> <Notice> <Security> <BEA-090082> <セキュリティはセキュリティ レルム myrealm を使用して初期化し
ています。>
<2005/11/29 10時26分06秒 JST> <Notice> <WebLogicServer> <BEA-000328> <ドメイン "ncs" で WebLogic 管理対象サーバ "ncsserver_1"
を起動しています。>
<2005/11/29 10時26分12秒 JST> <Notice> <Cluster> <BEA-000138> <237.0.0.1:7777 上でクラスタ ncscluster からの通知をリスンして
います。>
<2005/11/29 10時26分12秒 JST> <Notice> <Cluster> <BEA-000133> <実行中の ncscluster の他のメンバーに同期するために待機していま
す。>
<2005/11/29 10時26分44秒 JST> <Warning> <JDBC> <BEA-001129> <プール "ncsecsite Connection Pool" の接続の作成中に例外を受け取
りました。: I/O例外です。: SO Exception was generated>
<2005/11/29 10時26分45秒 JST> <Error> <JDBC> <BEA-001150> <接続プール "ncsecsite Connection Pool" のデプロイメントは次のエラ
ーにより失敗しました。: 0:Could not create pool connection. The DBMS driver exception was: I/O例外です。: SO Exception was ge
nerated>
<2005/11/29 10時26分45秒 JST> <Error> <JDBC> <BEA-001151> <データ ソース "ncsecsite Data Source" のデプロイメントは次のエラー
により失敗しました。: DataSource(OracleSource) can't be created with non-existent Pool (connection or multi) (ncsecsite Conne
ction Pool)>
<2005/11/29 10時26分46秒 JST> <Notice> <WebLogicServer> <BEA-000355> <スレッド "ListenThread.Default" は IP アドレス *.* のポ
ート 7070 をリスンしています。>
<2005/11/29 10時26分46秒 JST> <Notice> <Cluster> <BEA-000102> <237.0.0.1:7777 上でクラスタ ncscluster を結合します。>
<2005/11/29 10時26分46秒 JST> <Notice> <WebLogicServer> <BEA-000332> <ドメイン "ncs" で WebLogic 管理対象サーバ "ncsserver_1"
を開発モードで起動しました。>
<2005/11/29 10時26分46秒 JST> <Notice> <WebLogicServer> <BEA-000360> <サーバが RUNNING モードで起動しました。>


■またサンプルで作成したdataSource.jspにアクセスすると次のエラーが出ます。(当たり前ですが・・・)
javax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'OracleSource' Resolved ; remaining name 'OracleSource']; Link Remaining Name: 'OracleSource'



※管理対象サーバ起動時に以下が出ています。
<2005/11/29 10時26分44秒 JST> <Warning> <JDBC> <BEA-001129> <プール "ncsecsite Connection Pool" の接続の作成中に例外を受け取
りました。: I/O例外です。: SO Exception was generated>
<2005/11/29 10時26分45秒 JST> <Error> <JDBC> <BEA-001150> <接続プール "ncsecsite Connection Pool" のデプロイメントは次のエラ
ーにより失敗しました。: 0:Could not create pool connection. The DBMS driver exception was: I/O例外です。: SO Exception was ge
nerated>

なぜI/O例外になって、コネクションプールが見つからないのかが、どうしてもわかりません。
申し訳ありませんが、もし心当たりがある方がいらっしゃいましたらご教授をよろしくお願い致します。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-11-29 12:28
一般に、I/O例外が出るということは物理的に接続できない状況だということです。
そもそもそのLinuxサーバからDBサーバに接続できるのでしょうか。
bk
会議室デビュー日: 2005/11/18
投稿数: 11
投稿日時: 2005-11-29 12:34
ご返答ありがとうございます。

はい、接続できています。
ukさんのコメントがヒントになり、対象サーバを再起動すると
問題なく接続することができました。

お騒がせしましてすみませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)