質問

いwebアプリを必要とする二つの設定:

  • JDBCデータソース
  • 文字列トークン

僕は必死にしていきたいと考えていを展開します。戦争などさまざまな器総合機構のホームページに掲載桟橋、tomcat、gf3最小)を設定し、これらの設定でアプリケーションレベルの容器です。

私のコードは:

InitialContext ctx = new InitialContext();
Context envCtx = (javax.naming.Context) ctx.lookup("java:comp/env");
token = (String)envCtx.lookup("token");
ds = (DataSource)envCtx.lookup("jdbc/datasource")

そのに使用しましたのglassfish管理インタフェースを二つのjdbcリソース:jdbc/試験データソースとjdbc/ライブ-データソースをつなぐための異なるコピーの同じスキーマに、異なるサーバー、異なる資格など。言いたいの展開このglassfishや点でこの試験データソースに、この私sun-web.xml:

...
<resource-ref>
  <res-ref-name>jdbc/datasource</res-ref-name>
  <jndi-name>jdbc/test-datasource</jndi-name>
</resource-ref>
...

  • sun-web.xml う 内部 私の戦争。
  • ろがある必要がありますをすることを通じて管理インタフェース

私もい右側のこんなことをしたのだろう。い器総合機構のホームページに掲載すず容易になるでしょうか?さんに心か桟橋7取り扱うこそ使っても開発を行います。

編集 Tomcatには、合理的に行うこと:

の作成 $TOMCAT_HOME/conf/Catalina/localhost/webapp.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true">
  <!-- String resource -->
  <Environment name="token" value="value of token" type="java.lang.String" override="false" />

  <!-- Linking to a global resource -->
  <ResourceLink name="jdbc/datasource1" global="jdbc/test" type="javax.sql.DataSource" />

  <!-- Derby -->
  <Resource name="jdbc/datasource2"
    type="javax.sql.DataSource"
    auth="Container"
    driverClassName="org.apache.derby.jdbc.EmbeddedDataSource"
    url="jdbc:derby:test;create=true"
    />

  <!-- H2 -->
  <Resource name="jdbc/datasource3"
    type="javax.sql.DataSource"
    auth="Container"
    driverClassName="org.h2.jdbcx.JdbcDataSource"
    url="jdbc:h2:~/test"
    username="sa"
    password=""
    />
</Context>

ご注意 override="false" とは逆行するものとなっている。この設定 できませんオーバーライド による web.xml.

私はこのようなアプローチでは、ファイルの一部である、 コンテナ 設定しない、戦争もない世界の構成;このウエブアプ固有のものです。

思う思いからglassfishであってウェブ管理インターフェイスですが、やらせていただきたいと思いほうのと同等です。

正しい解決策はありません

他のヒント

GF v3のために、あなたはのasadminのdeployサブコマンドの--deploymentplanオプションを活用しようとする場合があります。それはのためにマニュアルページで説明されていますデプロイサブコマンドでます。

またこの問題からの移行作業はもちろんのことTomcatにはGlassfish3.これがその作品。

  • のGlassfish管理コンソール、設定、データソースを(JDBC接続プールの資源DEV/TEST/PRODすることになりました。
  • ド展開時のパラメータの場合にはデータベース接続の詳細情報)propertiesファイルです。例えば:
# Database connection properties
dev=jdbc/dbdev
test=jdbc/dbtest
prod=jdbc/dbprod
  • 各ウェブアプリでの負荷を同じデータベースのプロパティファイルです。
  • ルックアップのJDBC資源としております。

import java.sql.Connection;
import javax.sql.DataSource;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * @param resourceName the resource name of the connection pool (eg jdbc/dbdev)
 * @return Connection a pooled connection from the data source 
 * associated with resourceName
 * @throws NamingException will be thrown if resource name is not found
 */
 public Connection getDatabaseConnection(String resourceName) 
             throws NamingException, SQLException {
    Context initContext = new InitialContext();
    DataSource pooledDataSource = (DataSource) initContext.lookup(resourceName);
    return pooledDataSource.getConnection();
 }

これは、 ない 通常の二段階プロセスを伴うを使用すると、ネーミングコンテキストに"java:comp/env." わからない場合はこの作品用容器以外のGF3がGF3ありません追加する必要があり資源の記述子をweb.xml 利用の場合上記のアプローチ.

んからの質疑問題です。

として 適用部品のプロバイダ, お申告の資源が必要によりお申し込み 標準的な方法 (コンテナagnostic) web.xml.

デプロイ時に、 応用デプロイヤが行および管理者 への指示に従って提供 適用部品のプロバイダ を解決する外部の依存関係(もくようにデータソースでアプリケーションサーバレベルとのマッピングそのJNDI名のリソースの名称の使用によってアプリケーションへの利用申請サーバの特定の配備記述子(例えばの sun-web.xml のためのGlassFish).明らかにし、こ コンテナの特定 ステップは、このようなJava EE仕様となります。

現在、変更したい場合はデータベースのアプリを利用できないのいずれかの

  • 変更のマッピングアプリケーションサーバの配備記述子-または-
  • 設定の変更は、既存のデータソースでポイントを他のデータベースです。

を有する管理インターフェイスになんの変化もなかった。まだったので買ってきたかいお気軽にぜひ意見を聞かせてほしい。中でも見て この前の答え.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top